@ -139,8 +139,6 @@ static void make_temp(char *template)
static void prepare_imgs ( void )
{
Error * local_err = NULL ;
make_temp ( p_local_disk ) ;
make_temp ( s_local_disk ) ;
make_temp ( s_active_disk ) ;
@ -148,19 +146,15 @@ static void prepare_imgs(void)
/* Primary */
bdrv_img_create ( p_local_disk , " qcow2 " , NULL , NULL , NULL , IMG_SIZE ,
BDRV_O_RDWR , true , & local_err ) ;
g_assert ( ! local_err ) ;
BDRV_O_RDWR , true , & error_abort ) ;
/* Secondary */
bdrv_img_create ( s_local_disk , " qcow2 " , NULL , NULL , NULL , IMG_SIZE ,
BDRV_O_RDWR , true , & local_err ) ;
g_assert ( ! local_err ) ;
BDRV_O_RDWR , true , & error_abort ) ;
bdrv_img_create ( s_active_disk , " qcow2 " , NULL , NULL , NULL , IMG_SIZE ,
BDRV_O_RDWR , true , & local_err ) ;
g_assert ( ! local_err ) ;
BDRV_O_RDWR , true , & error_abort ) ;
bdrv_img_create ( s_hidden_disk , " qcow2 " , NULL , NULL , NULL , IMG_SIZE ,
BDRV_O_RDWR , true , & local_err ) ;
g_assert ( ! local_err ) ;
BDRV_O_RDWR , true , & error_abort ) ;
}
static void cleanup_imgs ( void )
@ -179,7 +173,6 @@ static BlockBackend *start_primary(void)
BlockBackend * blk ;
QemuOpts * opts ;
QDict * qdict ;
Error * local_err = NULL ;
char * cmdline ;
cmdline = g_strdup_printf ( " driver=replication,mode=primary,node-name=xxx, "
@ -193,12 +186,10 @@ static BlockBackend *start_primary(void)
qdict_set_default_str ( qdict , BDRV_OPT_CACHE_DIRECT , " off " ) ;
qdict_set_default_str ( qdict , BDRV_OPT_CACHE_NO_FLUSH , " off " ) ;
blk = blk_new_open ( NULL , NULL , qdict , BDRV_O_RDWR , & local_ err) ;
blk = blk_new_open ( NULL , NULL , qdict , BDRV_O_RDWR , & error_abort ) ;
g_assert ( blk ) ;
g_assert ( ! local_err ) ;
monitor_add_blk ( blk , P_ID , & local_err ) ;
g_assert ( ! local_err ) ;
monitor_add_blk ( blk , P_ID , & error_abort ) ;
qemu_opts_del ( opts ) ;
@ -248,12 +239,10 @@ static void test_primary_write(void)
static void test_primary_start ( void )
{
BlockBackend * blk = NULL ;
Error * local_err = NULL ;
blk = start_primary ( ) ;
replication_start_all ( REPLICATION_MODE_PRIMARY , & local_err ) ;
g_assert ( ! local_err ) ;
replication_start_all ( REPLICATION_MODE_PRIMARY , & error_abort ) ;
/* read from 0 to IMG_SIZE */
test_blk_read ( blk , 0 , 0 , IMG_SIZE , 0 , IMG_SIZE , true ) ;
@ -266,46 +255,35 @@ static void test_primary_start(void)
static void test_primary_stop ( void )
{
Error * local_err = NULL ;
bool failover = true ;
start_primary ( ) ;
replication_start_all ( REPLICATION_MODE_PRIMARY , & local_err ) ;
g_assert ( ! local_err ) ;
replication_start_all ( REPLICATION_MODE_PRIMARY , & error_abort ) ;
replication_stop_all ( failover , & local_err ) ;
g_assert ( ! local_err ) ;
replication_stop_all ( failover , & error_abort ) ;
teardown_primary ( ) ;
}
static void test_primary_do_checkpoint ( void )
{
Error * local_err = NULL ;
start_primary ( ) ;
replication_start_all ( REPLICATION_MODE_PRIMARY , & local_err ) ;
g_assert ( ! local_err ) ;
replication_start_all ( REPLICATION_MODE_PRIMARY , & error_abort ) ;
replication_do_checkpoint_all ( & local_err ) ;
g_assert ( ! local_err ) ;
replication_do_checkpoint_all ( & error_abort ) ;
teardown_primary ( ) ;
}
static void test_primary_get_error_all ( void )
{
Error * local_err = NULL ;
start_primary ( ) ;
replication_start_all ( REPLICATION_MODE_PRIMARY , & local_err ) ;
g_assert ( ! local_err ) ;
replication_start_all ( REPLICATION_MODE_PRIMARY , & error_abort ) ;
replication_get_error_all ( & local_err ) ;
g_assert ( ! local_err ) ;
replication_get_error_all ( & error_abort ) ;
teardown_primary ( ) ;
}
@ -316,7 +294,6 @@ static BlockBackend *start_secondary(void)
QDict * qdict ;
BlockBackend * blk ;
char * cmdline ;
Error * local_err = NULL ;
/* add s_local_disk and forge S_LOCAL_DISK_ID */
cmdline = g_strdup_printf ( " file.filename=%s,driver=qcow2, "
@ -329,10 +306,9 @@ static BlockBackend *start_secondary(void)
qdict_set_default_str ( qdict , BDRV_OPT_CACHE_DIRECT , " off " ) ;
qdict_set_default_str ( qdict , BDRV_OPT_CACHE_NO_FLUSH , " off " ) ;
blk = blk_new_open ( NULL , NULL , qdict , BDRV_O_RDWR , & local_ err) ;
blk = blk_new_open ( NULL , NULL , qdict , BDRV_O_RDWR , & error_abort ) ;
assert ( blk ) ;
monitor_add_blk ( blk , S_LOCAL_DISK_ID , & local_err ) ;
g_assert ( ! local_err ) ;
monitor_add_blk ( blk , S_LOCAL_DISK_ID , & error_abort ) ;
/* format s_local_disk with pattern "0x11" */
test_blk_write ( blk , 0x11 , 0 , IMG_SIZE , false ) ;
@ -356,10 +332,9 @@ static BlockBackend *start_secondary(void)
qdict_set_default_str ( qdict , BDRV_OPT_CACHE_DIRECT , " off " ) ;
qdict_set_default_str ( qdict , BDRV_OPT_CACHE_NO_FLUSH , " off " ) ;
blk = blk_new_open ( NULL , NULL , qdict , BDRV_O_RDWR , & local_ err) ;
blk = blk_new_open ( NULL , NULL , qdict , BDRV_O_RDWR , & error_abort ) ;
assert ( blk ) ;
monitor_add_blk ( blk , S_ID , & local_err ) ;
g_assert ( ! local_err ) ;
monitor_add_blk ( blk , S_ID , & error_abort ) ;
qemu_opts_del ( opts ) ;
@ -420,12 +395,10 @@ static void test_secondary_write(void)
static void test_secondary_start ( void )
{
BlockBackend * top_blk , * local_blk ;
Error * local_err = NULL ;
bool failover = true ;
top_blk = start_secondary ( ) ;
replication_start_all ( REPLICATION_MODE_SECONDARY , & local_err ) ;
g_assert ( ! local_err ) ;
replication_start_all ( REPLICATION_MODE_SECONDARY , & error_abort ) ;
/* read from s_local_disk (0, IMG_SIZE) */
test_blk_read ( top_blk , 0x11 , 0 , IMG_SIZE , 0 , IMG_SIZE , false ) ;
@ -446,8 +419,7 @@ static void test_secondary_start(void)
0 , IMG_SIZE / 2 , false ) ;
/* unblock top_bs */
replication_stop_all ( failover , & local_err ) ;
g_assert ( ! local_err ) ;
replication_stop_all ( failover , & error_abort ) ;
teardown_secondary ( ) ;
}
@ -456,12 +428,10 @@ static void test_secondary_start(void)
static void test_secondary_stop ( void )
{
BlockBackend * top_blk , * local_blk ;
Error * local_err = NULL ;
bool failover = true ;
top_blk = start_secondary ( ) ;
replication_start_all ( REPLICATION_MODE_SECONDARY , & local_err ) ;
g_assert ( ! local_err ) ;
replication_start_all ( REPLICATION_MODE_SECONDARY , & error_abort ) ;
/* write 0x22 to s_local_disk (IMG_SIZE / 2, IMG_SIZE) */
local_blk = blk_by_name ( S_LOCAL_DISK_ID ) ;
@ -475,8 +445,7 @@ static void test_secondary_stop(void)
test_blk_write ( top_blk , 0x33 , 0 , IMG_SIZE / 2 , false ) ;
/* do active commit */
replication_stop_all ( failover , & local_err ) ;
g_assert ( ! local_err ) ;
replication_stop_all ( failover , & error_abort ) ;
/* read from s_local_disk (0, IMG_SIZE / 2) */
test_blk_read ( top_blk , 0x33 , 0 , IMG_SIZE / 2 ,
@ -493,11 +462,9 @@ static void test_secondary_stop(void)
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 ) ;
replication_start_all ( REPLICATION_MODE_SECONDARY , & error_abort ) ;
/* write 0x22 to s_local_disk (IMG_SIZE / 2, IMG_SIZE) */
local_blk = blk_by_name ( S_LOCAL_DISK_ID ) ;
@ -511,22 +478,18 @@ static void test_secondary_continuous_replication(void)
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 ) ;
replication_stop_all ( true , & error_abort ) ;
/* it should ignore all requests from now on */
/* start after failover */
replication_start_all ( REPLICATION_MODE_PRIMARY , & local_err ) ;
g_assert ( ! local_err ) ;
replication_start_all ( REPLICATION_MODE_PRIMARY , & error_abort ) ;
/* checkpoint */
replication_do_checkpoint_all ( & local_err ) ;
g_assert ( ! local_err ) ;
replication_do_checkpoint_all ( & error_abort ) ;
/* stop */
replication_stop_all ( true , & local_err ) ;
g_assert ( ! local_err ) ;
replication_stop_all ( true , & error_abort ) ;
/* read from s_local_disk (0, IMG_SIZE / 2) */
test_blk_read ( top_blk , 0x33 , 0 , IMG_SIZE / 2 ,
@ -543,12 +506,10 @@ static void test_secondary_continuous_replication(void)
static void test_secondary_do_checkpoint ( void )
{
BlockBackend * top_blk , * local_blk ;
Error * local_err = NULL ;
bool failover = true ;
top_blk = start_secondary ( ) ;
replication_start_all ( REPLICATION_MODE_SECONDARY , & local_err ) ;
g_assert ( ! local_err ) ;
replication_start_all ( REPLICATION_MODE_SECONDARY , & error_abort ) ;
/* write 0x22 to s_local_disk (IMG_SIZE / 2, IMG_SIZE) */
local_blk = blk_by_name ( S_LOCAL_DISK_ID ) ;
@ -559,35 +520,29 @@ static void test_secondary_do_checkpoint(void)
test_blk_read ( top_blk , 0x11 , IMG_SIZE / 2 ,
IMG_SIZE / 2 , 0 , IMG_SIZE , false ) ;
replication_do_checkpoint_all ( & local_err ) ;
g_assert ( ! local_err ) ;
replication_do_checkpoint_all ( & error_abort ) ;
/* after checkpoint, read pattern 0x22 from s_local_disk */
test_blk_read ( top_blk , 0x22 , IMG_SIZE / 2 ,
IMG_SIZE / 2 , 0 , IMG_SIZE , false ) ;
/* unblock top_bs */
replication_stop_all ( failover , & local_err ) ;
g_assert ( ! local_err ) ;
replication_stop_all ( failover , & error_abort ) ;
teardown_secondary ( ) ;
}
static void test_secondary_get_error_all ( void )
{
Error * local_err = NULL ;
bool failover = true ;
start_secondary ( ) ;
replication_start_all ( REPLICATION_MODE_SECONDARY , & local_err ) ;
g_assert ( ! local_err ) ;
replication_start_all ( REPLICATION_MODE_SECONDARY , & error_abort ) ;
replication_get_error_all ( & local_err ) ;
g_assert ( ! local_err ) ;
replication_get_error_all ( & error_abort ) ;
/* unblock top_bs */
replication_stop_all ( failover , & local_err ) ;
g_assert ( ! local_err ) ;
replication_stop_all ( failover , & error_abort ) ;
teardown_secondary ( ) ;
}