tests: Refactor setting of parameters/capabilities
So we can use them in future tests Signed-off-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
This commit is contained in:
		
							parent
							
								
									2656bfd973
								
							
						
					
					
						commit
						d62fbe6039
					
				| 
						 | 
					@ -351,12 +351,69 @@ static void cleanup(const char *filename)
 | 
				
			||||||
    g_free(path);
 | 
					    g_free(path);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void migrate_set_downtime(QTestState *who, const char *value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    QDict *rsp;
 | 
				
			||||||
 | 
					    gchar *cmd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd = g_strdup_printf("{ 'execute': 'migrate_set_downtime',"
 | 
				
			||||||
 | 
					                          "'arguments': { 'value': %s } }", value);
 | 
				
			||||||
 | 
					    rsp = qtest_qmp(who, cmd);
 | 
				
			||||||
 | 
					    g_free(cmd);
 | 
				
			||||||
 | 
					    g_assert(qdict_haskey(rsp, "return"));
 | 
				
			||||||
 | 
					    QDECREF(rsp);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void migrate_set_speed(QTestState *who, const char *value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    QDict *rsp;
 | 
				
			||||||
 | 
					    gchar *cmd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd = g_strdup_printf("{ 'execute': 'migrate_set_speed',"
 | 
				
			||||||
 | 
					                          "'arguments': { 'value': %s } }", value);
 | 
				
			||||||
 | 
					    rsp = qtest_qmp(who, cmd);
 | 
				
			||||||
 | 
					    g_free(cmd);
 | 
				
			||||||
 | 
					    g_assert(qdict_haskey(rsp, "return"));
 | 
				
			||||||
 | 
					    QDECREF(rsp);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void migrate_set_capability(QTestState *who, const char *capability,
 | 
				
			||||||
 | 
					                                   const char *value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    QDict *rsp;
 | 
				
			||||||
 | 
					    gchar *cmd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd = g_strdup_printf("{ 'execute': 'migrate-set-capabilities',"
 | 
				
			||||||
 | 
					                          "'arguments': { "
 | 
				
			||||||
 | 
					                          "'capabilities': [ { "
 | 
				
			||||||
 | 
					                          "'capability': '%s', 'state': %s } ] } }",
 | 
				
			||||||
 | 
					                          capability, value);
 | 
				
			||||||
 | 
					    rsp = qtest_qmp(who, cmd);
 | 
				
			||||||
 | 
					    g_free(cmd);
 | 
				
			||||||
 | 
					    g_assert(qdict_haskey(rsp, "return"));
 | 
				
			||||||
 | 
					    QDECREF(rsp);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void migrate(QTestState *who, const char *uri)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    QDict *rsp;
 | 
				
			||||||
 | 
					    gchar *cmd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd = g_strdup_printf("{ 'execute': 'migrate',"
 | 
				
			||||||
 | 
					                          "'arguments': { 'uri': '%s' } }",
 | 
				
			||||||
 | 
					                          uri);
 | 
				
			||||||
 | 
					    rsp = qtest_qmp(who, cmd);
 | 
				
			||||||
 | 
					    g_free(cmd);
 | 
				
			||||||
 | 
					    g_assert(qdict_haskey(rsp, "return"));
 | 
				
			||||||
 | 
					    QDECREF(rsp);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void test_migrate(void)
 | 
					static void test_migrate(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
 | 
					    char *uri = g_strdup_printf("unix:%s/migsocket", tmpfs);
 | 
				
			||||||
    QTestState *global = global_qtest, *from, *to;
 | 
					    QTestState *global = global_qtest, *from, *to;
 | 
				
			||||||
    unsigned char dest_byte_a, dest_byte_b, dest_byte_c, dest_byte_d;
 | 
					    unsigned char dest_byte_a, dest_byte_b, dest_byte_c, dest_byte_d;
 | 
				
			||||||
    gchar *cmd, *cmd_src, *cmd_dst;
 | 
					    gchar *cmd_src, *cmd_dst;
 | 
				
			||||||
    QDict *rsp;
 | 
					    QDict *rsp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    char *bootpath = g_strdup_printf("%s/bootsect", tmpfs);
 | 
					    char *bootpath = g_strdup_printf("%s/bootsect", tmpfs);
 | 
				
			||||||
| 
						 | 
					@ -405,52 +462,22 @@ static void test_migrate(void)
 | 
				
			||||||
    to = qtest_init(cmd_dst);
 | 
					    to = qtest_init(cmd_dst);
 | 
				
			||||||
    g_free(cmd_dst);
 | 
					    g_free(cmd_dst);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    global_qtest = from;
 | 
					    migrate_set_capability(from, "postcopy-ram", "true");
 | 
				
			||||||
    rsp = qmp("{ 'execute': 'migrate-set-capabilities',"
 | 
					    migrate_set_capability(to, "postcopy-ram", "true");
 | 
				
			||||||
                  "'arguments': { "
 | 
					 | 
				
			||||||
                      "'capabilities': [ {"
 | 
					 | 
				
			||||||
                          "'capability': 'postcopy-ram',"
 | 
					 | 
				
			||||||
                          "'state': true } ] } }");
 | 
					 | 
				
			||||||
    g_assert(qdict_haskey(rsp, "return"));
 | 
					 | 
				
			||||||
    QDECREF(rsp);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    global_qtest = to;
 | 
					 | 
				
			||||||
    rsp = qmp("{ 'execute': 'migrate-set-capabilities',"
 | 
					 | 
				
			||||||
                  "'arguments': { "
 | 
					 | 
				
			||||||
                      "'capabilities': [ {"
 | 
					 | 
				
			||||||
                          "'capability': 'postcopy-ram',"
 | 
					 | 
				
			||||||
                          "'state': true } ] } }");
 | 
					 | 
				
			||||||
    g_assert(qdict_haskey(rsp, "return"));
 | 
					 | 
				
			||||||
    QDECREF(rsp);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* We want to pick a speed slow enough that the test completes
 | 
					    /* We want to pick a speed slow enough that the test completes
 | 
				
			||||||
     * quickly, but that it doesn't complete precopy even on a slow
 | 
					     * quickly, but that it doesn't complete precopy even on a slow
 | 
				
			||||||
     * machine, so also set the downtime.
 | 
					     * machine, so also set the downtime.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    global_qtest = from;
 | 
					    migrate_set_speed(from, "100000000");
 | 
				
			||||||
    rsp = qmp("{ 'execute': 'migrate_set_speed',"
 | 
					    migrate_set_downtime(from, "0.001");
 | 
				
			||||||
              "'arguments': { 'value': 100000000 } }");
 | 
					 | 
				
			||||||
    g_assert(qdict_haskey(rsp, "return"));
 | 
					 | 
				
			||||||
    QDECREF(rsp);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /* 1ms downtime - it should never finish precopy */
 | 
					 | 
				
			||||||
    rsp = qmp("{ 'execute': 'migrate_set_downtime',"
 | 
					 | 
				
			||||||
              "'arguments': { 'value': 0.001 } }");
 | 
					 | 
				
			||||||
    g_assert(qdict_haskey(rsp, "return"));
 | 
					 | 
				
			||||||
    QDECREF(rsp);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Wait for the first serial output from the source */
 | 
					    /* Wait for the first serial output from the source */
 | 
				
			||||||
    wait_for_serial("src_serial");
 | 
					    wait_for_serial("src_serial");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cmd = g_strdup_printf("{ 'execute': 'migrate',"
 | 
					    migrate(from, uri);
 | 
				
			||||||
                          "'arguments': { 'uri': '%s' } }",
 | 
					 | 
				
			||||||
                          uri);
 | 
					 | 
				
			||||||
    rsp = qmp(cmd);
 | 
					 | 
				
			||||||
    g_free(cmd);
 | 
					 | 
				
			||||||
    g_assert(qdict_haskey(rsp, "return"));
 | 
					 | 
				
			||||||
    QDECREF(rsp);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    global_qtest = from;
 | 
				
			||||||
    wait_for_migration_pass();
 | 
					    wait_for_migration_pass();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rsp = return_or_event(qmp("{ 'execute': 'migrate-start-postcopy' }"));
 | 
					    rsp = return_or_event(qmp("{ 'execute': 'migrate-start-postcopy' }"));
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue