Merge branch 'mdsal-trace' from controller
[mdsal.git] / dom / mdsal-dom-inmemory-datastore / src / test / java / org / opendaylight / mdsal / dom / store / inmemory / InmemoryDOMDataTreeShardWriteTransactionTest.java
index 03a211ec2f29578397bc5045e18753f3f851ad9a..b67f72a8a66da0a1f3800458a2bc3f759cbd783b 100644 (file)
@@ -11,7 +11,7 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
@@ -25,16 +25,20 @@ import com.google.common.collect.ImmutableMap;
 import com.google.common.util.concurrent.MoreExecutors;
 import java.lang.reflect.Field;
 import java.util.Map;
+import java.util.concurrent.Executors;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteCursor;
+import org.opendaylight.mdsal.dom.spi.shard.ChildShardContext;
+import org.opendaylight.mdsal.dom.spi.shard.ForeignShardModificationContext;
+import org.opendaylight.mdsal.dom.spi.shard.ReadableWriteableDOMDataTreeShard;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-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.DataTreeCandidateTip;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModificationCursor;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType;
@@ -46,7 +50,7 @@ public class InmemoryDOMDataTreeShardWriteTransactionTest {
     private static final ShardRootModificationContext SHARD_ROOT_MODIFICATION_CONTEXT =
             mock(ShardRootModificationContext.class);
     private static final YangInstanceIdentifier YANG_INSTANCE_IDENTIFIER =
-            YangInstanceIdentifier.of(QName.create("test"));
+            YangInstanceIdentifier.of(QName.create("", "test"));
     private static final DOMDataTreeIdentifier DOM_DATA_TREE_IDENTIFIER =
             new DOMDataTreeIdentifier(LogicalDatastoreType.OPERATIONAL, YANG_INSTANCE_IDENTIFIER);
     private static final ForeignShardModificationContext FOREIGN_SHARD_MODIFICATION_CONTEXT =
@@ -57,32 +61,39 @@ public class InmemoryDOMDataTreeShardWriteTransactionTest {
             new ChildShardContext(DOM_DATA_TREE_IDENTIFIER, READABLE_WRITEABLE_DOM_DATA_TREE_SHARD);
     private static final Map<DOMDataTreeIdentifier, ChildShardContext> CHILD_SHARDS =
             ImmutableMap.of(DOM_DATA_TREE_IDENTIFIER, CHILD_SHARD_CONTEXT);
+    private InMemoryDOMDataTreeShardProducer mockProducer;
 
     @Before
     public void setUp() throws Exception {
-        DataTreeModification dataTreeModification = mock(DataTreeModification.class);
+        final DataTreeModification dataTreeModification = mock(DataTreeModification.class);
         doReturn("testDataTreeModification").when(dataTreeModification).toString();
         doReturn(dataTreeModification).when(SHARD_ROOT_MODIFICATION_CONTEXT).ready();
         doReturn(DOM_DATA_TREE_IDENTIFIER).when(SHARD_ROOT_MODIFICATION_CONTEXT).getIdentifier();
-        shardDataModification = ShardDataModification.from(SHARD_ROOT_MODIFICATION_CONTEXT,
+        shardDataModification = TestUtils.createModification(SHARD_ROOT_MODIFICATION_CONTEXT,
                 ImmutableMap.of(YANG_INSTANCE_IDENTIFIER, FOREIGN_SHARD_MODIFICATION_CONTEXT));
-        DataTreeModificationCursor dataTreeModificationCursor = mock(DataTreeModificationCursor.class);
-        doReturn(DataTreeModificationCursorAdaptor.of( dataTreeModificationCursor))
+        final DataTreeModificationCursor dataTreeModificationCursor = mock(DataTreeModificationCursor.class);
+        doReturn(DataTreeModificationCursorAdaptor.of(dataTreeModificationCursor))
                 .when(SHARD_ROOT_MODIFICATION_CONTEXT).cursor();
-        DataTreeCandidate dataTreeCandidate = mock(DataTreeCandidate.class);
-        DataTreeCandidateNode dataTreeCandidateNode = mock(DataTreeCandidateNode.class);
+        doNothing().when(SHARD_ROOT_MODIFICATION_CONTEXT).closeCursor();
+        final DataTreeCandidateTip dataTreeCandidate = mock(DataTreeCandidateTip.class);
+        final DataTreeCandidateNode dataTreeCandidateNode = mock(DataTreeCandidateNode.class);
         doReturn(dataTreeCandidateNode).when(dataTreeCandidate).getRootNode();
         doReturn(ModificationType.WRITE).when(dataTreeCandidateNode).getModificationType();
         doReturn(YANG_INSTANCE_IDENTIFIER).when(dataTreeCandidate).getRootPath();
         doReturn("testDataTreeCandidate").when(dataTreeCandidate).toString();
         doReturn(dataTreeCandidate).when(DATA_TREE).prepare(any());
-        InMemoryDOMDataTreeShardChangePublisher inMemoryDOMDataTreeShardChangePublisher =
-                new InMemoryDOMDataTreeShardChangePublisher(MoreExecutors.newDirectExecutorService(), 1, DATA_TREE,
+        final InMemoryDOMDataTreeShardChangePublisher inMemoryDOMDataTreeShardChangePublisher =
+                new InMemoryDOMDataTreeShardChangePublisher(MoreExecutors.directExecutor(), 1, DATA_TREE,
                         YANG_INSTANCE_IDENTIFIER, CHILD_SHARDS);
+        mockProducer = mock(InMemoryDOMDataTreeShardProducer.class);
+        doNothing().when(mockProducer).transactionReady(any(), any());
+        doNothing().when(mockProducer).onTransactionCommited(any());
+        doNothing().when(mockProducer).transactionAborted(any());
 
         inmemoryDOMDataTreeShardWriteTransaction =
-                new InmemoryDOMDataTreeShardWriteTransaction(shardDataModification, DATA_TREE,
-                        inMemoryDOMDataTreeShardChangePublisher);
+                new InmemoryDOMDataTreeShardWriteTransaction(mockProducer, shardDataModification, DATA_TREE,
+                        inMemoryDOMDataTreeShardChangePublisher,
+                        MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor()));
     }
 
     @Test