BUG-865: specify DataTreeType explicitly
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / datastore / DistributedDataStoreRemotingIntegrationTest.java
index c48105e8be1c71f2dc31518e93a6b5f2b0442958..8100bdc6a2ec7331baa31f26a02682674a60e3ad 100644 (file)
@@ -34,6 +34,9 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+import org.opendaylight.controller.cluster.datastore.DatastoreContext.Builder;
 import org.opendaylight.controller.cluster.datastore.exceptions.NoShardLeaderException;
 import org.opendaylight.controller.cluster.datastore.exceptions.ShardLeaderNotRespondingException;
 import org.opendaylight.controller.cluster.datastore.messages.CommitTransactionReply;
@@ -64,6 +67,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.TipProducingDataTree;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
@@ -482,7 +486,7 @@ public class DistributedDataStoreRemotingIntegrationTest {
         // Switch the leader to the follower
 
         followerDatastoreContextBuilder.shardElectionTimeoutFactor(1);
-        followerDistributedDataStore.onDatastoreContextUpdated(followerDatastoreContextBuilder.build());
+        sendDatastoreContextUpdate(followerDistributedDataStore, followerDatastoreContextBuilder);
 
         JavaTestKit.shutdownActorSystem(leaderSystem, null, true);
 
@@ -519,7 +523,7 @@ public class DistributedDataStoreRemotingIntegrationTest {
         Optional<ActorRef> carsFollowerShard = followerDistributedDataStore.getActorContext().findLocalShard("cars");
         assertEquals("Cars follower shard found", true, carsFollowerShard.isPresent());
 
-        TipProducingDataTree dataTree = InMemoryDataTreeFactory.getInstance().create();
+        TipProducingDataTree dataTree = InMemoryDataTreeFactory.getInstance().create(TreeType.OPERATIONAL);
         dataTree.setSchemaContext(SchemaContextHelper.full());
         DataTreeModification modification = dataTree.takeSnapshot().newModification();
 
@@ -580,7 +584,7 @@ public class DistributedDataStoreRemotingIntegrationTest {
         JavaTestKit.shutdownActorSystem(leaderSystem, null, true);
 
         followerDatastoreContextBuilder.operationTimeoutInMillis(50).shardElectionTimeoutFactor(1);
-        followerDistributedDataStore.onDatastoreContextUpdated(followerDatastoreContextBuilder.build());
+        sendDatastoreContextUpdate(followerDistributedDataStore, followerDatastoreContextBuilder);
 
         DOMStoreReadWriteTransaction rwTx = followerDistributedDataStore.newReadWriteTransaction();
 
@@ -612,7 +616,7 @@ public class DistributedDataStoreRemotingIntegrationTest {
         Uninterruptibles.sleepUninterruptibly(100, TimeUnit.MILLISECONDS);
 
         followerDatastoreContextBuilder.operationTimeoutInMillis(10).shardElectionTimeoutFactor(1);
-        followerDistributedDataStore.onDatastoreContextUpdated(followerDatastoreContextBuilder.build());
+        sendDatastoreContextUpdate(followerDistributedDataStore, followerDatastoreContextBuilder);
 
         DOMStoreReadWriteTransaction rwTx = followerDistributedDataStore.newReadWriteTransaction();
 
@@ -646,7 +650,7 @@ public class DistributedDataStoreRemotingIntegrationTest {
         JavaTestKit.shutdownActorSystem(leaderSystem, null, true);
 
         followerDatastoreContextBuilder.operationTimeoutInMillis(500);
-        followerDistributedDataStore.onDatastoreContextUpdated(followerDatastoreContextBuilder.build());
+        sendDatastoreContextUpdate(followerDistributedDataStore, followerDatastoreContextBuilder);
 
         DOMStoreReadWriteTransaction rwTx = followerDistributedDataStore.newReadWriteTransaction();
 
@@ -654,4 +658,17 @@ public class DistributedDataStoreRemotingIntegrationTest {
 
         followerTestKit.doCommit(rwTx.ready());
     }
+
+    private static void sendDatastoreContextUpdate(DistributedDataStore dataStore, final Builder builder) {
+        DatastoreContextFactory mockContextFactory = Mockito.mock(DatastoreContextFactory.class);
+        Answer<DatastoreContext> answer = new Answer<DatastoreContext>() {
+            @Override
+            public DatastoreContext answer(InvocationOnMock invocation) {
+                return builder.build();
+            }
+        };
+        Mockito.doAnswer(answer).when(mockContextFactory).getBaseDatastoreContext();
+        Mockito.doAnswer(answer).when(mockContextFactory).getShardDatastoreContext(Mockito.anyString());
+        dataStore.onDatastoreContextUpdated(mockContextFactory);
+    }
 }