BUG 2138: Introduce prefix based shards into ShardManager
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / datastore / shardmanager / ShardManagerTest.java
index 705f3c40d85dd80a4f7c76ac3694264e380181c1..521a0b86bdec17d48b8eddbe000f43834ebcc806 100644 (file)
@@ -47,7 +47,6 @@ import com.google.common.util.concurrent.Uninterruptibles;
 import com.typesafe.config.ConfigFactory;
 import java.net.URI;
 import java.util.AbstractMap;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -61,21 +60,16 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.SerializationUtils;
-import org.junit.After;
-import org.junit.Before;
 import org.junit.Test;
-import org.mockito.Mock;
 import org.mockito.Mockito;
-import org.mockito.MockitoAnnotations;
 import org.opendaylight.controller.cluster.access.concepts.MemberName;
-import org.opendaylight.controller.cluster.datastore.AbstractActorTest;
+import org.opendaylight.controller.cluster.datastore.AbstractShardManagerTest;
 import org.opendaylight.controller.cluster.datastore.ClusterWrapperImpl;
 import org.opendaylight.controller.cluster.datastore.DataStoreVersions;
 import org.opendaylight.controller.cluster.datastore.DatastoreContext;
 import org.opendaylight.controller.cluster.datastore.DatastoreContextFactory;
 import org.opendaylight.controller.cluster.datastore.Shard;
 import org.opendaylight.controller.cluster.datastore.ShardManager.SchemaContextModules;
-import org.opendaylight.controller.cluster.datastore.config.Configuration;
 import org.opendaylight.controller.cluster.datastore.config.ConfigurationImpl;
 import org.opendaylight.controller.cluster.datastore.config.EmptyModuleShardConfigProvider;
 import org.opendaylight.controller.cluster.datastore.config.ModuleShardConfiguration;
@@ -111,7 +105,6 @@ import org.opendaylight.controller.cluster.notifications.LeaderStateChanged;
 import org.opendaylight.controller.cluster.notifications.RegisterRoleChangeListener;
 import org.opendaylight.controller.cluster.notifications.RoleChangeNotification;
 import org.opendaylight.controller.cluster.raft.RaftState;
-import org.opendaylight.controller.cluster.raft.TestActorFactory;
 import org.opendaylight.controller.cluster.raft.base.messages.FollowerInitialSyncUpStatus;
 import org.opendaylight.controller.cluster.raft.base.messages.SwitchBehavior;
 import org.opendaylight.controller.cluster.raft.client.messages.GetSnapshot;
@@ -137,55 +130,13 @@ import scala.concurrent.Await;
 import scala.concurrent.Future;
 import scala.concurrent.duration.FiniteDuration;
 
-public class ShardManagerTest extends AbstractActorTest {
+public class ShardManagerTest extends AbstractShardManagerTest {
     private static final Logger LOG = LoggerFactory.getLogger(ShardManagerTest.class);
-    private static final MemberName MEMBER_1 = MemberName.forName("member-1");
     private static final MemberName MEMBER_2 = MemberName.forName("member-2");
     private static final MemberName MEMBER_3 = MemberName.forName("member-3");
 
-    private static int ID_COUNTER = 1;
-
-    private final String shardMrgIDSuffix = "config" + ID_COUNTER++;
     private final String shardMgrID = ShardManagerIdentifier.builder().type(shardMrgIDSuffix).build().toString();
 
-    @Mock
-    private static CountDownLatch ready;
-
-    private static ShardIdentifier mockShardName = ShardIdentifier.create(Shard.DEFAULT_NAME, MEMBER_1, "config");
-
-    private static TestActorRef<MessageCollectorActor> mockShardActor = TestActorRef.create(getSystem(),
-            Props.create(MessageCollectorActor.class), mockShardName.toString());
-
-    private final DatastoreContext.Builder datastoreContextBuilder = DatastoreContext.newBuilder()
-            .dataStoreName(shardMrgIDSuffix).shardInitializationTimeout(600, TimeUnit.MILLISECONDS)
-            .shardHeartbeatIntervalInMillis(100).shardElectionTimeoutFactor(6);
-
-    private final Collection<ActorSystem> actorSystems = new ArrayList<>();
-
-    private final TestActorFactory actorFactory = new TestActorFactory(getSystem());
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        InMemoryJournal.clear();
-        InMemorySnapshotStore.clear();
-
-        mockShardActor.underlyingActor().clear();
-    }
-
-    @After
-    public void tearDown() {
-        InMemoryJournal.clear();
-        InMemorySnapshotStore.clear();
-
-        for (ActorSystem system: actorSystems) {
-            JavaTestKit.shutdownActorSystem(system, null, Boolean.TRUE);
-        }
-
-        actorFactory.close();
-    }
-
     private ActorSystem newActorSystem(String config) {
         ActorSystem system = ActorSystem.create("cluster-test", ConfigFactory.load().getConfig(config));
         actorSystems.add(system);
@@ -205,10 +156,6 @@ public class ShardManagerTest extends AbstractActorTest {
         return newShardMgrProps(new MockConfiguration());
     }
 
-    private Props newShardMgrProps(Configuration config) {
-        return newTestShardMgrBuilder(config).props();
-    }
-
     private static DatastoreContextFactory newDatastoreContextFactory(DatastoreContext datastoreContext) {
         DatastoreContextFactory mockFactory = mock(DatastoreContextFactory.class);
         Mockito.doReturn(datastoreContext).when(mockFactory).getBaseDatastoreContext();
@@ -216,14 +163,6 @@ public class ShardManagerTest extends AbstractActorTest {
         return mockFactory;
     }
 
-    private TestShardManager.Builder newTestShardMgrBuilder() {
-        return TestShardManager.builder(datastoreContextBuilder);
-    }
-
-    private TestShardManager.Builder newTestShardMgrBuilder(Configuration config) {
-        return TestShardManager.builder(datastoreContextBuilder).configuration(config);
-    }
-
     private TestShardManager.Builder newTestShardMgrBuilderWithMockShardActor() {
         return newTestShardMgrBuilderWithMockShardActor(mockShardActor);
     }
@@ -2157,7 +2096,7 @@ public class ShardManagerTest extends AbstractActorTest {
         };
     }
 
-    private static class TestShardManager extends ShardManager {
+    public static class TestShardManager extends ShardManager {
         private final CountDownLatch recoveryComplete = new CountDownLatch(1);
         private final CountDownLatch snapshotPersist = new CountDownLatch(1);
         private ShardManagerSnapshot snapshot;
@@ -2225,7 +2164,7 @@ public class ShardManagerTest extends AbstractActorTest {
                     Uninterruptibles.awaitUninterruptibly(recoveryComplete, 5, TimeUnit.SECONDS));
         }
 
-        void waitForMemberUp() {
+        public void waitForMemberUp() {
             assertEquals("MemberUp received", true,
                     Uninterruptibles.awaitUninterruptibly(memberUpReceived, 5, TimeUnit.SECONDS));
             memberUpReceived = new CountDownLatch(1);
@@ -2260,7 +2199,7 @@ public class ShardManagerTest extends AbstractActorTest {
             return new Builder(datastoreContextBuilder);
         }
 
-        private static class Builder extends AbstractGenericCreator<Builder, TestShardManager> {
+        public static class Builder extends AbstractGenericCreator<Builder, TestShardManager> {
             private ActorRef shardActor;
             private final Map<String, ActorRef> shardActors = new HashMap<>();