X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FDistributedDataStoreRemotingIntegrationTest.java;h=a516a292e3f1ee10e564df88d29fdc07a954d12c;hp=b1b380e646e1a0e63b1f0b4f3d985c6f45c1a178;hb=09d76ff670a3d54dac595336b9fe3151b793d630;hpb=e8c92cf0ebc968dc37dd549f3eefbd9b09567c4f diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreRemotingIntegrationTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreRemotingIntegrationTest.java index b1b380e646..a516a292e3 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreRemotingIntegrationTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreRemotingIntegrationTest.java @@ -401,21 +401,18 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest { } } - private void assertAskClientMetadata(final FrontendClientMetadata clientMeta) { + private static void assertAskClientMetadata(final FrontendClientMetadata clientMeta) { // ask based should track no metadata assertEquals(List.of(), clientMeta.getCurrentHistories()); } - private void assertTellClientMetadata(final FrontendClientMetadata clientMeta, final long lastPurged) { + private static void assertTellClientMetadata(final FrontendClientMetadata clientMeta, final long lastPurged) { final var iterator = clientMeta.getCurrentHistories().iterator(); var metadata = iterator.next(); while (iterator.hasNext() && metadata.getHistoryId() != 1) { metadata = iterator.next(); } - // FIXME: CONTROLLER-1991: remove this assumption - assumeTrue(false); - assertEquals(UnsignedLongBitmap.of(), metadata.getClosedTransactions()); assertEquals("[[0.." + lastPurged + "]]", metadata.getPurgedTransactions().ranges().toString()); } @@ -441,21 +438,17 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest { int numCars = 5; for (int i = 0; i < numCars; i++) { - writeTx = txChain.newWriteOnlyTransaction(); - writeTx.close(); + try (var tx = txChain.newWriteOnlyTransaction()) { + // Empty on purpose + } try (var tx = txChain.newReadOnlyTransaction()) { tx.read(CarsModel.BASE_PATH).get(); } } - writeTx = txChain.newWriteOnlyTransaction(); - writeTx.write(CarsModel.BASE_PATH, CarsModel.emptyContainer()); - writeTx.write(CarsModel.CAR_LIST_PATH, CarsModel.newCarMapNode()); - followerTestKit.doCommit(writeTx.ready()); - // wait to let the shard catch up with purged - await("Close transaction purge leak test.").atMost(5, TimeUnit.SECONDS) + await("wait for purges to settle").atMost(5, TimeUnit.SECONDS) .pollInterval(500, TimeUnit.MILLISECONDS) .untilAsserted(() -> { final var localShard = leaderDistributedDataStore.getActorUtils().findLocalShard("cars") @@ -466,17 +459,11 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest { final var clientMeta = frontendMetadata.getClients().get(0); if (leaderDistributedDataStore.getActorUtils().getDatastoreContext().isUseTellBasedProtocol()) { - assertTellClientMetadata(clientMeta, numCars * 2 + 1); + assertTellClientMetadata(clientMeta, numCars * 2); } else { assertAskClientMetadata(clientMeta); } }); - - try (var tx = txChain.newReadOnlyTransaction()) { - final var body = tx.read(CarsModel.CAR_LIST_PATH).get(5, TimeUnit.SECONDS).orElseThrow().body(); - assertThat(body, instanceOf(Collection.class)); - assertEquals(numCars, ((Collection) body).size()); - } } @Test @@ -1017,9 +1004,6 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest { @Test public void testLeadershipTransferOnShutdown() throws Exception { - // FIXME: remove when test passes also for ClientBackedDataStore - assumeTrue(DistributedDataStore.class.isAssignableFrom(testParameter)); - leaderDatastoreContextBuilder.shardBatchedModificationCount(1); followerDatastoreContextBuilder.shardElectionTimeoutFactor(10).customRaftPolicyImplementation(null); final String testName = "testLeadershipTransferOnShutdown"; @@ -1042,16 +1026,21 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest { writeTx.write(PeopleModel.BASE_PATH, PeopleModel.emptyContainer()); final DOMStoreThreePhaseCommitCohort cohort1 = writeTx.ready(); - IntegrationTestKit.verifyShardStats(leaderDistributedDataStore, "cars", - stats -> assertEquals("getTxCohortCacheSize", 1, stats.getTxCohortCacheSize())); + final var usesCohorts = DistributedDataStore.class.isAssignableFrom(testParameter); + if (usesCohorts) { + IntegrationTestKit.verifyShardStats(leaderDistributedDataStore, "cars", + stats -> assertEquals("getTxCohortCacheSize", 1, stats.getTxCohortCacheSize())); + } writeTx = followerDistributedDataStore.newWriteOnlyTransaction(); final MapEntryNode car = CarsModel.newCarEntry("optima", Uint64.valueOf(20000)); writeTx.write(CarsModel.newCarPath("optima"), car); final DOMStoreThreePhaseCommitCohort cohort2 = writeTx.ready(); - IntegrationTestKit.verifyShardStats(leaderDistributedDataStore, "cars", - stats -> assertEquals("getTxCohortCacheSize", 2, stats.getTxCohortCacheSize())); + if (usesCohorts) { + IntegrationTestKit.verifyShardStats(leaderDistributedDataStore, "cars", + stats -> assertEquals("getTxCohortCacheSize", 2, stats.getTxCohortCacheSize())); + } // Gracefully stop the leader via a Shutdown message. @@ -1083,7 +1072,7 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest { @Test public void testTransactionWithIsolatedLeader() throws Exception { - // FIXME: remove when test passes also for ClientBackedDataStore + // FIXME: CONTROLLER-2018: remove when test passes also for ClientBackedDataStore assumeTrue(DistributedDataStore.class.isAssignableFrom(testParameter)); // Set the isolated leader check interval high so we can control the switch to IsolatedLeader. @@ -1422,14 +1411,10 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest { @Test public void testSnapshotOnRootOverwrite() throws Exception { - // FIXME: ClientBackedDatastore does not have stable indexes/term, the snapshot index seems to fluctuate - assumeTrue(DistributedDataStore.class.isAssignableFrom(testParameter)); - - final String testName = "testSnapshotOnRootOverwrite"; - final String[] shards = {"cars", "default"}; - initDatastores(testName, "module-shards-default-cars-member1-and-2.conf", shards, - leaderDatastoreContextBuilder.snapshotOnRootOverwrite(true), - followerDatastoreContextBuilder.snapshotOnRootOverwrite(true)); + initDatastores("testSnapshotOnRootOverwrite", "module-shards-default-cars-member1-and-2.conf", + new String[] {"cars", "default"}, + leaderDatastoreContextBuilder.snapshotOnRootOverwrite(true), + followerDatastoreContextBuilder.snapshotOnRootOverwrite(true)); leaderTestKit.waitForMembersUp("member-2"); final ContainerNode rootNode = ImmutableContainerNodeBuilder.create() @@ -1439,6 +1424,9 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest { leaderTestKit.testWriteTransaction(leaderDistributedDataStore, YangInstanceIdentifier.empty(), rootNode); + // FIXME: CONTROLLER-2020: ClientBackedDatastore does not have stable indexes/term, + // the snapshot index seems to fluctuate + assumeTrue(DistributedDataStore.class.isAssignableFrom(testParameter)); IntegrationTestKit.verifyShardState(leaderDistributedDataStore, "cars", state -> assertEquals(1, state.getSnapshotIndex())); @@ -1476,7 +1464,7 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest { verifySnapshot("member-2-shard-cars-testSnapshotOnRootOverwrite", 12); } - private void verifySnapshot(final String persistenceId, final long lastAppliedIndex) { + private static void verifySnapshot(final String persistenceId, final long lastAppliedIndex) { await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> { List snap = InMemorySnapshotStore.getSnapshots(persistenceId, Snapshot.class); assertEquals(1, snap.size());