Make AbstractDOMShardTreeChangePublisher advertise initial data change
[mdsal.git] / dom / mdsal-dom-inmemory-datastore / src / test / java / org / opendaylight / mdsal / dom / store / inmemory / InMemoryDOMDataTreeShardTest.java
index f70771df86119992d63d42ad861be44aa9a3b63e..aabd3725c8b092929884832e1e22f7aa34b660ca 100644 (file)
@@ -11,8 +11,11 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.atLeastOnce;
+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.controller.md.sal.dom.store.impl.TestModel.createTestContext;
 import static org.opendaylight.mdsal.dom.store.inmemory.TestUtils.DOM_DATA_TREE_IDENTIFIER;
 import static org.opendaylight.mdsal.dom.store.inmemory.TestUtils.DOM_DATA_TREE_SHARD_PRODUCER;
@@ -24,7 +27,9 @@ import java.util.Collection;
 import org.junit.After;
 import org.junit.Test;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
+import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 
@@ -32,16 +37,16 @@ public class InMemoryDOMDataTreeShardTest {
 
     @Test
     public void basicTest() throws Exception {
-        InMemoryDOMDataTreeShard inMemoryDOMDataTreeShard =
+        final InMemoryDOMDataTreeShard inMemoryDOMDataTreeShard =
                 InMemoryDOMDataTreeShard.create(DOM_DATA_TREE_IDENTIFIER,
-                        MoreExecutors.newDirectExecutorService(), 1);
+                        MoreExecutors.newDirectExecutorService(), 1, 1);
 
         final DOMDataTreeIdentifier domDataTreeIdentifier =
                 new DOMDataTreeIdentifier(LogicalDatastoreType.CONFIGURATION,
                         YangInstanceIdentifier.of(QName.create("Test")));
 
-        WriteableDOMDataTreeShard domDataTreeShard = mock(WriteableDOMDataTreeShard.class);
-        doReturn("testTreeShard").when(domDataTreeShard).toString();
+        final ReadableWriteableDOMDataTreeShard domDataTreeShard = mock(ReadableWriteableDOMDataTreeShard.class);
+        doReturn("testReadableWriteableDOMDataTreeShard").when(domDataTreeShard).toString();
         doReturn(DOM_DATA_TREE_SHARD_PRODUCER).when(domDataTreeShard).createProducer(any());
 
         assertFalse(inMemoryDOMDataTreeShard.getChildShards().containsValue(domDataTreeShard));
@@ -49,12 +54,19 @@ public class InMemoryDOMDataTreeShardTest {
         assertTrue(inMemoryDOMDataTreeShard.getChildShards().containsValue(domDataTreeShard));
         inMemoryDOMDataTreeShard.onChildAttached(domDataTreeIdentifier, domDataTreeShard);
 
-        Collection<DOMDataTreeIdentifier> prefixes = ImmutableList.of(DOM_DATA_TREE_IDENTIFIER);
+        final Collection<DOMDataTreeIdentifier> prefixes = ImmutableList.of(DOM_DATA_TREE_IDENTIFIER);
         assertEquals(prefixes.toString(), inMemoryDOMDataTreeShard.createProducer(prefixes).getPrefixes().toString());
 
         inMemoryDOMDataTreeShard.onGlobalContextUpdated(createTestContext());
         inMemoryDOMDataTreeShard.createTransaction(prefixes);
 
+        final DOMDataTreeChangeListener domDataTreeChangeListener = mock(DOMDataTreeChangeListener.class);
+        final ListenerRegistration listenerRegistration = mock(ListenerRegistration.class);
+        doReturn(listenerRegistration).when(domDataTreeShard).registerTreeChangeListener(any(), any());
+        doNothing().when(domDataTreeChangeListener).onDataTreeChanged(any());
+        inMemoryDOMDataTreeShard.registerTreeChangeListener(YangInstanceIdentifier.EMPTY, domDataTreeChangeListener);
+        verify(domDataTreeShard, atLeastOnce()).registerTreeChangeListener(any(), any());
+
         inMemoryDOMDataTreeShard.onChildDetached(DOM_DATA_TREE_IDENTIFIER, domDataTreeShard);
         assertFalse(inMemoryDOMDataTreeShard.getChildShards().containsKey(DOM_DATA_TREE_IDENTIFIER));
     }
@@ -66,7 +78,7 @@ public class InMemoryDOMDataTreeShardTest {
 
         final InMemoryDOMDataTreeShard inMemoryDOMDataTreeShard =
                 InMemoryDOMDataTreeShard.create(domDataTreeIdentifier,
-                        MoreExecutors.newDirectExecutorService(), 1);
+                        MoreExecutors.newDirectExecutorService(), 1 ,1);
 
         final InmemoryDOMDataTreeShardWriteTransaction inmemoryDOMDataTreeShardWriteTransaction =
                 mock(InmemoryDOMDataTreeShardWriteTransaction.class);