[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1/2] vhost-user-test: use tmpfs by default
From: |
Marc-André Lureau |
Subject: |
Re: [Qemu-devel] [PATCH 1/2] vhost-user-test: use tmpfs by default |
Date: |
Thu, 1 Oct 2015 19:09:46 +0200 |
Reviewed-by: Marc-André Lureau <address@hidden>
On Thu, Oct 1, 2015 at 2:54 PM, Michael S. Tsirkin <address@hidden> wrote:
> Most people don't run make check by default, so they skip vhost-user
> unit tests. Solve this by using tmpfs instead, unless hugetlbfs is
> specified (using an environment variable).
>
> Signed-off-by: Michael S. Tsirkin <address@hidden>
> ---
> tests/vhost-user-test.c | 37 +++++++++++++++++++++++++------------
> 1 file changed, 25 insertions(+), 12 deletions(-)
>
> diff --git a/tests/vhost-user-test.c b/tests/vhost-user-test.c
> index 87281b9..5e63cbc 100644
> --- a/tests/vhost-user-test.c
> +++ b/tests/vhost-user-test.c
> @@ -272,17 +272,11 @@ static void chr_read(void *opaque, const uint8_t *buf,
> int size)
> g_mutex_unlock(&data_mutex);
> }
>
> -static const char *init_hugepagefs(void)
> +static const char *init_hugepagefs(const char *path)
> {
> - const char *path;
> struct statfs fs;
> int ret;
>
> - path = getenv("QTEST_HUGETLBFS_PATH");
> - if (!path) {
> - path = "/hugetlbfs";
> - }
> -
> if (access(path, R_OK | W_OK | X_OK)) {
> g_test_message("access on path (%s): %s\n", path, strerror(errno));
> return NULL;
> @@ -309,19 +303,31 @@ int main(int argc, char **argv)
> {
> QTestState *s = NULL;
> CharDriverState *chr = NULL;
> - const char *hugefs = 0;
> + const char *hugefs;
> char *socket_path = 0;
> char *qemu_cmd = 0;
> char *chr_path = 0;
> int ret;
> + char template[] = "/tmp/vhost-test-XXXXXX";
> + const char *tmpfs;
> + const char *root;
>
> g_test_init(&argc, &argv, NULL);
>
> module_call_init(MODULE_INIT_QOM);
>
> - hugefs = init_hugepagefs();
> - if (!hugefs) {
> - return 0;
> + tmpfs = mkdtemp(template);
> + if (!tmpfs) {
> + g_test_message("mkdtemp on path (%s): %s\n", template,
> strerror(errno));
> + }
> + g_assert(tmpfs);
> +
> + hugefs = getenv("QTEST_HUGETLBFS_PATH");
> + if (hugefs) {
> + root = init_hugepagefs(hugefs);
> + g_assert(root);
> + } else {
> + root = tmpfs;
> }
>
> socket_path = g_strdup_printf("/tmp/vhost-%d.sock", getpid());
> @@ -338,7 +344,7 @@ int main(int argc, char **argv)
> g_cond_init(&data_cond);
> g_thread_new(NULL, thread_function, NULL);
>
> - qemu_cmd = g_strdup_printf(QEMU_CMD, hugefs, socket_path);
> + qemu_cmd = g_strdup_printf(QEMU_CMD, root, socket_path);
> s = qtest_start(qemu_cmd);
> g_free(qemu_cmd);
>
> @@ -354,5 +360,12 @@ int main(int argc, char **argv)
> unlink(socket_path);
> g_free(socket_path);
>
> + ret = rmdir(tmpfs);
> + if (ret != 0) {
> + g_test_message("unable to rmdir: path (%s): %s\n",
> + tmpfs, strerror(errno));
> + }
> + g_assert_cmpint(ret, ==, 0);
> +
> return ret;
> }
> --
> MST
>
>
--
Marc-André Lureau