Madan Jampani

Fix AtomixDocumentTree event notifications

Change-Id: Id79ba675dfc83fbe6c04a7789842a4e65050c046
...@@ -108,6 +108,8 @@ public final class CatalystSerializers { ...@@ -108,6 +108,8 @@ public final class CatalystSerializers {
108 serializer.register(DocumentTreeEvent.class, factory); 108 serializer.register(DocumentTreeEvent.class, factory);
109 serializer.register(Maps.immutableEntry("a", "b").getClass(), factory); 109 serializer.register(Maps.immutableEntry("a", "b").getClass(), factory);
110 serializer.register(ImmutableList.of().getClass(), factory); 110 serializer.register(ImmutableList.of().getClass(), factory);
111 + serializer.register(ImmutableList.of("a").getClass(), factory);
112 + serializer.register(Arrays.asList().getClass(), factory);
111 113
112 serializer.resolve(new LongCommands.TypeResolver()); 114 serializer.resolve(new LongCommands.TypeResolver());
113 serializer.resolve(new AtomixConsistentMapCommands.TypeResolver()); 115 serializer.resolve(new AtomixConsistentMapCommands.TypeResolver());
......
...@@ -19,7 +19,6 @@ package org.onosproject.store.primitives.resources.impl; ...@@ -19,7 +19,6 @@ package org.onosproject.store.primitives.resources.impl;
19 import static org.junit.Assert.assertArrayEquals; 19 import static org.junit.Assert.assertArrayEquals;
20 import static org.junit.Assert.assertEquals; 20 import static org.junit.Assert.assertEquals;
21 import static org.junit.Assert.assertFalse; 21 import static org.junit.Assert.assertFalse;
22 -import static org.junit.Assert.assertNotNull;
23 import static org.junit.Assert.assertNull; 22 import static org.junit.Assert.assertNull;
24 import static org.junit.Assert.assertTrue; 23 import static org.junit.Assert.assertTrue;
25 import static org.junit.Assert.fail; 24 import static org.junit.Assert.fail;
...@@ -32,7 +31,6 @@ import java.util.concurrent.BlockingQueue; ...@@ -32,7 +31,6 @@ import java.util.concurrent.BlockingQueue;
32 31
33 import org.junit.AfterClass; 32 import org.junit.AfterClass;
34 import org.junit.BeforeClass; 33 import org.junit.BeforeClass;
35 -import org.junit.Ignore;
36 import org.junit.Test; 34 import org.junit.Test;
37 import org.onosproject.store.service.DocumentPath; 35 import org.onosproject.store.service.DocumentPath;
38 import org.onosproject.store.service.DocumentTreeEvent; 36 import org.onosproject.store.service.DocumentTreeEvent;
...@@ -311,7 +309,6 @@ public class AtomixDocumentTreeTest extends AtomixTestBase { ...@@ -311,7 +309,6 @@ public class AtomixDocumentTreeTest extends AtomixTestBase {
311 * Tests listeners. 309 * Tests listeners.
312 */ 310 */
313 @Test 311 @Test
314 - @Ignore
315 public void testNotifications() throws Exception { 312 public void testNotifications() throws Exception {
316 AtomixDocumentTree tree = createAtomixClient().getResource(UUID.randomUUID().toString(), 313 AtomixDocumentTree tree = createAtomixClient().getResource(UUID.randomUUID().toString(),
317 AtomixDocumentTree.class).join(); 314 AtomixDocumentTree.class).join();
...@@ -320,9 +317,30 @@ public class AtomixDocumentTreeTest extends AtomixTestBase { ...@@ -320,9 +317,30 @@ public class AtomixDocumentTreeTest extends AtomixTestBase {
320 // add listener; create a node in the tree and verify an CREATED event is received. 317 // add listener; create a node in the tree and verify an CREATED event is received.
321 tree.addListener(listener).thenCompose(v -> tree.set(DocumentPath.from("root.a"), "a".getBytes())).join(); 318 tree.addListener(listener).thenCompose(v -> tree.set(DocumentPath.from("root.a"), "a".getBytes())).join();
322 DocumentTreeEvent<byte[]> event = listener.event(); 319 DocumentTreeEvent<byte[]> event = listener.event();
323 - assertNotNull(event);
324 assertEquals(DocumentTreeEvent.Type.CREATED, event.type()); 320 assertEquals(DocumentTreeEvent.Type.CREATED, event.type());
321 + assertFalse(event.oldValue().isPresent());
325 assertArrayEquals("a".getBytes(), event.newValue().get().value()); 322 assertArrayEquals("a".getBytes(), event.newValue().get().value());
323 + // update a node in the tree and verify an UPDATED event is received.
324 + tree.set(DocumentPath.from("root.a"), "newA".getBytes()).join();
325 + event = listener.event();
326 + assertEquals(DocumentTreeEvent.Type.UPDATED, event.type());
327 + assertArrayEquals("newA".getBytes(), event.newValue().get().value());
328 + assertArrayEquals("a".getBytes(), event.oldValue().get().value());
329 + // remove a node in the tree and verify an REMOVED event is received.
330 + tree.removeNode(DocumentPath.from("root.a")).join();
331 + event = listener.event();
332 + assertEquals(DocumentTreeEvent.Type.DELETED, event.type());
333 + assertFalse(event.newValue().isPresent());
334 + assertArrayEquals("newA".getBytes(), event.oldValue().get().value());
335 + // recursively create a node and verify CREATED events for all intermediate nodes.
336 + tree.createRecursive(DocumentPath.from("root.x.y"), "xy".getBytes()).join();
337 + event = listener.event();
338 + assertEquals(DocumentTreeEvent.Type.CREATED, event.type());
339 + assertEquals(DocumentPath.from("root.x"), event.path());
340 + event = listener.event();
341 + assertEquals(DocumentTreeEvent.Type.CREATED, event.type());
342 + assertEquals(DocumentPath.from("root.x.y"), event.path());
343 + assertArrayEquals("xy".getBytes(), event.newValue().get().value());
326 } 344 }
327 345
328 private static class TestEventListener implements DocumentTreeListener<byte[]> { 346 private static class TestEventListener implements DocumentTreeListener<byte[]> {
......