diff options
author | Michael S. Tsirkin <mst@redhat.com> | 2015-09-30 18:01:21 +0300 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2015-10-02 17:04:32 +0300 |
commit | 1b7e1e3b463a6e5c117498b192cb07603c04b668 (patch) | |
tree | a9179f7e7bef1f155f0a36314f06d7a9e83e0ea4 /tests/vhost-user-test.c | |
parent | aa8580cddf011e8cedcf87f7a0fdea7549fc4704 (diff) |
vhost-user-test: use tmpfs by default
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 <mst@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Diffstat (limited to 'tests/vhost-user-test.c')
-rw-r--r-- | tests/vhost-user-test.c | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/tests/vhost-user-test.c b/tests/vhost-user-test.c index 87281b9d9f..5e63cbc112 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; } |