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%2FMemberNode.java;h=4466493857fa9d1e85f5470b45f56260fe756270;hb=HEAD;hp=fbfa91133f34f8a0bed1f2791d144c389fdd836a;hpb=1a6462c3cdb2cd310ab9503beb18da70f6e3779d;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/MemberNode.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/MemberNode.java index fbfa91133f..4466493857 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/MemberNode.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/MemberNode.java @@ -7,6 +7,7 @@ */ package org.opendaylight.controller.cluster.datastore; +import static java.util.Objects.requireNonNull; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; @@ -17,27 +18,27 @@ import akka.cluster.Cluster; import akka.cluster.ClusterEvent.CurrentClusterState; import akka.cluster.Member; import akka.cluster.MemberStatus; -import com.google.common.base.Optional; -import com.google.common.base.Preconditions; import com.google.common.base.Stopwatch; -import com.google.common.collect.Sets; import com.google.common.util.concurrent.Uninterruptibles; import com.typesafe.config.Config; import com.typesafe.config.ConfigFactory; +import java.util.HashSet; import java.util.List; +import java.util.Optional; import java.util.Set; import java.util.concurrent.TimeUnit; import org.opendaylight.controller.cluster.access.concepts.MemberName; +import org.opendaylight.controller.cluster.databroker.ClientBackedDataStore; import org.opendaylight.controller.cluster.datastore.identifiers.ShardIdentifier; -import org.opendaylight.controller.cluster.datastore.utils.ActorContext; +import org.opendaylight.controller.cluster.datastore.utils.ActorUtils; import org.opendaylight.controller.cluster.raft.client.messages.GetOnDemandRaftState; import org.opendaylight.controller.cluster.raft.client.messages.OnDemandRaftState; import org.opendaylight.controller.md.cluster.datastore.model.SchemaContextHelper; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.slf4j.LoggerFactory; import scala.concurrent.Await; import scala.concurrent.Future; -import scala.concurrent.duration.Duration; +import scala.concurrent.duration.FiniteDuration; /** * Class that represents a cluster member node for unit tests. It encapsulates an actor system with @@ -51,8 +52,8 @@ public class MemberNode { private static final String MEMBER_1_ADDRESS = "akka://cluster-test@127.0.0.1:2558"; private IntegrationTestKit kit; - private AbstractDataStore configDataStore; - private AbstractDataStore operDataStore; + private ClientBackedDataStore configDataStore; + private ClientBackedDataStore operDataStore; private DatastoreContext.Builder datastoreContextBuilder; private boolean cleanedUp; @@ -72,12 +73,12 @@ public class MemberNode { } - public AbstractDataStore configDataStore() { + public ClientBackedDataStore configDataStore() { return configDataStore; } - public AbstractDataStore operDataStore() { + public ClientBackedDataStore operDataStore() { return operDataStore; } @@ -93,6 +94,7 @@ public class MemberNode { Stopwatch sw = Stopwatch.createStarted(); while (sw.elapsed(TimeUnit.SECONDS) <= 10) { CurrentClusterState state = Cluster.get(kit.getSystem()).state(); + for (Member m : state.getUnreachable()) { if (member.equals(m.getRoles().iterator().next())) { return; @@ -123,24 +125,24 @@ public class MemberNode { } try { - IntegrationTestKit.shutdownActorSystem(kit.getSystem(), Boolean.TRUE); + IntegrationTestKit.shutdownActorSystem(kit.getSystem(), true); } catch (RuntimeException e) { LoggerFactory.getLogger(MemberNode.class).warn("Failed to shutdown actor system", e); } } } - public static void verifyRaftState(final AbstractDataStore datastore, final String shardName, + public static void verifyRaftState(final ClientBackedDataStore datastore, final String shardName, final RaftStateVerifier verifier) throws Exception { - ActorContext actorContext = datastore.getActorContext(); + ActorUtils actorUtils = datastore.getActorUtils(); - Future future = actorContext.findLocalShardAsync(shardName); - ActorRef shardActor = Await.result(future, Duration.create(10, TimeUnit.SECONDS)); + Future future = actorUtils.findLocalShardAsync(shardName); + ActorRef shardActor = Await.result(future, FiniteDuration.create(10, TimeUnit.SECONDS)); AssertionError lastError = null; Stopwatch sw = Stopwatch.createStarted(); while (sw.elapsed(TimeUnit.SECONDS) <= 5) { - OnDemandRaftState raftState = (OnDemandRaftState)actorContext + OnDemandRaftState raftState = (OnDemandRaftState)actorUtils .executeOperation(shardActor, GetOnDemandRaftState.INSTANCE); try { @@ -155,22 +157,22 @@ public class MemberNode { throw lastError; } - public static void verifyRaftPeersPresent(final AbstractDataStore datastore, final String shardName, + public static void verifyRaftPeersPresent(final ClientBackedDataStore datastore, final String shardName, final String... peerMemberNames) throws Exception { - final Set peerIds = Sets.newHashSet(); + final Set peerIds = new HashSet<>(); for (String p: peerMemberNames) { peerIds.add(ShardIdentifier.create(shardName, MemberName.forName(p), - datastore.getActorContext().getDataStoreName()).toString()); + datastore.getActorUtils().getDataStoreName()).toString()); } verifyRaftState(datastore, shardName, raftState -> assertEquals("Peers for shard " + shardName, peerIds, raftState.getPeerAddresses().keySet())); } - public static void verifyNoShardPresent(final AbstractDataStore datastore, final String shardName) { + public static void verifyNoShardPresent(final ClientBackedDataStore datastore, final String shardName) { Stopwatch sw = Stopwatch.createStarted(); while (sw.elapsed(TimeUnit.SECONDS) <= 5) { - Optional shardReply = datastore.getActorContext().findLocalShard(shardName); + Optional shardReply = datastore.getActorUtils().findLocalShard(shardName); if (!shardReply.isPresent()) { return; } @@ -188,7 +190,7 @@ public class MemberNode { private boolean useAkkaArtery = true; private String[] waitForshardLeader = new String[0]; private String testName; - private SchemaContext schemaContext; + private EffectiveModelContext schemaContext; private boolean createOperDatastore = true; private DatastoreContext.Builder datastoreContextBuilder = DatastoreContext.newBuilder() .shardHeartbeatIntervalInMillis(300).shardElectionTimeoutFactor(30); @@ -203,7 +205,7 @@ public class MemberNode { * @return this Builder */ public Builder moduleShardsConfig(final String newModuleShardsConfig) { - this.moduleShardsConfig = newModuleShardsConfig; + moduleShardsConfig = newModuleShardsConfig; return this; } @@ -213,7 +215,7 @@ public class MemberNode { * @return this Builder */ public Builder akkaConfig(final String newAkkaConfig) { - this.akkaConfig = newAkkaConfig; + akkaConfig = newAkkaConfig; return this; } @@ -223,7 +225,7 @@ public class MemberNode { * @return this Builder */ public Builder useAkkaArtery(final boolean newUseAkkaArtery) { - this.useAkkaArtery = newUseAkkaArtery; + useAkkaArtery = newUseAkkaArtery; return this; } @@ -233,7 +235,7 @@ public class MemberNode { * @return this Builder */ public Builder testName(final String newTestName) { - this.testName = newTestName; + testName = newTestName; return this; } @@ -243,7 +245,7 @@ public class MemberNode { * @return this Builder */ public Builder waitForShardLeader(final String... shardNames) { - this.waitForshardLeader = shardNames; + waitForshardLeader = shardNames; return this; } @@ -253,7 +255,7 @@ public class MemberNode { * @return this Builder */ public Builder createOperDatastore(final boolean value) { - this.createOperDatastore = value; + createOperDatastore = value; return this; } @@ -262,8 +264,8 @@ public class MemberNode { * * @return this Builder */ - public Builder schemaContext(final SchemaContext newSchemaContext) { - this.schemaContext = newSchemaContext; + public Builder schemaContext(final EffectiveModelContext newSchemaContext) { + schemaContext = newSchemaContext; return this; } @@ -278,9 +280,9 @@ public class MemberNode { } public MemberNode build() throws Exception { - Preconditions.checkNotNull(moduleShardsConfig, "moduleShardsConfig must be specified"); - Preconditions.checkNotNull(akkaConfig, "akkaConfig must be specified"); - Preconditions.checkNotNull(testName, "testName must be specified"); + requireNonNull(moduleShardsConfig, "moduleShardsConfig must be specified"); + requireNonNull(akkaConfig, "akkaConfig must be specified"); + requireNonNull(testName, "testName must be specified"); if (schemaContext == null) { schemaContext = SchemaContextHelper.full(); @@ -306,12 +308,12 @@ public class MemberNode { String memberName = new ClusterWrapperImpl(system).getCurrentMemberName().getName(); node.kit.getDatastoreContextBuilder().shardManagerPersistenceId("shard-manager-config-" + memberName); - node.configDataStore = node.kit.setupAbstractDataStore(DistributedDataStore.class, - "config_" + testName, moduleShardsConfig, true, schemaContext, waitForshardLeader); + node.configDataStore = node.kit.setupDataStore(ClientBackedDataStore.class, "config_" + testName, + moduleShardsConfig, true, schemaContext, waitForshardLeader); if (createOperDatastore) { node.kit.getDatastoreContextBuilder().shardManagerPersistenceId("shard-manager-oper-" + memberName); - node.operDataStore = node.kit.setupAbstractDataStore(DistributedDataStore.class, + node.operDataStore = node.kit.setupDataStore(ClientBackedDataStore.class, "oper_" + testName, moduleShardsConfig, true, schemaContext, waitForshardLeader); }