Loading tests/test-replication.c +52 −0 Original line number Diff line number Diff line Loading @@ -490,6 +490,56 @@ static void test_secondary_stop(void) teardown_secondary(); } static void test_secondary_continuous_replication(void) { BlockBackend *top_blk, *local_blk; Error *local_err = NULL; top_blk = start_secondary(); replication_start_all(REPLICATION_MODE_SECONDARY, &local_err); g_assert(!local_err); /* write 0x22 to s_local_disk (IMG_SIZE / 2, IMG_SIZE) */ local_blk = blk_by_name(S_LOCAL_DISK_ID); test_blk_write(local_blk, 0x22, IMG_SIZE / 2, IMG_SIZE / 2, false); /* replication will backup s_local_disk to s_hidden_disk */ test_blk_read(top_blk, 0x11, IMG_SIZE / 2, IMG_SIZE / 2, 0, IMG_SIZE, false); /* write 0x33 to s_active_disk (0, IMG_SIZE / 2) */ test_blk_write(top_blk, 0x33, 0, IMG_SIZE / 2, false); /* do failover (active commit) */ replication_stop_all(true, &local_err); g_assert(!local_err); /* it should ignore all requests from now on */ /* start after failover */ replication_start_all(REPLICATION_MODE_PRIMARY, &local_err); g_assert(!local_err); /* checkpoint */ replication_do_checkpoint_all(&local_err); g_assert(!local_err); /* stop */ replication_stop_all(true, &local_err); g_assert(!local_err); /* read from s_local_disk (0, IMG_SIZE / 2) */ test_blk_read(top_blk, 0x33, 0, IMG_SIZE / 2, 0, IMG_SIZE / 2, false); /* read from s_local_disk (IMG_SIZE / 2, IMG_SIZE) */ test_blk_read(top_blk, 0x22, IMG_SIZE / 2, IMG_SIZE / 2, 0, IMG_SIZE, false); teardown_secondary(); } static void test_secondary_do_checkpoint(void) { BlockBackend *top_blk, *local_blk; Loading Loading @@ -585,6 +635,8 @@ int main(int argc, char **argv) g_test_add_func("/replication/secondary/write", test_secondary_write); g_test_add_func("/replication/secondary/start", test_secondary_start); g_test_add_func("/replication/secondary/stop", test_secondary_stop); g_test_add_func("/replication/secondary/continuous_replication", test_secondary_continuous_replication); g_test_add_func("/replication/secondary/do_checkpoint", test_secondary_do_checkpoint); g_test_add_func("/replication/secondary/get_error_all", Loading Loading
tests/test-replication.c +52 −0 Original line number Diff line number Diff line Loading @@ -490,6 +490,56 @@ static void test_secondary_stop(void) teardown_secondary(); } static void test_secondary_continuous_replication(void) { BlockBackend *top_blk, *local_blk; Error *local_err = NULL; top_blk = start_secondary(); replication_start_all(REPLICATION_MODE_SECONDARY, &local_err); g_assert(!local_err); /* write 0x22 to s_local_disk (IMG_SIZE / 2, IMG_SIZE) */ local_blk = blk_by_name(S_LOCAL_DISK_ID); test_blk_write(local_blk, 0x22, IMG_SIZE / 2, IMG_SIZE / 2, false); /* replication will backup s_local_disk to s_hidden_disk */ test_blk_read(top_blk, 0x11, IMG_SIZE / 2, IMG_SIZE / 2, 0, IMG_SIZE, false); /* write 0x33 to s_active_disk (0, IMG_SIZE / 2) */ test_blk_write(top_blk, 0x33, 0, IMG_SIZE / 2, false); /* do failover (active commit) */ replication_stop_all(true, &local_err); g_assert(!local_err); /* it should ignore all requests from now on */ /* start after failover */ replication_start_all(REPLICATION_MODE_PRIMARY, &local_err); g_assert(!local_err); /* checkpoint */ replication_do_checkpoint_all(&local_err); g_assert(!local_err); /* stop */ replication_stop_all(true, &local_err); g_assert(!local_err); /* read from s_local_disk (0, IMG_SIZE / 2) */ test_blk_read(top_blk, 0x33, 0, IMG_SIZE / 2, 0, IMG_SIZE / 2, false); /* read from s_local_disk (IMG_SIZE / 2, IMG_SIZE) */ test_blk_read(top_blk, 0x22, IMG_SIZE / 2, IMG_SIZE / 2, 0, IMG_SIZE, false); teardown_secondary(); } static void test_secondary_do_checkpoint(void) { BlockBackend *top_blk, *local_blk; Loading Loading @@ -585,6 +635,8 @@ int main(int argc, char **argv) g_test_add_func("/replication/secondary/write", test_secondary_write); g_test_add_func("/replication/secondary/start", test_secondary_start); g_test_add_func("/replication/secondary/stop", test_secondary_stop); g_test_add_func("/replication/secondary/continuous_replication", test_secondary_continuous_replication); g_test_add_func("/replication/secondary/do_checkpoint", test_secondary_do_checkpoint); g_test_add_func("/replication/secondary/get_error_all", Loading