mirror of https://github.com/xemu-project/xemu.git
tests/qtest: Move mkimg() and have_qemu_img() from libqos to libqtest
These two functions can be useful for other qtests beside the qos-test, too, so move them to libqtest instead. Message-Id: <20230704071655.75381-3-thuth@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
5a7d4dc9f8
commit
25919c4025
|
@ -137,56 +137,9 @@ void migrate(QOSState *from, QOSState *to, const char *uri)
|
||||||
migrate_allocator(&from->alloc, &to->alloc);
|
migrate_allocator(&from->alloc, &to->alloc);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool have_qemu_img(void)
|
|
||||||
{
|
|
||||||
char *rpath;
|
|
||||||
const char *path = getenv("QTEST_QEMU_IMG");
|
|
||||||
if (!path) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
rpath = realpath(path, NULL);
|
|
||||||
if (!rpath) {
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
free(rpath);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void mkimg(const char *file, const char *fmt, unsigned size_mb)
|
|
||||||
{
|
|
||||||
gchar *cli;
|
|
||||||
bool ret;
|
|
||||||
int rc;
|
|
||||||
GError *err = NULL;
|
|
||||||
char *qemu_img_path;
|
|
||||||
gchar *out, *out2;
|
|
||||||
char *qemu_img_abs_path;
|
|
||||||
|
|
||||||
qemu_img_path = getenv("QTEST_QEMU_IMG");
|
|
||||||
g_assert(qemu_img_path);
|
|
||||||
qemu_img_abs_path = realpath(qemu_img_path, NULL);
|
|
||||||
g_assert(qemu_img_abs_path);
|
|
||||||
|
|
||||||
cli = g_strdup_printf("%s create -f %s %s %uM", qemu_img_abs_path,
|
|
||||||
fmt, file, size_mb);
|
|
||||||
ret = g_spawn_command_line_sync(cli, &out, &out2, &rc, &err);
|
|
||||||
if (err || !g_spawn_check_exit_status(rc, &err)) {
|
|
||||||
fprintf(stderr, "%s\n", err->message);
|
|
||||||
g_error_free(err);
|
|
||||||
}
|
|
||||||
g_assert(ret && !err);
|
|
||||||
|
|
||||||
g_free(out);
|
|
||||||
g_free(out2);
|
|
||||||
g_free(cli);
|
|
||||||
free(qemu_img_abs_path);
|
|
||||||
}
|
|
||||||
|
|
||||||
void mkqcow2(const char *file, unsigned size_mb)
|
void mkqcow2(const char *file, unsigned size_mb)
|
||||||
{
|
{
|
||||||
return mkimg(file, "qcow2", size_mb);
|
g_assert_true(mkimg(file, "qcow2", size_mb));
|
||||||
}
|
}
|
||||||
|
|
||||||
void prepare_blkdebug_script(const char *debug_fn, const char *event)
|
void prepare_blkdebug_script(const char *debug_fn, const char *event)
|
||||||
|
|
|
@ -27,8 +27,6 @@ QOSState *qtest_boot(QOSOps *ops, const char *cmdline_fmt, ...)
|
||||||
G_GNUC_PRINTF(2, 3);
|
G_GNUC_PRINTF(2, 3);
|
||||||
void qtest_common_shutdown(QOSState *qs);
|
void qtest_common_shutdown(QOSState *qs);
|
||||||
void qtest_shutdown(QOSState *qs);
|
void qtest_shutdown(QOSState *qs);
|
||||||
bool have_qemu_img(void);
|
|
||||||
void mkimg(const char *file, const char *fmt, unsigned size_mb);
|
|
||||||
void mkqcow2(const char *file, unsigned size_mb);
|
void mkqcow2(const char *file, unsigned size_mb);
|
||||||
void migrate(QOSState *from, QOSState *to, const char *uri);
|
void migrate(QOSState *from, QOSState *to, const char *uri);
|
||||||
void prepare_blkdebug_script(const char *debug_fn, const char *event);
|
void prepare_blkdebug_script(const char *debug_fn, const char *event);
|
||||||
|
|
|
@ -1742,3 +1742,55 @@ bool qtest_qom_get_bool(QTestState *s, const char *path, const char *property)
|
||||||
|
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool have_qemu_img(void)
|
||||||
|
{
|
||||||
|
char *rpath;
|
||||||
|
const char *path = getenv("QTEST_QEMU_IMG");
|
||||||
|
if (!path) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
rpath = realpath(path, NULL);
|
||||||
|
if (!rpath) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
free(rpath);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool mkimg(const char *file, const char *fmt, unsigned size_mb)
|
||||||
|
{
|
||||||
|
gchar *cli;
|
||||||
|
bool ret;
|
||||||
|
int rc;
|
||||||
|
GError *err = NULL;
|
||||||
|
char *qemu_img_path;
|
||||||
|
gchar *out, *out2;
|
||||||
|
char *qemu_img_abs_path;
|
||||||
|
|
||||||
|
qemu_img_path = getenv("QTEST_QEMU_IMG");
|
||||||
|
if (!qemu_img_path) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
qemu_img_abs_path = realpath(qemu_img_path, NULL);
|
||||||
|
if (!qemu_img_abs_path) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
cli = g_strdup_printf("%s create -f %s %s %uM", qemu_img_abs_path,
|
||||||
|
fmt, file, size_mb);
|
||||||
|
ret = g_spawn_command_line_sync(cli, &out, &out2, &rc, &err);
|
||||||
|
if (err || !g_spawn_check_exit_status(rc, &err)) {
|
||||||
|
fprintf(stderr, "%s\n", err->message);
|
||||||
|
g_error_free(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_free(out);
|
||||||
|
g_free(out2);
|
||||||
|
g_free(cli);
|
||||||
|
free(qemu_img_abs_path);
|
||||||
|
|
||||||
|
return ret && !err;
|
||||||
|
}
|
||||||
|
|
|
@ -994,4 +994,24 @@ bool qtest_qom_get_bool(QTestState *s, const char *path, const char *property);
|
||||||
*/
|
*/
|
||||||
pid_t qtest_pid(QTestState *s);
|
pid_t qtest_pid(QTestState *s);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* have_qemu_img:
|
||||||
|
*
|
||||||
|
* Returns: true if "qemu-img" is available.
|
||||||
|
*/
|
||||||
|
bool have_qemu_img(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mkimg:
|
||||||
|
* @file: File name of the image that should be created
|
||||||
|
* @fmt: Format, e.g. "qcow2" or "raw"
|
||||||
|
* @size_mb: Size of the image in megabytes
|
||||||
|
*
|
||||||
|
* Create a disk image with qemu-img. Note that the QTEST_QEMU_IMG
|
||||||
|
* environment variable must point to the qemu-img file.
|
||||||
|
*
|
||||||
|
* Returns: true if the image has been created successfully.
|
||||||
|
*/
|
||||||
|
bool mkimg(const char *file, const char *fmt, unsigned size_mb);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue