X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=dom%2Fmdsal-dom-inmemory-datastore%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fdom%2Fstore%2Finmemory%2FAbstractDOMShardTreeChangePublisherTest.java;h=e1635dc7876fb1d7f74fabdde3ed2a8fc7df9a11;hb=28e0ef3b11e12112c0acc89ba07f59cc742f7417;hp=5f26ee11d9b24483d4391e0b6a1b1ee8c4a778b0;hpb=2f71bca95e4b26d0f612b283aab4ab3896cb2c96;p=mdsal.git diff --git a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/AbstractDOMShardTreeChangePublisherTest.java b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/AbstractDOMShardTreeChangePublisherTest.java index 5f26ee11d9..e1635dc787 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/AbstractDOMShardTreeChangePublisherTest.java +++ b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/AbstractDOMShardTreeChangePublisherTest.java @@ -7,20 +7,29 @@ */ package org.opendaylight.mdsal.dom.store.inmemory; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.opendaylight.mdsal.dom.store.inmemory.TestUtils.DATA_TREE; import static org.opendaylight.mdsal.dom.store.inmemory.TestUtils.resetMocks; +import com.google.common.base.Optional; import com.google.common.collect.ImmutableMap; import java.util.Collection; import java.util.Map; import javax.annotation.Nonnull; import org.junit.After; +import org.junit.Before; import org.junit.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.MockitoAnnotations; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener; import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; @@ -28,7 +37,10 @@ import org.opendaylight.mdsal.dom.spi.AbstractDOMDataTreeChangeListenerRegistrat import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; +import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode; +import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot; public class AbstractDOMShardTreeChangePublisherTest extends AbstractDOMShardTreeChangePublisher { @@ -47,15 +59,40 @@ public class AbstractDOMShardTreeChangePublisherTest extends AbstractDOMShardTre private static final Map CHILD_SHARDS = ImmutableMap.of(DOM_DATA_TREE_IDENTIFIER, CHILD_SHARD_CONTEXT); + @Captor + private ArgumentCaptor> captorForChanges; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + } + @Test public void registerTreeChangeListenerTest() throws Exception { final DOMDataTreeChangeListener domDataTreeChangeListener = mock(DOMDataTreeChangeListener.class); final ListenerRegistration listenerRegistration = mock(ListenerRegistration.class); + final DataTreeSnapshot initialSnapshot = mock(DataTreeSnapshot.class); + final NormalizedNode initialData = mock(NormalizedNode.class); + doReturn(initialSnapshot).when(DATA_TREE).takeSnapshot(); + doReturn(Optional.of(initialData)).when(initialSnapshot).readNode(any()); + doNothing().when(domDataTreeChangeListener).onDataTreeChanged(any()); + doReturn(listenerRegistration) .when(READABLE_WRITEABLE_DOM_DATA_TREE_SHARD).registerTreeChangeListener(any(), any()); assertNotNull(this.registerTreeChangeListener(YANG_INSTANCE_IDENTIFIER, domDataTreeChangeListener)); verify(READABLE_WRITEABLE_DOM_DATA_TREE_SHARD).registerTreeChangeListener(any(), any()); + + verify(domDataTreeChangeListener) + .onDataTreeChanged(captorForChanges.capture()); + + final Collection initialChange = captorForChanges.getValue(); + + assertTrue(initialChange.size() == 1); + initialChange.forEach(dataTreeCandidate -> + assertEquals(dataTreeCandidate.getRootPath(), YANG_INSTANCE_IDENTIFIER)); + initialChange.forEach(dataTreeCandidate -> + assertSame(dataTreeCandidate.getRootNode().getDataAfter().get(), initialData)); } @Test(expected = UnsupportedOperationException.class) @@ -71,7 +108,7 @@ public class AbstractDOMShardTreeChangePublisherTest extends AbstractDOMShardTre final Map childShardContextMap = ImmutableMap.of(domDataTreeIdentifier, childShardContext); - AbstractDOMShardTreeChangePublisherTest abstractDOMShardTreeChangePublisherTest = + final AbstractDOMShardTreeChangePublisherTest abstractDOMShardTreeChangePublisherTest = new AbstractDOMShardTreeChangePublisherTest(childShardContextMap); abstractDOMShardTreeChangePublisherTest .registerTreeChangeListener(YANG_INSTANCE_IDENTIFIER, domDataTreeChangeListener); @@ -81,23 +118,23 @@ public class AbstractDOMShardTreeChangePublisherTest extends AbstractDOMShardTre super(DATA_TREE, YANG_INSTANCE_IDENTIFIER, CHILD_SHARDS); } - private AbstractDOMShardTreeChangePublisherTest(Map childShardContextMap) { + private AbstractDOMShardTreeChangePublisherTest(final Map childShardContextMap) { super(DATA_TREE, YANG_INSTANCE_IDENTIFIER, childShardContextMap); } @Override - protected void notifyListeners(@Nonnull Collection> registrations, - @Nonnull YangInstanceIdentifier path, @Nonnull DataTreeCandidateNode node) { + protected void notifyListeners(@Nonnull final Collection> registrations, + @Nonnull final YangInstanceIdentifier path, @Nonnull final DataTreeCandidateNode node) { // NOOP } @Override - protected void registrationRemoved(@Nonnull AbstractDOMDataTreeChangeListenerRegistration registration) { + protected void registrationRemoved(@Nonnull final AbstractDOMDataTreeChangeListenerRegistration registration) { // NOOP } @After - public void reset(){ + public void reset() { resetMocks(); } } \ No newline at end of file