Refactor DataStore readiness tracking
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / datastore / AbstractShardManagerTest.java
index 8152c9e6e2cebfe7e221be31fb0b85585d927489..9e05b7fbd32800b9aeda2ea1fb58bca9b7dee39d 100644 (file)
@@ -14,12 +14,10 @@ import static org.mockito.MockitoAnnotations.initMocks;
 import akka.actor.ActorRef;
 import akka.actor.PoisonPill;
 import akka.actor.Props;
-import akka.testkit.TestActorRef;
-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;
@@ -34,7 +32,7 @@ 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++;
@@ -43,8 +41,7 @@ public class AbstractShardManagerTest extends AbstractClusterRefActorTest {
             .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).distributedDataStore(mock(DistributedDataStore.class));
@@ -56,23 +53,23 @@ public class AbstractShardManagerTest extends AbstractClusterRefActorTest {
     }
 
     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