Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com>
On Thu, Oct 1, 2015 at 2:54 PM, Michael S. Tsirkin <m...@redhat.com> 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 <m...@redhat.com> > --- > 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