提交 1b7e1e3b 编写于 作者: M Michael S. Tsirkin

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: NMichael S. Tsirkin <mst@redhat.com>
Reviewed-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
上级 aa8580cd
......@@ -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;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册