[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v2 06/14] qtest/ahci: add migrate dma test
From: |
John Snow |
Subject: |
[Qemu-devel] [PULL v2 06/14] qtest/ahci: add migrate dma test |
Date: |
Tue, 12 May 2015 14:46:18 -0400 |
Write to one guest, migrate, and then read from the other.
adjust ahci_io to clear any buffers it creates, so that we
can use ahci_io safely on both guests knowing we are using
empty buffers and not accidentally re-using data.
Signed-off-by: John Snow <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-id: address@hidden
---
tests/ahci-test.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
tests/libqos/ahci.c | 1 +
2 files changed, 46 insertions(+)
diff --git a/tests/ahci-test.c b/tests/ahci-test.c
index 9fccafc..6513330 100644
--- a/tests/ahci-test.c
+++ b/tests/ahci-test.c
@@ -1110,6 +1110,50 @@ static void test_migrate_sanity(void)
ahci_shutdown(dst);
}
+/**
+ * DMA Migration test: Write a pattern, migrate, then read.
+ */
+static void test_migrate_dma(void)
+{
+ AHCIQState *src, *dst;
+ uint8_t px;
+ size_t bufsize = 4096;
+ unsigned char *tx = g_malloc(bufsize);
+ unsigned char *rx = g_malloc0(bufsize);
+ unsigned i;
+ const char *uri = "tcp:127.0.0.1:1234";
+
+ src = ahci_boot_and_enable("-m 1024 -M q35 "
+ "-hda %s ", tmp_path);
+ dst = ahci_boot("-m 1024 -M q35 "
+ "-hda %s "
+ "-incoming %s", tmp_path, uri);
+
+ set_context(src->parent);
+
+ /* initialize */
+ px = ahci_port_select(src);
+ ahci_port_clear(src, px);
+
+ /* create pattern */
+ for (i = 0; i < bufsize; i++) {
+ tx[i] = (bufsize - i);
+ }
+
+ /* Write, migrate, then read. */
+ ahci_io(src, px, CMD_WRITE_DMA, tx, bufsize, 0);
+ ahci_migrate(src, dst, uri);
+ ahci_io(dst, px, CMD_READ_DMA, rx, bufsize, 0);
+
+ /* Verify pattern */
+ g_assert_cmphex(memcmp(tx, rx, bufsize), ==, 0);
+
+ ahci_shutdown(src);
+ ahci_shutdown(dst);
+ g_free(rx);
+ g_free(tx);
+}
+
/******************************************************************************/
/* AHCI I/O Test Matrix Definitions
*/
@@ -1360,6 +1404,7 @@ int main(int argc, char **argv)
qtest_add_func("/ahci/flush/retry", test_flush_retry);
qtest_add_func("/ahci/migrate/sanity", test_migrate_sanity);
+ qtest_add_func("/ahci/migrate/dma", test_migrate_dma);
ret = g_test_run();
diff --git a/tests/libqos/ahci.c b/tests/libqos/ahci.c
index 8c8fd89..95bfb3d 100644
--- a/tests/libqos/ahci.c
+++ b/tests/libqos/ahci.c
@@ -650,6 +650,7 @@ void ahci_io(AHCIQState *ahci, uint8_t port, uint8_t
ide_cmd,
g_assert(props);
ptr = ahci_alloc(ahci, bufsize);
g_assert(ptr);
+ qmemset(ptr, 0x00, bufsize);
if (props->write) {
memwrite(ptr, buffer, bufsize);
--
2.1.0
- [Qemu-devel] [PULL v2 00/14] Ide patches, John Snow, 2015/05/12
- [Qemu-devel] [PULL v2 08/14] qtest/ahci: add halted dma test, John Snow, 2015/05/12
- [Qemu-devel] [PULL v2 01/14] libqos/ahci: Add halted command helpers, John Snow, 2015/05/12
- [Qemu-devel] [PULL v2 02/14] libqos/ahci: Fix sector set method, John Snow, 2015/05/12
- [Qemu-devel] [PULL v2 04/14] ich9/ahci: Enable Migration, John Snow, 2015/05/12
- [Qemu-devel] [PULL v2 07/14] qtest/ahci: add flush migrate test, John Snow, 2015/05/12
- [Qemu-devel] [PULL v2 06/14] qtest/ahci: add migrate dma test,
John Snow <=
- [Qemu-devel] [PULL v2 12/14] qtest: add memset to qtest protocol, John Snow, 2015/05/12
- [Qemu-devel] [PULL v2 05/14] qtest/ahci: Add migration test, John Snow, 2015/05/12
- [Qemu-devel] [PULL v2 03/14] libqos: Add migration helpers, John Snow, 2015/05/12
- [Qemu-devel] [PULL v2 14/14] qtest: pre-buffer hex nibs, John Snow, 2015/05/12
- [Qemu-devel] [PULL v2 09/14] qtest/ahci: add migrate halted dma test, John Snow, 2015/05/12
- [Qemu-devel] [PULL v2 13/14] libqos/ahci: Swap memread/write with bufread/write, John Snow, 2015/05/12
- [Qemu-devel] [PULL v2 10/14] qtest: allow arbitrarily long sends, John Snow, 2015/05/12
- [Qemu-devel] [PULL v2 11/14] qtest: Add base64 encoded read/write, John Snow, 2015/05/12
- Re: [Qemu-devel] [PULL v2 00/14] Ide patches, Peter Maydell, 2015/05/12