diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/benchmark-crypto-cipher.c | 4 | ||||
| -rw-r--r-- | tests/benchmark-crypto-hash.c | 4 | ||||
| -rw-r--r-- | tests/benchmark-crypto-hmac.c | 4 | ||||
| -rw-r--r-- | tests/crypto-tls-x509-helpers.c | 3 | ||||
| -rw-r--r-- | tests/io-channel-helpers.c | 102 | ||||
| -rwxr-xr-x | tests/qemu-iotests/194 | 103 | ||||
| -rw-r--r-- | tests/qemu-iotests/iotests.py | 26 | ||||
| -rw-r--r-- | tests/test-io-channel-tls.c | 6 | ||||
| -rw-r--r-- | tests/test-iov.c | 10 | ||||
| -rw-r--r-- | tests/vhost-user-test.c | 17 | ||||
| -rw-r--r-- | tests/vmgenid-test.c | 4 |
11 files changed, 114 insertions, 169 deletions
diff --git a/tests/benchmark-crypto-cipher.c b/tests/benchmark-crypto-cipher.c index c6a40929e4..cf98443468 100644 --- a/tests/benchmark-crypto-cipher.c +++ b/tests/benchmark-crypto-cipher.c @@ -59,7 +59,7 @@ static void test_cipher_speed(const void *opaque) total /= 1024 * 1024; /* to MB */ g_print("cbc(aes128): "); - g_print("Testing chunk_size %ld bytes ", chunk_size); + g_print("Testing chunk_size %zu bytes ", chunk_size); g_print("done: %.2f MB in %.2f secs: ", total, g_test_timer_last()); g_print("%.2f MB/sec\n", total / g_test_timer_last()); @@ -80,7 +80,7 @@ int main(int argc, char **argv) for (i = 512; i <= (64 * 1204); i *= 2) { memset(name, 0 , sizeof(name)); - snprintf(name, sizeof(name), "/crypto/cipher/speed-%lu", i); + snprintf(name, sizeof(name), "/crypto/cipher/speed-%zu", i); g_test_add_data_func(name, (void *)i, test_cipher_speed); } diff --git a/tests/benchmark-crypto-hash.c b/tests/benchmark-crypto-hash.c index 6769d2a11b..122bfb6b85 100644 --- a/tests/benchmark-crypto-hash.c +++ b/tests/benchmark-crypto-hash.c @@ -41,7 +41,7 @@ static void test_hash_speed(const void *opaque) total /= 1024 * 1024; /* to MB */ g_print("sha256: "); - g_print("Testing chunk_size %ld bytes ", chunk_size); + g_print("Testing chunk_size %zu bytes ", chunk_size); g_print("done: %.2f MB in %.2f secs: ", total, g_test_timer_last()); g_print("%.2f MB/sec\n", total / g_test_timer_last()); @@ -59,7 +59,7 @@ int main(int argc, char **argv) for (i = 512; i <= (64 * 1204); i *= 2) { memset(name, 0 , sizeof(name)); - snprintf(name, sizeof(name), "/crypto/hash/speed-%lu", i); + snprintf(name, sizeof(name), "/crypto/hash/speed-%zu", i); g_test_add_data_func(name, (void *)i, test_hash_speed); } diff --git a/tests/benchmark-crypto-hmac.c b/tests/benchmark-crypto-hmac.c index 72408be987..c30250df3e 100644 --- a/tests/benchmark-crypto-hmac.c +++ b/tests/benchmark-crypto-hmac.c @@ -56,7 +56,7 @@ static void test_hmac_speed(const void *opaque) total /= 1024 * 1024; /* to MB */ g_print("hmac(sha256): "); - g_print("Testing chunk_size %ld bytes ", chunk_size); + g_print("Testing chunk_size %zu bytes ", chunk_size); g_print("done: %.2f MB in %.2f secs: ", total, g_test_timer_last()); g_print("%.2f MB/sec\n", total / g_test_timer_last()); @@ -74,7 +74,7 @@ int main(int argc, char **argv) for (i = 512; i <= (64 * 1204); i *= 2) { memset(name, 0 , sizeof(name)); - snprintf(name, sizeof(name), "/crypto/hmac/speed-%lu", i); + snprintf(name, sizeof(name), "/crypto/hmac/speed-%zu", i); g_test_add_data_func(name, (void *)i, test_hmac_speed); } diff --git a/tests/crypto-tls-x509-helpers.c b/tests/crypto-tls-x509-helpers.c index 64073d3bd3..173d4e28fb 100644 --- a/tests/crypto-tls-x509-helpers.c +++ b/tests/crypto-tls-x509-helpers.c @@ -406,7 +406,8 @@ test_tls_generate_cert(QCryptoTLSTestCertReq *req, * If no 'ca' is set then we are self signing * the cert. This is done for the root CA certs */ - err = gnutls_x509_crt_sign(crt, ca ? ca : crt, privkey); + err = gnutls_x509_crt_sign2(crt, ca ? ca : crt, privkey, + GNUTLS_DIG_SHA256, 0); if (err < 0) { g_critical("Failed to sign certificate %s", gnutls_strerror(err)); diff --git a/tests/io-channel-helpers.c b/tests/io-channel-helpers.c index 05e5579cf8..5430e1389d 100644 --- a/tests/io-channel-helpers.c +++ b/tests/io-channel-helpers.c @@ -21,6 +21,7 @@ #include "qemu/osdep.h" #include "io-channel-helpers.h" #include "qapi/error.h" +#include "qemu/iov.h" struct QIOChannelTest { QIOChannel *src; @@ -37,77 +38,17 @@ struct QIOChannelTest { }; -static void test_skip_iovec(struct iovec **iov, - size_t *niov, - size_t skip, - struct iovec *old) -{ - size_t offset = 0; - size_t i; - - for (i = 0; i < *niov; i++) { - if (skip < (*iov)[i].iov_len) { - old->iov_len = (*iov)[i].iov_len; - old->iov_base = (*iov)[i].iov_base; - - (*iov)[i].iov_len -= skip; - (*iov)[i].iov_base += skip; - break; - } else { - skip -= (*iov)[i].iov_len; - - if (i == 0 && old->iov_base) { - (*iov)[i].iov_len = old->iov_len; - (*iov)[i].iov_base = old->iov_base; - old->iov_len = 0; - old->iov_base = NULL; - } - - offset++; - } - } - - *iov = *iov + offset; - *niov -= offset; -} - - /* This thread sends all data using iovecs */ static gpointer test_io_thread_writer(gpointer opaque) { QIOChannelTest *data = opaque; - struct iovec *iov = data->inputv; - size_t niov = data->niov; - struct iovec old = { 0 }; qio_channel_set_blocking(data->src, data->blocking, NULL); - while (niov) { - ssize_t ret; - ret = qio_channel_writev(data->src, - iov, - niov, - &data->writeerr); - if (ret == QIO_CHANNEL_ERR_BLOCK) { - if (data->blocking) { - error_setg(&data->writeerr, - "Unexpected I/O blocking"); - break; - } else { - qio_channel_wait(data->src, - G_IO_OUT); - continue; - } - } else if (ret < 0) { - break; - } else if (ret == 0) { - error_setg(&data->writeerr, - "Unexpected zero length write"); - break; - } - - test_skip_iovec(&iov, &niov, ret, &old); - } + qio_channel_writev_all(data->src, + data->inputv, + data->niov, + &data->writeerr); return NULL; } @@ -117,38 +58,13 @@ static gpointer test_io_thread_writer(gpointer opaque) static gpointer test_io_thread_reader(gpointer opaque) { QIOChannelTest *data = opaque; - struct iovec *iov = data->outputv; - size_t niov = data->niov; - struct iovec old = { 0 }; qio_channel_set_blocking(data->dst, data->blocking, NULL); - while (niov) { - ssize_t ret; - - ret = qio_channel_readv(data->dst, - iov, - niov, - &data->readerr); - - if (ret == QIO_CHANNEL_ERR_BLOCK) { - if (data->blocking) { - error_setg(&data->readerr, - "Unexpected I/O blocking"); - break; - } else { - qio_channel_wait(data->dst, - G_IO_IN); - continue; - } - } else if (ret < 0) { - break; - } else if (ret == 0) { - break; - } - - test_skip_iovec(&iov, &niov, ret, &old); - } + qio_channel_readv_all(data->dst, + data->outputv, + data->niov, + &data->readerr); return NULL; } diff --git a/tests/qemu-iotests/194 b/tests/qemu-iotests/194 index a3e3bad664..6449b9b64a 100755 --- a/tests/qemu-iotests/194 +++ b/tests/qemu-iotests/194 @@ -19,66 +19,65 @@ # # Non-shared storage migration test using NBD server and drive-mirror -import os -import atexit import iotests iotests.verify_platform(['linux']) -img_size = '1G' -source_img_path = os.path.join(iotests.test_dir, 'source.img') -dest_img_path = os.path.join(iotests.test_dir, 'dest.img') -iotests.qemu_img_pipe('create', '-f', iotests.imgfmt, source_img_path, img_size) -iotests.qemu_img_pipe('create', '-f', iotests.imgfmt, dest_img_path, img_size) +with iotests.FilePath('source.img') as source_img_path, \ + iotests.FilePath('dest.img') as dest_img_path, \ + iotests.FilePath('migration.sock') as migration_sock_path, \ + iotests.FilePath('nbd.sock') as nbd_sock_path, \ + iotests.VM('source') as source_vm, \ + iotests.VM('dest') as dest_vm: -iotests.log('Launching VMs...') -migration_sock_path = os.path.join(iotests.test_dir, 'migration.sock') -nbd_sock_path = os.path.join(iotests.test_dir, 'nbd.sock') -source_vm = iotests.VM('source').add_drive(source_img_path) -dest_vm = (iotests.VM('dest').add_drive(dest_img_path) - .add_incoming('unix:{0}'.format(migration_sock_path))) -source_vm.launch() -atexit.register(source_vm.shutdown) -dest_vm.launch() -atexit.register(dest_vm.shutdown) + img_size = '1G' + iotests.qemu_img_pipe('create', '-f', iotests.imgfmt, source_img_path, img_size) + iotests.qemu_img_pipe('create', '-f', iotests.imgfmt, dest_img_path, img_size) -iotests.log('Launching NBD server on destination...') -iotests.log(dest_vm.qmp('nbd-server-start', addr={'type': 'unix', 'data': {'path': nbd_sock_path}})) -iotests.log(dest_vm.qmp('nbd-server-add', device='drive0', writable=True)) + iotests.log('Launching VMs...') + (source_vm.add_drive(source_img_path) + .launch()) + (dest_vm.add_drive(dest_img_path) + .add_incoming('unix:{0}'.format(migration_sock_path)) + .launch()) -iotests.log('Starting `drive-mirror` on source...') -iotests.log(source_vm.qmp( - 'drive-mirror', - device='drive0', - target='nbd+unix:///drive0?socket={0}'.format(nbd_sock_path), - sync='full', - format='raw', # always raw, the server handles the format - mode='existing', - job_id='mirror-job0')) + iotests.log('Launching NBD server on destination...') + iotests.log(dest_vm.qmp('nbd-server-start', addr={'type': 'unix', 'data': {'path': nbd_sock_path}})) + iotests.log(dest_vm.qmp('nbd-server-add', device='drive0', writable=True)) -iotests.log('Waiting for `drive-mirror` to complete...') -iotests.log(source_vm.event_wait('BLOCK_JOB_READY'), - filters=[iotests.filter_qmp_event]) + iotests.log('Starting `drive-mirror` on source...') + iotests.log(source_vm.qmp( + 'drive-mirror', + device='drive0', + target='nbd+unix:///drive0?socket={0}'.format(nbd_sock_path), + sync='full', + format='raw', # always raw, the server handles the format + mode='existing', + job_id='mirror-job0')) -iotests.log('Starting migration...') -source_vm.qmp('migrate-set-capabilities', - capabilities=[{'capability': 'events', 'state': True}]) -dest_vm.qmp('migrate-set-capabilities', - capabilities=[{'capability': 'events', 'state': True}]) -iotests.log(source_vm.qmp('migrate', uri='unix:{0}'.format(migration_sock_path))) + iotests.log('Waiting for `drive-mirror` to complete...') + iotests.log(source_vm.event_wait('BLOCK_JOB_READY'), + filters=[iotests.filter_qmp_event]) -while True: - event1 = source_vm.event_wait('MIGRATION') - iotests.log(event1, filters=[iotests.filter_qmp_event]) - if event1['data']['status'] in ('completed', 'failed'): - iotests.log('Gracefully ending the `drive-mirror` job on source...') - iotests.log(source_vm.qmp('block-job-cancel', device='mirror-job0')) - break + iotests.log('Starting migration...') + source_vm.qmp('migrate-set-capabilities', + capabilities=[{'capability': 'events', 'state': True}]) + dest_vm.qmp('migrate-set-capabilities', + capabilities=[{'capability': 'events', 'state': True}]) + iotests.log(source_vm.qmp('migrate', uri='unix:{0}'.format(migration_sock_path))) -while True: - event2 = source_vm.event_wait('BLOCK_JOB_COMPLETED') - iotests.log(event2, filters=[iotests.filter_qmp_event]) - if event2['event'] == 'BLOCK_JOB_COMPLETED': - iotests.log('Stopping the NBD server on destination...') - iotests.log(dest_vm.qmp('nbd-server-stop')) - break + while True: + event1 = source_vm.event_wait('MIGRATION') + iotests.log(event1, filters=[iotests.filter_qmp_event]) + if event1['data']['status'] in ('completed', 'failed'): + iotests.log('Gracefully ending the `drive-mirror` job on source...') + iotests.log(source_vm.qmp('block-job-cancel', device='mirror-job0')) + break + + while True: + event2 = source_vm.event_wait('BLOCK_JOB_COMPLETED') + iotests.log(event2, filters=[iotests.filter_qmp_event]) + if event2['event'] == 'BLOCK_JOB_COMPLETED': + iotests.log('Stopping the NBD server on destination...') + iotests.log(dest_vm.qmp('nbd-server-stop')) + break diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py index 7233983f3c..07fa1626a0 100644 --- a/tests/qemu-iotests/iotests.py +++ b/tests/qemu-iotests/iotests.py @@ -160,6 +160,32 @@ class Timeout: def timeout(self, signum, frame): raise Exception(self.errmsg) + +class FilePath(object): + '''An auto-generated filename that cleans itself up. + + Use this context manager to generate filenames and ensure that the file + gets deleted:: + + with TestFilePath('test.img') as img_path: + qemu_img('create', img_path, '1G') + # migration_sock_path is automatically deleted + ''' + def __init__(self, name): + filename = '{0}-{1}'.format(os.getpid(), name) + self.path = os.path.join(test_dir, filename) + + def __enter__(self): + return self.path + + def __exit__(self, exc_type, exc_val, exc_tb): + try: + os.remove(self.path) + except OSError: + pass + return False + + class VM(qtest.QEMUQtestMachine): '''A QEMU VM''' diff --git a/tests/test-io-channel-tls.c b/tests/test-io-channel-tls.c index 8eaa208e1b..a210d01ba5 100644 --- a/tests/test-io-channel-tls.c +++ b/tests/test-io-channel-tls.c @@ -127,8 +127,8 @@ static void test_io_channel_tls(const void *opaque) /* We'll use this for our fake client-server connection */ g_assert(socketpair(AF_UNIX, SOCK_STREAM, 0, channel) == 0); -#define CLIENT_CERT_DIR "tests/test-crypto-tlssession-client/" -#define SERVER_CERT_DIR "tests/test-crypto-tlssession-server/" +#define CLIENT_CERT_DIR "tests/test-io-channel-tls-client/" +#define SERVER_CERT_DIR "tests/test-io-channel-tls-server/" mkdir(CLIENT_CERT_DIR, 0700); mkdir(SERVER_CERT_DIR, 0700); @@ -218,7 +218,7 @@ static void test_io_channel_tls(const void *opaque) mainloop = g_main_context_default(); do { g_main_context_iteration(mainloop, TRUE); - } while (!clientHandshake.finished && + } while (!clientHandshake.finished || !serverHandshake.finished); g_assert(clientHandshake.failed == data->expectClientFail); diff --git a/tests/test-iov.c b/tests/test-iov.c index fa3d75aee1..458ca25099 100644 --- a/tests/test-iov.c +++ b/tests/test-iov.c @@ -81,17 +81,17 @@ static void test_to_from_buf_1(void) * skip whole vector and process exactly 0 bytes */ /* first set bytes [i..sz) to some "random" value */ - n = iov_memset(iov, niov, 0, 0xff, -1); + n = iov_memset(iov, niov, 0, 0xff, sz); g_assert(n == sz); /* next copy bytes [i..sz) from ibuf to iovec */ - n = iov_from_buf(iov, niov, i, ibuf + i, -1); + n = iov_from_buf(iov, niov, i, ibuf + i, sz - i); g_assert(n == sz - i); /* clear part of obuf */ memset(obuf + i, 0, sz - i); /* and set this part of obuf to values from iovec */ - n = iov_to_buf(iov, niov, i, obuf + i, -1); + n = iov_to_buf(iov, niov, i, obuf + i, sz - i); g_assert(n == sz - i); /* now compare resulting buffers */ @@ -109,7 +109,7 @@ static void test_to_from_buf_1(void) * with j in [i..sz]. */ /* clear iovec */ - n = iov_memset(iov, niov, 0, 0xff, -1); + n = iov_memset(iov, niov, 0, 0xff, sz); g_assert(n == sz); /* copy bytes [i..j) from ibuf to iovec */ @@ -225,7 +225,7 @@ static void test_io(void) for (i = 0; i <= sz; ++i) { for (j = i; j <= sz; ++j) { k = i; - iov_memset(iov, niov, 0, 0xff, -1); + iov_memset(iov, niov, 0, 0xff, sz); do { s = g_test_rand_int_range(0, j - k + 1); r = iov_recv(sv[0], iov, niov, k, s); diff --git a/tests/vhost-user-test.c b/tests/vhost-user-test.c index d4da09f147..4b98018478 100644 --- a/tests/vhost-user-test.c +++ b/tests/vhost-user-test.c @@ -31,6 +31,8 @@ #include <linux/virtio_net.h> #include <sys/vfs.h> +#define VHOST_USER_NET_TESTS_WORKING 0 /* broken as of 2.10.0 */ + /* GLIB version compatibility flags */ #if !GLIB_CHECK_VERSION(2, 26, 0) #define G_TIME_SPAN_SECOND (G_GINT64_CONSTANT(1000000)) @@ -472,11 +474,6 @@ static void test_server_listen(TestServer *server) test_server_create_chr(server, ",server,nowait"); } -static inline void test_server_connect(TestServer *server) -{ - test_server_create_chr(server, ",reconnect=1"); -} - #define GET_QEMU_CMD(s) \ g_strdup_printf(QEMU_CMD, 512, 512, (root), (s)->chr_name, \ (s)->socket_path, "", (s)->chr_name) @@ -722,7 +719,12 @@ static void wait_for_rings_started(TestServer *s, size_t count) g_mutex_unlock(&s->data_mutex); } -#ifdef CONFIG_HAS_GLIB_SUBPROCESS_TESTS +#if VHOST_USER_NET_TESTS_WORKING && defined(CONFIG_HAS_GLIB_SUBPROCESS_TESTS) +static inline void test_server_connect(TestServer *server) +{ + test_server_create_chr(server, ",reconnect=1"); +} + static gboolean reconnect_cb(gpointer user_data) { @@ -962,7 +964,8 @@ int main(int argc, char **argv) qtest_add_data_func("/vhost-user/read-guest-mem", server, read_guest_mem); qtest_add_func("/vhost-user/migrate", test_migrate); qtest_add_func("/vhost-user/multiqueue", test_multiqueue); -#ifdef CONFIG_HAS_GLIB_SUBPROCESS_TESTS + +#if VHOST_USER_NET_TESTS_WORKING && defined(CONFIG_HAS_GLIB_SUBPROCESS_TESTS) qtest_add_func("/vhost-user/reconnect/subprocess", test_reconnect_subprocess); qtest_add_func("/vhost-user/reconnect", test_reconnect); diff --git a/tests/vmgenid-test.c b/tests/vmgenid-test.c index 3d5c1c3615..918c82c82a 100644 --- a/tests/vmgenid-test.c +++ b/tests/vmgenid-test.c @@ -40,7 +40,7 @@ static uint32_t acpi_find_vgia(void) AcpiRsdpDescriptor rsdp_table; uint32_t rsdt; AcpiRsdtDescriptorRev1 rsdt_table; - int tables_nr; + size_t tables_nr; uint32_t *tables; AcpiTableHeader ssdt_table; VgidTable vgid_table; @@ -62,9 +62,9 @@ static uint32_t acpi_find_vgia(void) ACPI_ASSERT_CMP(rsdt_table.signature, "RSDT"); /* compute the table entries in rsdt */ + g_assert_cmpint(rsdt_table.length, >, sizeof(AcpiRsdtDescriptorRev1)); tables_nr = (rsdt_table.length - sizeof(AcpiRsdtDescriptorRev1)) / sizeof(uint32_t); - g_assert_cmpint(tables_nr, >, 0); /* get the addresses of the tables pointed by rsdt */ tables = g_new0(uint32_t, tables_nr); |
