From 52df4b9a8cb470c3293d93598557467b674731d8 Mon Sep 17 00:00:00 2001 From: "Brian S. O'Neill" Date: Fri, 26 Sep 2008 18:31:47 +0000 Subject: Resync listener is now a trigger in order to capture more information. --- .../carbonado/repo/replicated/TestRepair.java | 117 +++++++++++++++------ 1 file changed, 82 insertions(+), 35 deletions(-) (limited to 'src') diff --git a/src/test/java/com/amazon/carbonado/repo/replicated/TestRepair.java b/src/test/java/com/amazon/carbonado/repo/replicated/TestRepair.java index 6901b64..4f71e76 100644 --- a/src/test/java/com/amazon/carbonado/repo/replicated/TestRepair.java +++ b/src/test/java/com/amazon/carbonado/repo/replicated/TestRepair.java @@ -551,6 +551,88 @@ public class TestRepair extends TestCase { } public void testResyncListener() throws Exception { + prepareOutOfSyncEntries(); + + final List inserted = new ArrayList(); + final List updated = new ArrayList(); + final List deleted = new ArrayList(); + + ResyncCapability.Listener listener = new ResyncCapability.Listener() { + @Override + public void afterInsert(Storable newStorable, Object state) { + inserted.add(newStorable); + } + + @Override + public Object beforeUpdate(Storable oldStorable, Storable newStorable) { + updated.add(new Storable[] {oldStorable, newStorable}); + return null; + } + + @Override + public void afterDelete(Storable oldStorable, Object state) { + deleted.add(oldStorable); + } + }; + + ResyncCapability cap = mReplicated.getCapability(ResyncCapability.class); + cap.resync(StorableTestBasic.class, listener, 1.0, null); + + assertEquals(1, inserted.size()); + assertEquals(1, ((StorableTestBasic) inserted.get(0)).getId()); + assertEquals("hello", ((StorableTestBasic) inserted.get(0)).getStringProp()); + + assertEquals(1, updated.size()); + assertEquals(3, ((StorableTestBasic) (updated.get(0)[0])).getId()); + assertEquals("bar", ((StorableTestBasic) (updated.get(0)[0])).getStringProp()); + assertEquals(3, ((StorableTestBasic) (updated.get(0)[1])).getId()); + assertEquals("foo", ((StorableTestBasic) (updated.get(0)[1])).getStringProp()); + + assertEquals(1, deleted.size()); + assertEquals(2, ((StorableTestBasic) deleted.get(0)).getId()); + assertEquals("world", ((StorableTestBasic) deleted.get(0)).getStringProp()); + } + + public void testResyncListenerUnrepair() throws Exception { + prepareOutOfSyncEntries(); + + ResyncCapability.Listener listener = + new ResyncCapability.Listener() + { + @Override + public Object beforeInsert(StorableTestBasic storable) { + // Force to be partially out of sync. + storable.setDoubleProp(123.456); + return null; + } + + @Override + public Object beforeUpdate(StorableTestBasic storable) { + // Force to be partially out of sync. + storable.setDoubleProp(654.321); + return null; + } + }; + + ResyncCapability cap = mReplicated.getCapability(ResyncCapability.class); + cap.resync(StorableTestBasic.class, listener, 1.0, null); + + boolean insertUnrepair = false; + boolean updateUnrepair = false; + + Storage storage = mReplicated.storageFor(StorableTestBasic.class); + Cursor cursor = storage.query().fetch(); + while (cursor.hasNext()) { + StorableTestBasic storable = cursor.next(); + insertUnrepair |= storable.getDoubleProp() == 123.456; + updateUnrepair |= storable.getDoubleProp() == 654.321; + } + + assertTrue(insertUnrepair); + assertTrue(updateUnrepair); + } + + private void prepareOutOfSyncEntries() throws Exception { // Insert an entry into master. { Storage storage = mMaster.storageFor(StorableTestBasic.class); @@ -618,40 +700,5 @@ public class TestRepair extends TestCase { stb.setDoubleProp(1.0); stb.insert(); } - - final List inserted = new ArrayList(); - final List updated = new ArrayList(); - final List deleted = new ArrayList(); - - ResyncCapability.Listener listener = new ResyncCapability.Listener() { - public void inserted(Storable newStorable) { - inserted.add(newStorable); - } - - public void updated(Storable oldStorable, Storable newStorable) { - updated.add(new Storable[] {oldStorable, newStorable}); - } - - public void deleted(Storable oldStorable) { - deleted.add(oldStorable); - } - }; - - ResyncCapability cap = mReplicated.getCapability(ResyncCapability.class); - cap.resync(StorableTestBasic.class, listener, 1.0, null); - - assertEquals(1, inserted.size()); - assertEquals(1, ((StorableTestBasic) inserted.get(0)).getId()); - assertEquals("hello", ((StorableTestBasic) inserted.get(0)).getStringProp()); - - assertEquals(1, updated.size()); - assertEquals(3, ((StorableTestBasic) (updated.get(0)[0])).getId()); - assertEquals("bar", ((StorableTestBasic) (updated.get(0)[0])).getStringProp()); - assertEquals(3, ((StorableTestBasic) (updated.get(0)[1])).getId()); - assertEquals("foo", ((StorableTestBasic) (updated.get(0)[1])).getStringProp()); - - assertEquals(1, deleted.size()); - assertEquals(2, ((StorableTestBasic) deleted.get(0)).getId()); - assertEquals("world", ((StorableTestBasic) deleted.get(0)).getStringProp()); } } -- cgit v1.2.3