}
@Test
- @Ignore("Writes to root node are not split into shards")
public void testSnapshotOnRootOverwrite() throws Exception {
if (!DistributedDataStore.class.isAssignableFrom(testParameter)) {
// FIXME: ClientBackedDatastore does not have stable indexes/term, the snapshot index seems to fluctuate
testKit.testWriteTransaction(dataStore, YangInstanceIdentifier.empty(), rootNode);
IntegrationTestKit.verifyShardState(dataStore, "cars",
- state -> assertEquals(0, state.getSnapshotIndex()));
+ state -> assertEquals(1, state.getSnapshotIndex()));
// root has been written expect snapshot at index 0
- verifySnapshot("member-1-shard-cars-testRootOverwrite", 0, 1);
+ verifySnapshot("member-1-shard-cars-testRootOverwrite", 1, 1);
for (int i = 0; i < 10; i++) {
testKit.testWriteTransaction(dataStore, CarsModel.newCarPath("car " + i),
// fake snapshot causes the snapshotIndex to move
IntegrationTestKit.verifyShardState(dataStore, "cars",
- state -> assertEquals(9, state.getSnapshotIndex()));
+ state -> assertEquals(10, state.getSnapshotIndex()));
// however the real snapshot still has not changed and was taken at index 0
- verifySnapshot("member-1-shard-cars-testRootOverwrite", 0, 1);
+ verifySnapshot("member-1-shard-cars-testRootOverwrite", 1, 1);
// root overwrite so expect a snapshot
testKit.testWriteTransaction(dataStore, YangInstanceIdentifier.empty(), rootNode);
// this was a real snapshot so everything should be in it(1 + 10 + 1)
IntegrationTestKit.verifyShardState(dataStore, "cars",
- state -> assertEquals(11, state.getSnapshotIndex()));
+ state -> assertEquals(12, state.getSnapshotIndex()));
- verifySnapshot("member-1-shard-cars-testRootOverwrite", 11, 1);
+ verifySnapshot("member-1-shard-cars-testRootOverwrite", 12, 1);
}
}
- private void verifySnapshot(String persistenceId, long lastAppliedIndex, long lastAppliedTerm) {
+ private static void verifySnapshot(final String persistenceId, final long lastAppliedIndex,
+ final long lastAppliedTerm) {
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> {
List<Snapshot> snap = InMemorySnapshotStore.getSnapshots(persistenceId, Snapshot.class);
assertEquals(1, snap.size());
}
private void initDatastores(final String type, final String moduleShardsConfig, final String[] shards,
- DatastoreContext.Builder leaderBuilder, DatastoreContext.Builder followerBuilder) throws Exception {
+ final DatastoreContext.Builder leaderBuilder, final DatastoreContext.Builder followerBuilder)
+ throws Exception {
leaderTestKit = new IntegrationTestKit(leaderSystem, leaderBuilder, commitTimeout);
leaderDistributedDataStore = leaderTestKit.setupAbstractDataStore(
}
@Test
- @Ignore("Writes to root node are not split into shards")
public void testSnapshotOnRootOverwrite() throws Exception {
if (!DistributedDataStore.class.isAssignableFrom(testParameter)) {
// FIXME: ClientBackedDatastore does not have stable indexes/term, the snapshot index seems to fluctuate
}
final String testName = "testSnapshotOnRootOverwrite";
- String[] shards = {"cars", "default"};
- initDatastores(testName, "module-shards-default-cars-member1.conf", shards,
+ final String[] shards = {"cars", "default"};
+ initDatastores(testName, "module-shards-default-cars-member1-and-2.conf", shards,
leaderDatastoreContextBuilder.snapshotOnRootOverwrite(true),
followerDatastoreContextBuilder.snapshotOnRootOverwrite(true));
leaderTestKit.waitForMembersUp("member-2");
- ContainerNode rootNode = ImmutableContainerNodeBuilder.create()
+ final ContainerNode rootNode = ImmutableContainerNodeBuilder.create()
.withNodeIdentifier(YangInstanceIdentifier.NodeIdentifier.create(SchemaContext.NAME))
.withChild((ContainerNode) CarsModel.create())
.build();
leaderTestKit.testWriteTransaction(leaderDistributedDataStore, YangInstanceIdentifier.empty(), rootNode);
IntegrationTestKit.verifyShardState(leaderDistributedDataStore, "cars",
- state -> assertEquals(0, state.getSnapshotIndex()));
+ state -> assertEquals(1, state.getSnapshotIndex()));
IntegrationTestKit.verifyShardState(followerDistributedDataStore, "cars",
- state -> assertEquals(0, state.getSnapshotIndex()));
+ state -> assertEquals(1, state.getSnapshotIndex()));
- verifySnapshot("member-1-shard-cars-testSnapshotOnRootOverwrite", 0);
- verifySnapshot("member-2-shard-cars-testSnapshotOnRootOverwrite", 0);
+ verifySnapshot("member-1-shard-cars-testSnapshotOnRootOverwrite", 1);
+ verifySnapshot("member-2-shard-cars-testSnapshotOnRootOverwrite", 1);
for (int i = 0; i < 10; i++) {
leaderTestKit.testWriteTransaction(leaderDistributedDataStore, CarsModel.newCarPath("car " + i),
// fake snapshot causes the snapshotIndex to move
IntegrationTestKit.verifyShardState(leaderDistributedDataStore, "cars",
- state -> assertEquals(9, state.getSnapshotIndex()));
+ state -> assertEquals(10, state.getSnapshotIndex()));
IntegrationTestKit.verifyShardState(followerDistributedDataStore, "cars",
- state -> assertEquals(9, state.getSnapshotIndex()));
+ state -> assertEquals(10, state.getSnapshotIndex()));
- // however the real snapshot still has not changed and was taken at index 0
- verifySnapshot("member-1-shard-cars-testSnapshotOnRootOverwrite", 0);
- verifySnapshot("member-2-shard-cars-testSnapshotOnRootOverwrite", 0);
+ // however the real snapshot still has not changed and was taken at index 1
+ verifySnapshot("member-1-shard-cars-testSnapshotOnRootOverwrite", 1);
+ verifySnapshot("member-2-shard-cars-testSnapshotOnRootOverwrite", 1);
// root overwrite so expect a snapshot
leaderTestKit.testWriteTransaction(leaderDistributedDataStore, YangInstanceIdentifier.empty(), rootNode);
- // this was a real snapshot so everything should be in it(1 + 10 + 1)
+ // this was a real snapshot so everything should be in it(1(DisableTrackingPayload) + 1 + 10 + 1)
IntegrationTestKit.verifyShardState(leaderDistributedDataStore, "cars",
- state -> assertEquals(11, state.getSnapshotIndex()));
+ state -> assertEquals(12, state.getSnapshotIndex()));
IntegrationTestKit.verifyShardState(followerDistributedDataStore, "cars",
- state -> assertEquals(11, state.getSnapshotIndex()));
+ state -> assertEquals(12, state.getSnapshotIndex()));
- verifySnapshot("member-1-shard-cars-testSnapshotOnRootOverwrite", 11);
- verifySnapshot("member-2-shard-cars-testSnapshotOnRootOverwrite", 11);
+ verifySnapshot("member-1-shard-cars-testSnapshotOnRootOverwrite", 12);
+ verifySnapshot("member-2-shard-cars-testSnapshotOnRootOverwrite", 12);
}
- private void verifySnapshot(String persistenceId, long lastAppliedIndex) {
+ private void verifySnapshot(final String persistenceId, final long lastAppliedIndex) {
await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> {
List<Snapshot> snap = InMemorySnapshotStore.getSnapshots(persistenceId, Snapshot.class);
assertEquals(1, snap.size());