Move assumption
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / datastore / DistributedDataStoreRemotingIntegrationTest.java
index a1b3d4ecde0d5187c1db069d56f97ec111998975..b1b380e646e1a0e63b1f0b4f3d985c6f45c1a178 100644 (file)
@@ -124,6 +124,7 @@ import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import scala.collection.Set;
 import scala.concurrent.Await;
 import scala.concurrent.Future;
 import scala.concurrent.duration.FiniteDuration;
@@ -421,8 +422,13 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest {
 
     @Test
     public void testCloseTransactionMetadataLeak() throws Exception {
-        // FIXME: Ask-based frontend seems to have some issues with back to back close
-        assumeTrue(testParameter.isAssignableFrom(TestClientBackedDataStore.class));
+        // FIXME: CONTROLLER-2016: ask-based frontend triggers this:
+        //
+        // java.lang.IllegalStateException: Previous transaction
+        //            member-2-datastore-testCloseTransactionMetadataLeak-fe-0-chn-1-txn-1-0 is not ready yet
+        //        at org.opendaylight.controller.cluster.datastore.TransactionChainProxy$Allocated.checkReady()
+        //        at org.opendaylight.controller.cluster.datastore.TransactionChainProxy.newReadOnlyTransaction()
+        assumeTrue(testParameter.isAssignableFrom(ClientBackedDataStore.class));
 
         initDatastoresWithCars("testCloseTransactionMetadataLeak");
 
@@ -899,9 +905,6 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest {
 
     @Test
     public void testTransactionForwardedToLeaderAfterRetry() throws Exception {
-        // FIXME: remove when test passes also for ClientBackedDataStore
-        assumeTrue(DistributedDataStore.class.isAssignableFrom(testParameter));
-
         followerDatastoreContextBuilder.shardBatchedModificationCount(2);
         leaderDatastoreContextBuilder.shardBatchedModificationCount(2);
         initDatastoresWithCarsAndPeople("testTransactionForwardedToLeaderAfterRetry");
@@ -971,6 +974,8 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest {
         cars.add(CarsModel.newCarEntry("car" + carIndex, Uint64.valueOf(carIndex)));
         readWriteTx.write(CarsModel.newCarPath("car" + carIndex), cars.getLast());
 
+        // FIXME: CONTROLLER-2017: ClientBackedDataStore reports only 4 transactions
+        assumeTrue(DistributedDataStore.class.isAssignableFrom(testParameter));
         IntegrationTestKit.verifyShardStats(leaderDistributedDataStore, "cars",
             stats -> assertEquals("getReadWriteTransactionCount", 5, stats.getReadWriteTransactionCount()));
 
@@ -1266,9 +1271,9 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest {
         Member follower2Member = follower2Cluster.readView().self();
 
         await().atMost(10, TimeUnit.SECONDS)
-                .until(() -> leaderCluster.readView().unreachableMembers().contains(follower2Member));
+                .until(() -> containsUnreachable(leaderCluster, follower2Member));
         await().atMost(10, TimeUnit.SECONDS)
-                .until(() -> followerCluster.readView().unreachableMembers().contains(follower2Member));
+                .until(() -> containsUnreachable(followerCluster, follower2Member));
 
         ActorRef followerCars = followerDistributedDataStore.getActorUtils().findLocalShard("cars").get();
 
@@ -1290,6 +1295,13 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest {
         ds2.close();
     }
 
+    private static Boolean containsUnreachable(final Cluster cluster, final Member member) {
+        // unreachableMembers() returns scala.collection.immutable.Set, but we are using scala.collection.Set to fix JDT
+        // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=468276#c32
+        final Set<Member> members = cluster.readView().unreachableMembers();
+        return members.contains(member);
+    }
+
     @Test
     public void testInstallSnapshot() throws Exception {
         final String testName = "testInstallSnapshot";