Refactor DataStore readiness tracking
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / datastore / AbstractShardManagerTest.java
index 80cc2e7c75f71b56a8901dbbf9c16c2ad28a956f..9e05b7fbd32800b9aeda2ea1fb58bca9b7dee39d 100644 (file)
@@ -8,21 +8,16 @@
 
 package org.opendaylight.controller.cluster.datastore;
 
+import static org.mockito.Mockito.mock;
 import static org.mockito.MockitoAnnotations.initMocks;
 
 import akka.actor.ActorRef;
-import akka.actor.ActorSystem;
 import akka.actor.PoisonPill;
 import akka.actor.Props;
-import akka.testkit.JavaTestKit;
-import akka.testkit.TestActorRef;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.concurrent.CountDownLatch;
+import com.google.common.util.concurrent.SettableFuture;
 import java.util.concurrent.TimeUnit;
 import org.junit.After;
 import org.junit.Before;
-import org.mockito.Mock;
 import org.opendaylight.controller.cluster.access.concepts.MemberName;
 import org.opendaylight.controller.cluster.datastore.config.Configuration;
 import org.opendaylight.controller.cluster.datastore.identifiers.ShardIdentifier;
@@ -37,45 +32,44 @@ public class AbstractShardManagerTest extends AbstractClusterRefActorTest {
     protected static final MemberName MEMBER_1 = MemberName.forName("member-1");
 
     protected static int ID_COUNTER = 1;
-    protected static TestActorRef<MessageCollectorActor> mockShardActor;
+    protected static ActorRef mockShardActor;
     protected static ShardIdentifier mockShardName;
 
     protected final String shardMrgIDSuffix = "config" + ID_COUNTER++;
     protected final TestActorFactory actorFactory = new TestActorFactory(getSystem());
-    protected final Collection<ActorSystem> actorSystems = new ArrayList<>();
     protected final DatastoreContext.Builder datastoreContextBuilder = DatastoreContext.newBuilder()
             .dataStoreName(shardMrgIDSuffix).shardInitializationTimeout(600, TimeUnit.MILLISECONDS)
             .shardHeartbeatIntervalInMillis(100).shardElectionTimeoutFactor(6);
 
-    @Mock
-    protected static CountDownLatch ready;
+    protected static SettableFuture<Void> ready;
 
     protected TestShardManager.Builder newTestShardMgrBuilder() {
-        return TestShardManager.builder(datastoreContextBuilder);
+        return TestShardManager.builder(datastoreContextBuilder).distributedDataStore(mock(DistributedDataStore.class));
     }
 
     protected TestShardManager.Builder newTestShardMgrBuilder(final Configuration config) {
-        return TestShardManager.builder(datastoreContextBuilder).configuration(config);
+        return TestShardManager.builder(datastoreContextBuilder).configuration(config)
+                .distributedDataStore(mock(DistributedDataStore.class));
     }
 
     protected Props newShardMgrProps(final Configuration config) {
-        return newTestShardMgrBuilder(config).waitTillReadyCountDownLatch(ready).props();
+        return newTestShardMgrBuilder(config).readinessFuture(ready).props();
     }
 
     @Before
-    public void setUp() throws Exception {
+    public void setUp() {
         initMocks(this);
+        ready = SettableFuture.create();
 
         InMemoryJournal.clear();
         InMemorySnapshotStore.clear();
 
         if (mockShardActor == null) {
             mockShardName = ShardIdentifier.create(Shard.DEFAULT_NAME, MEMBER_1, "config");
-            mockShardActor = TestActorRef.create(getSystem(), Props.create(MessageCollectorActor.class),
-                    mockShardName.toString());
+            mockShardActor = getSystem().actorOf(MessageCollectorActor.props(), mockShardName.toString());
         }
 
-        mockShardActor.underlyingActor().clear();
+        MessageCollectorActor.clearMessages(mockShardActor);
     }
 
     @After
@@ -83,10 +77,6 @@ public class AbstractShardManagerTest extends AbstractClusterRefActorTest {
         InMemoryJournal.clear();
         InMemorySnapshotStore.clear();
 
-        for (final ActorSystem system : actorSystems) {
-            JavaTestKit.shutdownActorSystem(system, null, Boolean.TRUE);
-        }
-
         mockShardActor.tell(PoisonPill.getInstance(), ActorRef.noSender());
         mockShardActor = null;