use of io.aeron.test.cluster.TestNode in project Aeron by real-logic.
the class ClusterBackupTest method shouldBackupClusterNoSnapshotsAndNonEmptyLogWithReQuery.
@Test
@InterruptAfter(30)
public void shouldBackupClusterNoSnapshotsAndNonEmptyLogWithReQuery() {
final TestCluster cluster = aCluster().withStaticNodes(3).start();
systemTestWatcher.cluster(cluster);
final TestNode leader = cluster.awaitLeader();
final int messageCount = 10;
cluster.connectClient();
cluster.sendMessages(messageCount);
cluster.awaitResponseMessageCount(messageCount);
cluster.awaitServicesMessageCount(messageCount);
final long logPosition = leader.service().cluster().logPosition();
final TestBackupNode backupNode = cluster.startClusterBackupNode(true);
cluster.awaitBackupState(ClusterBackup.State.BACKING_UP);
cluster.awaitBackupLiveLogPosition(logPosition);
assertTrue(backupNode.nextBackupQueryDeadlineMs(0));
cluster.sendMessages(5);
cluster.awaitResponseMessageCount(messageCount + 5);
cluster.awaitServiceMessageCount(leader, messageCount + 5);
final long nextLogPosition = leader.service().cluster().logPosition();
cluster.awaitBackupState(ClusterBackup.State.BACKING_UP);
cluster.awaitBackupLiveLogPosition(nextLogPosition);
cluster.stopAllNodes();
final TestNode node = cluster.startStaticNodeFromBackup();
cluster.awaitLeader();
assertEquals(messageCount + 5, node.service().messageCount());
}
use of io.aeron.test.cluster.TestNode in project Aeron by real-logic.
the class ClusterBackupTest method shouldBackupClusterWithSnapshot.
@Test
@InterruptAfter(30)
public void shouldBackupClusterWithSnapshot() {
final TestCluster cluster = aCluster().withStaticNodes(3).start();
systemTestWatcher.cluster(cluster);
final TestNode leader = cluster.awaitLeader();
final int messageCount = 10;
cluster.connectClient();
cluster.sendMessages(messageCount);
cluster.awaitResponseMessageCount(messageCount);
cluster.awaitServicesMessageCount(messageCount);
cluster.takeSnapshot(leader);
cluster.awaitSnapshotCount(1);
final long logPosition = leader.service().cluster().logPosition();
cluster.startClusterBackupNode(true);
cluster.awaitBackupState(ClusterBackup.State.BACKING_UP);
cluster.awaitBackupLiveLogPosition(logPosition);
cluster.stopAllNodes();
final TestNode node = cluster.startStaticNodeFromBackup();
cluster.awaitLeader();
assertEquals(messageCount, node.service().messageCount());
assertTrue(node.service().wasSnapshotLoaded());
}
use of io.aeron.test.cluster.TestNode in project Aeron by real-logic.
the class ClusterBackupTest method shouldBackupClusterNoSnapshotsAndNonEmptyLogWithFailure.
@Test
@InterruptAfter(60)
public void shouldBackupClusterNoSnapshotsAndNonEmptyLogWithFailure() {
final TestCluster cluster = aCluster().withStaticNodes(3).start();
systemTestWatcher.cluster(cluster);
final TestNode leaderOne = cluster.awaitLeader();
final int messageCount = 10;
final AeronCluster aeronCluster = cluster.connectClient();
cluster.sendMessages(messageCount);
cluster.awaitResponseMessageCount(messageCount);
cluster.awaitServicesMessageCount(messageCount);
final long logPosition = leaderOne.service().cluster().logPosition();
cluster.startClusterBackupNode(true);
aeronCluster.sendKeepAlive();
cluster.awaitBackupState(ClusterBackup.State.BACKING_UP);
aeronCluster.sendKeepAlive();
cluster.awaitBackupLiveLogPosition(logPosition);
cluster.stopNode(leaderOne);
final TestNode leaderTwo = cluster.awaitLeader();
cluster.awaitNewLeadershipEvent(1);
cluster.sendMessages(5);
cluster.awaitResponseMessageCount(messageCount + 5);
final long nextLogPosition = leaderTwo.service().cluster().logPosition();
cluster.awaitBackupState(ClusterBackup.State.BACKING_UP);
cluster.awaitBackupLiveLogPosition(nextLogPosition);
cluster.stopAllNodes();
final TestNode node = cluster.startStaticNodeFromBackup();
cluster.awaitLeader();
assertEquals(messageCount + 5, node.service().messageCount());
assertFalse(node.service().wasSnapshotLoaded());
}
use of io.aeron.test.cluster.TestNode in project Aeron by real-logic.
the class ClusterBackupTest method shouldBackupClusterNoSnapshotsAndThenSendMessages.
@Test
@InterruptAfter(30)
public void shouldBackupClusterNoSnapshotsAndThenSendMessages() {
final TestCluster cluster = aCluster().withStaticNodes(3).start();
systemTestWatcher.cluster(cluster);
final TestNode leader = cluster.awaitLeader();
cluster.startClusterBackupNode(true);
cluster.awaitBackupState(ClusterBackup.State.BACKING_UP);
final int messageCount = 10;
cluster.connectClient();
cluster.sendMessages(messageCount);
cluster.awaitResponseMessageCount(messageCount);
cluster.awaitServicesMessageCount(messageCount);
final long logPosition = leader.service().cluster().logPosition();
cluster.awaitBackupLiveLogPosition(logPosition);
cluster.stopAllNodes();
final TestNode node = cluster.startStaticNodeFromBackup();
cluster.awaitLeader();
assertEquals(messageCount, node.service().messageCount());
assertFalse(node.service().wasSnapshotLoaded());
}
use of io.aeron.test.cluster.TestNode in project Aeron by real-logic.
the class ClusterBackupTest method shouldBackupClusterAfterCleanShutdown.
@Test
@InterruptAfter(30)
public void shouldBackupClusterAfterCleanShutdown() {
final TestCluster cluster = aCluster().withStaticNodes(3).start();
systemTestWatcher.cluster(cluster);
final TestNode leader = cluster.awaitLeader();
final int messageCount = 10;
cluster.connectClient();
cluster.sendMessages(messageCount);
cluster.awaitResponseMessageCount(messageCount);
cluster.awaitServicesMessageCount(messageCount);
cluster.node(0).isTerminationExpected(true);
cluster.node(1).isTerminationExpected(true);
cluster.node(2).isTerminationExpected(true);
cluster.shutdownCluster(leader);
cluster.awaitNodeTerminations();
assertTrue(cluster.node(0).service().wasSnapshotTaken());
assertTrue(cluster.node(1).service().wasSnapshotTaken());
assertTrue(cluster.node(2).service().wasSnapshotTaken());
cluster.stopAllNodes();
cluster.restartAllNodes(false);
final TestNode newLeader = cluster.awaitLeader();
final long logPosition = newLeader.service().cluster().logPosition();
cluster.startClusterBackupNode(true);
cluster.awaitBackupState(ClusterBackup.State.BACKING_UP);
cluster.awaitBackupLiveLogPosition(logPosition);
}
Aggregations