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>
This commit is contained in:
parent
aa8580cddf
commit
1b7e1e3b46
@ -272,17 +272,11 @@ static void chr_read(void *opaque, const uint8_t *buf, int size)
|
|||||||
g_mutex_unlock(&data_mutex);
|
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;
|
struct statfs fs;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
path = getenv("QTEST_HUGETLBFS_PATH");
|
|
||||||
if (!path) {
|
|
||||||
path = "/hugetlbfs";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (access(path, R_OK | W_OK | X_OK)) {
|
if (access(path, R_OK | W_OK | X_OK)) {
|
||||||
g_test_message("access on path (%s): %s\n", path, strerror(errno));
|
g_test_message("access on path (%s): %s\n", path, strerror(errno));
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -309,19 +303,31 @@ int main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
QTestState *s = NULL;
|
QTestState *s = NULL;
|
||||||
CharDriverState *chr = NULL;
|
CharDriverState *chr = NULL;
|
||||||
const char *hugefs = 0;
|
const char *hugefs;
|
||||||
char *socket_path = 0;
|
char *socket_path = 0;
|
||||||
char *qemu_cmd = 0;
|
char *qemu_cmd = 0;
|
||||||
char *chr_path = 0;
|
char *chr_path = 0;
|
||||||
int ret;
|
int ret;
|
||||||
|
char template[] = "/tmp/vhost-test-XXXXXX";
|
||||||
|
const char *tmpfs;
|
||||||
|
const char *root;
|
||||||
|
|
||||||
g_test_init(&argc, &argv, NULL);
|
g_test_init(&argc, &argv, NULL);
|
||||||
|
|
||||||
module_call_init(MODULE_INIT_QOM);
|
module_call_init(MODULE_INIT_QOM);
|
||||||
|
|
||||||
hugefs = init_hugepagefs();
|
tmpfs = mkdtemp(template);
|
||||||
if (!hugefs) {
|
if (!tmpfs) {
|
||||||
return 0;
|
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());
|
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_cond_init(&data_cond);
|
||||||
g_thread_new(NULL, thread_function, NULL);
|
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);
|
s = qtest_start(qemu_cmd);
|
||||||
g_free(qemu_cmd);
|
g_free(qemu_cmd);
|
||||||
|
|
||||||
@ -354,5 +360,12 @@ int main(int argc, char **argv)
|
|||||||
unlink(socket_path);
|
unlink(socket_path);
|
||||||
g_free(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;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user