X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FShardTransactionTest.java;h=9116f24c92971b3f0491b6de52d07eff01d84645;hb=81aa5072801e6453306e296b91dba3dbeeaf046d;hp=36633c55d590c023651a39e82feef8ba48d780d5;hpb=f0f2ca29ae8b5caa769a77854fc5ac883b0a2264;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java index 36633c55d5..9116f24c92 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java @@ -18,12 +18,18 @@ import org.opendaylight.controller.cluster.datastore.messages.ReadyTransaction; import org.opendaylight.controller.cluster.datastore.messages.ReadyTransactionReply; import org.opendaylight.controller.cluster.datastore.messages.WriteData; import org.opendaylight.controller.cluster.datastore.messages.WriteDataReply; +import org.opendaylight.controller.cluster.datastore.modification.CompositeModification; +import org.opendaylight.controller.cluster.datastore.modification.DeleteModification; +import org.opendaylight.controller.cluster.datastore.modification.MergeModification; +import org.opendaylight.controller.cluster.datastore.modification.Modification; +import org.opendaylight.controller.cluster.datastore.modification.WriteModification; import org.opendaylight.controller.md.cluster.datastore.model.TestModel; import org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStore; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; public class ShardTransactionTest extends AbstractActorTest { private static ListeningExecutorService storeExecutor = MoreExecutors.listeningDecorator(MoreExecutors.sameThreadExecutor()); @@ -37,7 +43,8 @@ public class ShardTransactionTest extends AbstractActorTest { @Test public void testOnReceiveReadData() throws Exception { new JavaTestKit(getSystem()) {{ - final Props props = ShardTransaction.props(store.newReadWriteTransaction()); + final ActorRef shard = getSystem().actorOf(Shard.props("config")); + final Props props = ShardTransaction.props(store.newReadWriteTransaction(), shard); final ActorRef subject = getSystem().actorOf(props, "testReadData"); new Within(duration("1 seconds")) { @@ -69,10 +76,36 @@ public class ShardTransactionTest extends AbstractActorTest { }}; } + private void assertModification(final ActorRef subject, final Class modificationType){ + new JavaTestKit(getSystem()) {{ + new Within(duration("1 seconds")) { + protected void run() { + subject.tell(new ShardTransaction.GetCompositedModification(), getRef()); + + final CompositeModification compositeModification = new ExpectMsg("match hint") { + // do not put code outside this method, will run afterwards + protected CompositeModification match(Object in) { + if (in instanceof ShardTransaction.GetCompositeModificationReply) { + return ((ShardTransaction.GetCompositeModificationReply) in).getModification(); + } else { + throw noMatch(); + } + } + }.get(); // this extracts the received message + + assertTrue(compositeModification.getModifications().size() == 1); + assertEquals(modificationType, compositeModification.getModifications().get(0).getClass()); + + } + }; + }}; + } + @Test public void testOnReceiveWriteData() throws Exception { new JavaTestKit(getSystem()) {{ - final Props props = ShardTransaction.props(store.newReadWriteTransaction()); + final ActorRef shard = getSystem().actorOf(Shard.props("config")); + final Props props = ShardTransaction.props(store.newReadWriteTransaction(), shard); final ActorRef subject = getSystem().actorOf(props, "testWriteData"); new Within(duration("1 seconds")) { @@ -93,6 +126,7 @@ public class ShardTransactionTest extends AbstractActorTest { assertEquals("match", out); + assertModification(subject, WriteModification.class); expectNoMsg(); } @@ -104,7 +138,8 @@ public class ShardTransactionTest extends AbstractActorTest { @Test public void testOnReceiveMergeData() throws Exception { new JavaTestKit(getSystem()) {{ - final Props props = ShardTransaction.props(store.newReadWriteTransaction()); + final ActorRef shard = getSystem().actorOf(Shard.props("config")); + final Props props = ShardTransaction.props(store.newReadWriteTransaction(), shard); final ActorRef subject = getSystem().actorOf(props, "testMergeData"); new Within(duration("1 seconds")) { @@ -125,6 +160,8 @@ public class ShardTransactionTest extends AbstractActorTest { assertEquals("match", out); + assertModification(subject, MergeModification.class); + expectNoMsg(); } @@ -136,7 +173,8 @@ public class ShardTransactionTest extends AbstractActorTest { @Test public void testOnReceiveDeleteData() throws Exception { new JavaTestKit(getSystem()) {{ - final Props props = ShardTransaction.props(store.newReadWriteTransaction()); + final ActorRef shard = getSystem().actorOf(Shard.props("config")); + final Props props = ShardTransaction.props(store.newReadWriteTransaction(), shard); final ActorRef subject = getSystem().actorOf(props, "testDeleteData"); new Within(duration("1 seconds")) { @@ -157,6 +195,7 @@ public class ShardTransactionTest extends AbstractActorTest { assertEquals("match", out); + assertModification(subject, DeleteModification.class); expectNoMsg(); } @@ -169,7 +208,8 @@ public class ShardTransactionTest extends AbstractActorTest { @Test public void testOnReceiveReadyTransaction() throws Exception { new JavaTestKit(getSystem()) {{ - final Props props = ShardTransaction.props(store.newReadWriteTransaction()); + final ActorRef shard = getSystem().actorOf(Shard.props("config")); + final Props props = ShardTransaction.props(store.newReadWriteTransaction(), shard); final ActorRef subject = getSystem().actorOf(props, "testReadyTransaction"); new Within(duration("1 seconds")) { @@ -202,7 +242,8 @@ public class ShardTransactionTest extends AbstractActorTest { @Test public void testOnReceiveCloseTransaction() throws Exception { new JavaTestKit(getSystem()) {{ - final Props props = ShardTransaction.props(store.newReadWriteTransaction()); + final ActorRef shard = getSystem().actorOf(Shard.props("config")); + final Props props = ShardTransaction.props(store.newReadWriteTransaction(), shard); final ActorRef subject = getSystem().actorOf(props, "testCloseTransaction"); new Within(duration("1 seconds")) {