aboutsummaryrefslogtreecommitdiff
path: root/tests/vhost-user-test.c
diff options
context:
space:
mode:
authorMichael S. Tsirkin <mst@redhat.com>2015-09-30 18:01:21 +0300
committerMichael S. Tsirkin <mst@redhat.com>2015-10-02 17:04:32 +0300
commit1b7e1e3b463a6e5c117498b192cb07603c04b668 (patch)
treea9179f7e7bef1f155f0a36314f06d7a9e83e0ea4 /tests/vhost-user-test.c
parentaa8580cddf011e8cedcf87f7a0fdea7549fc4704 (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.c37
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;
}