X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fsharding%2FDistributedShardedDOMDataTreeRemotingTest.java;h=b2ef45a3dd357234fe2a7348e121a528e356d8c4;hp=df870f584cedc8f5f9bbf4382de4aaf6fef1b279;hb=009cb4dd8cd415e963b321d5d59d55146903b462;hpb=149feb98f151186975fe42bab5853e05aafd4b51 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/sharding/DistributedShardedDOMDataTreeRemotingTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/sharding/DistributedShardedDOMDataTreeRemotingTest.java index df870f584c..b2ef45a3dd 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/sharding/DistributedShardedDOMDataTreeRemotingTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/sharding/DistributedShardedDOMDataTreeRemotingTest.java @@ -8,6 +8,7 @@ package org.opendaylight.controller.cluster.sharding; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -24,6 +25,8 @@ import akka.testkit.JavaTestKit; import com.google.common.collect.Lists; import com.typesafe.config.ConfigFactory; import java.util.Collections; +import java.util.HashSet; +import java.util.Set; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -63,21 +66,17 @@ public class DistributedShardedDOMDataTreeRemotingTest extends AbstractTest { private static final DOMDataTreeIdentifier TEST_ID = new DOMDataTreeIdentifier(LogicalDatastoreType.CONFIGURATION, TestModel.TEST_PATH); - private static final String MODULE_SHARDS_CONFIG = "module-shards-cars-member-1-and-2.conf"; + private static final String MODULE_SHARDS_CONFIG = "module-shards-default.conf"; private ActorSystem leaderSystem; private ActorSystem followerSystem; private final Builder leaderDatastoreContextBuilder = - DatastoreContext.newBuilder().shardHeartbeatIntervalInMillis(100).shardElectionTimeoutFactor(5) - .logicalStoreType( - org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.CONFIGURATION); + DatastoreContext.newBuilder().shardHeartbeatIntervalInMillis(100).shardElectionTimeoutFactor(5); private final DatastoreContext.Builder followerDatastoreContextBuilder = - DatastoreContext.newBuilder().shardHeartbeatIntervalInMillis(100).shardElectionTimeoutFactor(5) - .logicalStoreType( - org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.CONFIGURATION); + DatastoreContext.newBuilder().shardHeartbeatIntervalInMillis(100).shardElectionTimeoutFactor(5); private DistributedDataStore leaderConfigDatastore; private DistributedDataStore leaderOperDatastore; @@ -129,20 +128,20 @@ public class DistributedShardedDOMDataTreeRemotingTest extends AbstractTest { followerOperDatastore.close(); } - JavaTestKit.shutdownActorSystem(leaderSystem); - JavaTestKit.shutdownActorSystem(followerSystem); + JavaTestKit.shutdownActorSystem(leaderSystem, null, Boolean.TRUE); + JavaTestKit.shutdownActorSystem(followerSystem, null, Boolean.TRUE); InMemoryJournal.clear(); InMemorySnapshotStore.clear(); } - private void initEmptyDatastores() { + private void initEmptyDatastores() throws Exception { leaderTestKit = new IntegrationTestKit(leaderSystem, leaderDatastoreContextBuilder); - leaderConfigDatastore = (DistributedDataStore) leaderTestKit.setupDistributedDataStore( + leaderConfigDatastore = leaderTestKit.setupDistributedDataStore( "config", MODULE_SHARDS_CONFIG, true, SchemaContextHelper.distributedShardedDOMDataTreeSchemaContext()); - leaderOperDatastore = (DistributedDataStore) leaderTestKit.setupDistributedDataStore( + leaderOperDatastore = leaderTestKit.setupDistributedDataStore( "operational", MODULE_SHARDS_CONFIG, true, SchemaContextHelper.distributedShardedDOMDataTreeSchemaContext()); @@ -152,9 +151,9 @@ public class DistributedShardedDOMDataTreeRemotingTest extends AbstractTest { followerTestKit = new IntegrationTestKit(followerSystem, followerDatastoreContextBuilder); - followerConfigDatastore = (DistributedDataStore) followerTestKit.setupDistributedDataStore( + followerConfigDatastore = followerTestKit.setupDistributedDataStore( "config", MODULE_SHARDS_CONFIG, true, SchemaContextHelper.distributedShardedDOMDataTreeSchemaContext()); - followerOperDatastore = (DistributedDataStore) followerTestKit.setupDistributedDataStore( + followerOperDatastore = followerTestKit.setupDistributedDataStore( "operational", MODULE_SHARDS_CONFIG, true, SchemaContextHelper.distributedShardedDOMDataTreeSchemaContext()); @@ -162,6 +161,8 @@ public class DistributedShardedDOMDataTreeRemotingTest extends AbstractTest { followerOperDatastore, followerConfigDatastore); + followerTestKit.waitForMembersUp("member-1"); + leaderShardFactory.init(); followerShardFactory.init(); @@ -170,15 +171,16 @@ public class DistributedShardedDOMDataTreeRemotingTest extends AbstractTest { leaderTestKit.waitUntilLeader(leaderOperDatastore.getActorContext(), ClusterUtils.getCleanShardName(YangInstanceIdentifier.EMPTY)); - } @Test public void testProducerRegistrations() throws Exception { + LOG.info("testProducerRegistrations starting"); initEmptyDatastores(); leaderTestKit.waitForMembersUp("member-2"); + // TODO refactor shard creation and verification to own method final DistributedShardRegistration shardRegistration = waitOnAsyncTask(leaderShardFactory.createDistributedShard( TEST_ID, Lists.newArrayList(AbstractTest.MEMBER_NAME, AbstractTest.MEMBER_2_NAME)), @@ -195,6 +197,12 @@ public class DistributedShardedDOMDataTreeRemotingTest extends AbstractTest { assertNotNull(findLocalShard(followerConfigDatastore.getActorContext(), ClusterUtils.getCleanShardName(TEST_ID.getRootIdentifier()))); + final Set peers = new HashSet<>(); + IntegrationTestKit.verifyShardState(leaderConfigDatastore, + ClusterUtils.getCleanShardName(TEST_ID.getRootIdentifier()), onDemandShardState -> + peers.addAll(onDemandShardState.getPeerAddresses().values())); + assertEquals(peers.size(), 1); + final DOMDataTreeProducer producer = leaderShardFactory.createProducer(Collections.singleton(TEST_ID)); try { followerShardFactory.createProducer(Collections.singleton(TEST_ID)); @@ -226,10 +234,13 @@ public class DistributedShardedDOMDataTreeRemotingTest extends AbstractTest { } shardRegistration.close().toCompletableFuture().get(); + + LOG.info("testProducerRegistrations ending"); } @Test public void testWriteIntoMultipleShards() throws Exception { + LOG.info("testWriteIntoMultipleShards starting"); initEmptyDatastores(); leaderTestKit.waitForMembersUp("member-2"); @@ -246,6 +257,12 @@ public class DistributedShardedDOMDataTreeRemotingTest extends AbstractTest { findLocalShard(followerConfigDatastore.getActorContext(), ClusterUtils.getCleanShardName(TEST_ID.getRootIdentifier())); + final Set peers = new HashSet<>(); + IntegrationTestKit.verifyShardState(leaderConfigDatastore, + ClusterUtils.getCleanShardName(TEST_ID.getRootIdentifier()), onDemandShardState -> + peers.addAll(onDemandShardState.getPeerAddresses().values())); + assertEquals(peers.size(), 1); + LOG.debug("Got after waiting for nonleader"); final DOMDataTreeProducer producer = leaderShardFactory.createProducer(Collections.singleton(TEST_ID)); @@ -264,10 +281,13 @@ public class DistributedShardedDOMDataTreeRemotingTest extends AbstractTest { tx.submit().checkedGet(); shardRegistration.close().toCompletableFuture().get(); + + LOG.info("testWriteIntoMultipleShards ending"); } @Test public void testMultipleShardRegistrations() throws Exception { + LOG.info("testMultipleShardRegistrations starting"); initEmptyDatastores(); final DistributedShardRegistration reg1 = waitOnAsyncTask(leaderShardFactory.createDistributedShard( @@ -324,7 +344,6 @@ public class DistributedShardedDOMDataTreeRemotingTest extends AbstractTest { assertNotNull(findLocalShard(followerConfigDatastore.getActorContext(), ClusterUtils.getCleanShardName(TestModel.JUNK_PATH))); - LOG.debug("Closing registrations"); reg1.close().toCompletableFuture().get(); @@ -359,10 +378,12 @@ public class DistributedShardedDOMDataTreeRemotingTest extends AbstractTest { ClusterUtils.getCleanShardName(TestModel.JUNK_PATH)); LOG.debug("All follower shards gone"); + LOG.info("testMultipleShardRegistrations ending"); } @Test public void testMultipleRegistrationsAtOnePrefix() throws Exception { + LOG.info("testMultipleRegistrationsAtOnePrefix starting"); initEmptyDatastores(); for (int i = 0; i < 10; i++) { @@ -380,6 +401,13 @@ public class DistributedShardedDOMDataTreeRemotingTest extends AbstractTest { assertNotNull(findLocalShard(followerConfigDatastore.getActorContext(), ClusterUtils.getCleanShardName(TestModel.TEST_PATH))); + + final Set peers = new HashSet<>(); + IntegrationTestKit.verifyShardState(leaderConfigDatastore, + ClusterUtils.getCleanShardName(TEST_ID.getRootIdentifier()), onDemandShardState -> + peers.addAll(onDemandShardState.getPeerAddresses().values())); + assertEquals(peers.size(), 1); + waitOnAsyncTask(reg1.close(), DistributedShardedDOMDataTree.SHARD_FUTURE_TIMEOUT_DURATION); waitUntilShardIsDown(leaderConfigDatastore.getActorContext(), @@ -389,5 +417,6 @@ public class DistributedShardedDOMDataTreeRemotingTest extends AbstractTest { ClusterUtils.getCleanShardName(TestModel.TEST_PATH)); } + LOG.info("testMultipleRegistrationsAtOnePrefix ending"); } }