diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.include | 2 | ||||
-rw-r--r-- | tests/test-crypto-pbkdf.c | 54 | ||||
-rw-r--r-- | tests/virtio-9p-test.c | 119 |
3 files changed, 156 insertions, 19 deletions
diff --git a/tests/Makefile.include b/tests/Makefile.include index 2f11064699..6052a3828f 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -627,7 +627,7 @@ tests/virtio-blk-test$(EXESUF): tests/virtio-blk-test.o $(libqos-virtio-obj-y) tests/virtio-net-test$(EXESUF): tests/virtio-net-test.o $(libqos-pc-obj-y) $(libqos-virtio-obj-y) tests/virtio-rng-test$(EXESUF): tests/virtio-rng-test.o $(libqos-pc-obj-y) tests/virtio-scsi-test$(EXESUF): tests/virtio-scsi-test.o $(libqos-virtio-obj-y) -tests/virtio-9p-test$(EXESUF): tests/virtio-9p-test.o +tests/virtio-9p-test$(EXESUF): tests/virtio-9p-test.o $(libqos-virtio-obj-y) tests/virtio-serial-test$(EXESUF): tests/virtio-serial-test.o tests/virtio-console-test$(EXESUF): tests/virtio-console-test.o tests/tpci200-test$(EXESUF): tests/tpci200-test.o diff --git a/tests/test-crypto-pbkdf.c b/tests/test-crypto-pbkdf.c index 8ceceb1827..d937aff6b2 100644 --- a/tests/test-crypto-pbkdf.c +++ b/tests/test-crypto-pbkdf.c @@ -261,7 +261,6 @@ static QCryptoPbkdfTestData test_data[] = { "\xcc\x4a\x5e\x6d\xca\x04\xec\x58", .nout = 32 }, -#if 0 { .path = "/crypto/pbkdf/nonrfc/sha512/iter1200", .hash = QCRYPTO_HASH_ALG_SHA512, @@ -280,6 +279,58 @@ static QCryptoPbkdfTestData test_data[] = { .nout = 32 }, { + .path = "/crypto/pbkdf/nonrfc/sha224/iter1200", + .hash = QCRYPTO_HASH_ALG_SHA224, + .iterations = 1200, + .key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + .nkey = 129, + .salt = "pass phrase exceeds block size", + .nsalt = 30, + .out = "\x13\x3b\x88\x0c\x0e\x52\xa2\x41" + "\x49\x33\x35\xa6\xc3\x83\xae\x23" + "\xf6\x77\x43\x9e\x5b\x30\x92\x3e" + "\x4a\x3a\xaa\x24\x69\x3c\xed\x20", + .nout = 32 + }, + { + .path = "/crypto/pbkdf/nonrfc/sha384/iter1200", + .hash = QCRYPTO_HASH_ALG_SHA384, + .iterations = 1200, + .key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + .nkey = 129, + .salt = "pass phrase exceeds block size", + .nsalt = 30, + .out = "\xfe\xe3\xe1\x84\xc9\x25\x3e\x10" + "\x47\xc8\x7d\x53\xc6\xa5\xe3\x77" + "\x29\x41\x76\xbd\x4b\xe3\x9b\xac" + "\x05\x6c\x11\xdd\x17\xc5\x93\x80", + .nout = 32 + }, + { + .path = "/crypto/pbkdf/nonrfc/ripemd160/iter1200", + .hash = QCRYPTO_HASH_ALG_RIPEMD160, + .iterations = 1200, + .key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + .nkey = 129, + .salt = "pass phrase exceeds block size", + .nsalt = 30, + .out = "\xd6\xcb\xd8\xa7\xdb\x0c\xa2\x2a" + "\x23\x5e\x47\xaf\xdb\xda\xa8\xef" + "\xe4\x01\x0d\x6f\xb5\x33\xc8\xbd" + "\xce\xbf\x91\x14\x8b\x5c\x48\x41", + .nout = 32 + }, +#if 0 + { .path = "/crypto/pbkdf/nonrfc/whirlpool/iter1200", .hash = QCRYPTO_HASH_ALG_WHIRLPOOL, .iterations = 1200, @@ -358,6 +409,7 @@ static void test_pbkdf_timing(void) iters = qcrypto_pbkdf2_count_iters(QCRYPTO_HASH_ALG_SHA256, key, sizeof(key), salt, sizeof(salt), + 32, &error_abort); g_assert(iters >= (1 << 15)); diff --git a/tests/virtio-9p-test.c b/tests/virtio-9p-test.c index 1e39335a79..b8fb6cd869 100644 --- a/tests/virtio-9p-test.c +++ b/tests/virtio-9p-test.c @@ -10,34 +10,119 @@ #include "qemu/osdep.h" #include "libqtest.h" #include "qemu-common.h" +#include "libqos/pci-pc.h" +#include "libqos/virtio.h" +#include "libqos/virtio-pci.h" +#include "libqos/malloc.h" +#include "libqos/malloc-pc.h" +#include "standard-headers/linux/virtio_ids.h" +#include "standard-headers/linux/virtio_pci.h" -/* Tests only initialization so far. TODO: Replace with functional tests */ -static void pci_nop(void) -{ -} +static const char mount_tag[] = "qtest"; +static char *test_share; -static char test_share[] = "/tmp/qtest.XXXXXX"; - -int main(int argc, char **argv) +static void qvirtio_9p_start(void) { char *args; - int ret; - g_test_init(&argc, &argv, NULL); - qtest_add_func("/virtio/9p/pci/nop", pci_nop); - - g_assert(mkdtemp(test_share)); + test_share = g_strdup("/tmp/qtest.XXXXXX"); + g_assert_nonnull(mkdtemp(test_share)); args = g_strdup_printf("-fsdev local,id=fsdev0,security_model=none,path=%s " - "-device virtio-9p-pci,fsdev=fsdev0,mount_tag=qtest", - test_share); + "-device virtio-9p-pci,fsdev=fsdev0,mount_tag=%s", + test_share, mount_tag); + qtest_start(args); g_free(args); +} - ret = g_test_run(); - +static void qvirtio_9p_stop(void) +{ qtest_end(); rmdir(test_share); + g_free(test_share); +} + +static void pci_nop(void) +{ + qvirtio_9p_start(); + qvirtio_9p_stop(); +} + +typedef struct { + QVirtioDevice *dev; + QGuestAllocator *alloc; + QPCIBus *bus; + QVirtQueue *vq; +} QVirtIO9P; + +static QVirtIO9P *qvirtio_9p_pci_init(void) +{ + QVirtIO9P *v9p; + QVirtioPCIDevice *dev; + + v9p = g_new0(QVirtIO9P, 1); + v9p->alloc = pc_alloc_init(); + v9p->bus = qpci_init_pc(); + + dev = qvirtio_pci_device_find(v9p->bus, VIRTIO_ID_9P); + g_assert_nonnull(dev); + g_assert_cmphex(dev->vdev.device_type, ==, VIRTIO_ID_9P); + v9p->dev = (QVirtioDevice *) dev; + + qvirtio_pci_device_enable(dev); + qvirtio_reset(&qvirtio_pci, v9p->dev); + qvirtio_set_acknowledge(&qvirtio_pci, v9p->dev); + qvirtio_set_driver(&qvirtio_pci, v9p->dev); + + v9p->vq = qvirtqueue_setup(&qvirtio_pci, v9p->dev, v9p->alloc, 0); + return v9p; +} + +static void qvirtio_9p_pci_free(QVirtIO9P *v9p) +{ + qvirtqueue_cleanup(&qvirtio_pci, v9p->vq, v9p->alloc); + pc_alloc_uninit(v9p->alloc); + qvirtio_pci_device_disable(container_of(v9p->dev, QVirtioPCIDevice, vdev)); + g_free(v9p->dev); + qpci_free_pc(v9p->bus); + g_free(v9p); +} + +static void pci_basic_config(void) +{ + QVirtIO9P *v9p; + void *addr; + size_t tag_len; + char *tag; + int i; + + qvirtio_9p_start(); + v9p = qvirtio_9p_pci_init(); + + addr = ((QVirtioPCIDevice *) v9p->dev)->addr + VIRTIO_PCI_CONFIG_OFF(false); + tag_len = qvirtio_config_readw(&qvirtio_pci, v9p->dev, + (uint64_t)(uintptr_t)addr); + g_assert_cmpint(tag_len, ==, strlen(mount_tag)); + addr += sizeof(uint16_t); + + tag = g_malloc(tag_len); + for (i = 0; i < tag_len; i++) { + tag[i] = qvirtio_config_readb(&qvirtio_pci, v9p->dev, + (uint64_t)(uintptr_t)addr + i); + } + g_assert_cmpmem(tag, tag_len, mount_tag, tag_len); + g_free(tag); + + qvirtio_9p_pci_free(v9p); + qvirtio_9p_stop(); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + qtest_add_func("/virtio/9p/pci/nop", pci_nop); + qtest_add_func("/virtio/9p/pci/basic/configuration", pci_basic_config); - return ret; + return g_test_run(); } |