[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v6 3/3] test-qga: add test for guest-get-osinfo
From: |
Marc-André Lureau |
Subject: |
Re: [Qemu-devel] [PATCH v6 3/3] test-qga: add test for guest-get-osinfo |
Date: |
Fri, 30 Jun 2017 13:48:41 +0000 |
Hi,
It's missing test-qga-os-release :)
On Thu, Jun 29, 2017 at 11:27 PM Tomáš Golembiovský <address@hidden>
wrote:
> Add test for guest-get-osinfo command.
>
> Qemu-ga was modified to accept QGA_OS_RELEASE environment variable. If
> the variable is defined it is interpreted as path to the os-release file
> and it is parsed instead of the default paths.
>
> Signed-off-by: Tomáš Golembiovský <address@hidden>
> ---
> qga/commands-posix.c | 13 ++++++++++---
> tests/test-qga.c | 53
> ++++++++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 63 insertions(+), 3 deletions(-)
>
> diff --git a/qga/commands-posix.c b/qga/commands-posix.c
> index 2406518d47..f6ce8dd583 100644
> --- a/qga/commands-posix.c
> +++ b/qga/commands-posix.c
> @@ -2683,9 +2683,16 @@ GuestOSInfo *qmp_guest_get_osinfo(Error **errp)
> info->kernel_release = g_strdup(kinfo.release);
> info->machine_hardware = g_strdup(kinfo.machine);
>
> - GKeyFile *osrelease = ga_parse_osrelease("/etc/os-release");
> - if (osrelease == NULL) {
> - osrelease = ga_parse_osrelease("/usr/lib/os-release");
> + GKeyFile *osrelease = NULL;
> +
> + const char *qga_os_release = g_getenv("QGA_OS_RELEASE");
> + if (qga_os_release != NULL) {
> + osrelease = ga_parse_osrelease(qga_os_release);
> + } else {
> + osrelease = ga_parse_osrelease("/etc/os-release");
> + if (osrelease == NULL) {
> + osrelease = ga_parse_osrelease("/usr/lib/os-release");
> + }
> }
>
> if (osrelease != NULL) {
> diff --git a/tests/test-qga.c b/tests/test-qga.c
> index 631b98639a..b9160708a0 100644
> --- a/tests/test-qga.c
> +++ b/tests/test-qga.c
> @@ -936,6 +936,58 @@ static void test_qga_guest_exec_invalid(gconstpointer
> fix)
> QDECREF(ret);
> }
>
> +static void test_qga_guest_get_osinfo(gconstpointer data)
> +{
> + TestFixture fixture;
> + const gchar *str;
> + gchar *cwd, *env[2];
> + QDict *ret, *val;
> +
> + cwd = g_get_current_dir();
> + env[0] =
> g_strdup_printf("QGA_OS_RELEASE=%s%ctests%cdata%ctest-qga-os-release",
> + cwd, G_DIR_SEPARATOR, G_DIR_SEPARATOR,
> G_DIR_SEPARATOR);
> + env[1] = NULL;
> + g_free(cwd);
> + fixture_setup(&fixture, NULL, env);
> +
> + ret = qmp_fd(fixture.fd, "{'execute': 'guest-get-osinfo'}");
> + g_assert_nonnull(ret);
> + qmp_assert_no_error(ret);
> +
> + val = qdict_get_qdict(ret, "return");
> +
> + str = qdict_get_try_str(val, "id");
> + g_assert_nonnull(str);
> + g_assert_cmpstr(str, ==, "qemu-ga-test");
> +
> + str = qdict_get_try_str(val, "name");
> + g_assert_nonnull(str);
> + g_assert_cmpstr(str, ==, "QEMU-GA");
> +
> + str = qdict_get_try_str(val, "pretty-name");
> + g_assert_nonnull(str);
> + g_assert_cmpstr(str, ==, "QEMU Guest Agent test");
> +
> + str = qdict_get_try_str(val, "version");
> + g_assert_nonnull(str);
> + g_assert_cmpstr(str, ==, "Test 1");
> +
> + str = qdict_get_try_str(val, "version-id");
> + g_assert_nonnull(str);
> + g_assert_cmpstr(str, ==, "1");
> +
> + str = qdict_get_try_str(val, "variant");
> + g_assert_nonnull(str);
> + g_assert_cmpstr(str, ==, "Unit test \"'$`\\ and \\\\ etc.");
> +
> + str = qdict_get_try_str(val, "variant-id");
> + g_assert_nonnull(str);
> + g_assert_cmpstr(str, ==, "unit-test");
> +
> + QDECREF(ret);
> + g_free(env[0]);
> +}
> +
> int main(int argc, char **argv)
> {
> TestFixture fix;
> @@ -972,6 +1024,7 @@ int main(int argc, char **argv)
> g_test_add_data_func("/qga/guest-exec", &fix, test_qga_guest_exec);
> g_test_add_data_func("/qga/guest-exec-invalid", &fix,
> test_qga_guest_exec_invalid);
> + g_test_add_data_func("/qga/guest-get-osinfo", &fix,
> test_qga_guest_get_osinfo);
>
> if (g_getenv("QGA_TEST_SIDE_EFFECTING")) {
> g_test_add_data_func("/qga/fsfreeze-and-thaw", &fix,
> --
> 2.13.1
>
> --
Marc-André Lureau