[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 05/38] ivshmem-test: Improve test case /ivshmem/sing
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH 05/38] ivshmem-test: Improve test case /ivshmem/single |
Date: |
Mon, 29 Feb 2016 19:40:21 +0100 |
Test state of registers after reset.
Test reading Interrupt Status clears it.
Test (invalid) read of Doorbell.
Add more comments.
Signed-off-by: Markus Armbruster <address@hidden>
---
tests/ivshmem-test.c | 23 ++++++++++++++++-------
1 file changed, 16 insertions(+), 7 deletions(-)
diff --git a/tests/ivshmem-test.c b/tests/ivshmem-test.c
index e118377..ba4d9f1 100644
--- a/tests/ivshmem-test.c
+++ b/tests/ivshmem-test.c
@@ -143,32 +143,41 @@ static void test_ivshmem_single(void)
setup_vm(&state);
s = &state;
- /* valid io */
- out_reg(s, INTRMASK, 0);
- in_reg(s, INTRSTATUS);
- in_reg(s, IVPOSITION);
+ /* initial state of readable registers */
+ g_assert_cmpuint(in_reg(s, INTRMASK), ==, 0);
+ g_assert_cmpuint(in_reg(s, INTRSTATUS), ==, 0);
+ g_assert_cmpuint(in_reg(s, IVPOSITION), ==, 0);
+ /* trigger interrupt via registers */
out_reg(s, INTRMASK, 0xffffffff);
g_assert_cmpuint(in_reg(s, INTRMASK), ==, 0xffffffff);
out_reg(s, INTRSTATUS, 1);
- /* XXX: intercept IRQ, not seen in resp */
+ /* check interrupt status */
g_assert_cmpuint(in_reg(s, INTRSTATUS), ==, 1);
+ /* reading clears */
+ g_assert_cmpuint(in_reg(s, INTRSTATUS), ==, 0);
+ /* TODO intercept actual interrupt (needs qtest work) */
- /* invalid io */
+ /* invalid register access */
out_reg(s, IVPOSITION, 1);
+ in_reg(s, DOORBELL);
+
+ /* ring the (non-functional) doorbell */
out_reg(s, DOORBELL, 8 << 16);
+ /* write shared memory */
for (i = 0; i < G_N_ELEMENTS(data); i++) {
data[i] = i;
}
qtest_memwrite(s->qtest, (uintptr_t)s->mem_base, data, sizeof(data));
+ /* verify write */
for (i = 0; i < G_N_ELEMENTS(data); i++) {
g_assert_cmpuint(((uint32_t *)tmpshmem)[i], ==, i);
}
+ /* read it back and verify read */
memset(data, 0, sizeof(data));
-
qtest_memread(s->qtest, (uintptr_t)s->mem_base, data, sizeof(data));
for (i = 0; i < G_N_ELEMENTS(data); i++) {
g_assert_cmpuint(data[i], ==, i);
--
2.4.3
- [Qemu-devel] [PATCH 00/38] ivshmem: Fixes, cleanups, device model split, Markus Armbruster, 2016/02/29
- [Qemu-devel] [PATCH 09/38] ivshmem: Add missing newlines to debug printfs, Markus Armbruster, 2016/02/29
- [Qemu-devel] [PATCH 02/38] qemu-doc: Fix ivshmem huge page example, Markus Armbruster, 2016/02/29
- [Qemu-devel] [PATCH 07/38] ivshmem-test: Improve test cases /ivshmem/server-*, Markus Armbruster, 2016/02/29
- [Qemu-devel] [PATCH 11/38] ivshmem: Clean up after commit 9940c32, Markus Armbruster, 2016/02/29
- [Qemu-devel] [PATCH 12/38] ivshmem: Drop ivshmem_event() stub, Markus Armbruster, 2016/02/29
- [Qemu-devel] [PATCH 05/38] ivshmem-test: Improve test case /ivshmem/single,
Markus Armbruster <=
- [Qemu-devel] [PATCH 15/38] ivshmem: Failed realize() can leave migration blocker behind, Markus Armbruster, 2016/02/29
- [Qemu-devel] [PATCH 14/38] ivshmem: Fix harmless misuse of Error, Markus Armbruster, 2016/02/29
- [Qemu-devel] [PATCH 10/38] ivshmem: Compile debug prints unconditionally to prevent bit-rot, Markus Armbruster, 2016/02/29
- [Qemu-devel] [PATCH 22/38] ivshmem: Plug leaks on unplug, fix peer disconnect, Markus Armbruster, 2016/02/29
- [Qemu-devel] [PATCH 06/38] ivshmem-test: Clean up wait for devices to become operational, Markus Armbruster, 2016/02/29
- [Qemu-devel] [PATCH 16/38] ivshmem: Clean up register callbacks, Markus Armbruster, 2016/02/29
- [Qemu-devel] [PATCH 03/38] event_notifier: Make event_notifier_init_fd() #ifdef CONFIG_EVENTFD, Markus Armbruster, 2016/02/29
- [Qemu-devel] [PATCH 13/38] ivshmem: Don't destroy the chardev on version mismatch, Markus Armbruster, 2016/02/29
- [Qemu-devel] [PATCH 21/38] ivshmem: Disentangle ivshmem_read(), Markus Armbruster, 2016/02/29
- [Qemu-devel] [PATCH 32/38] qdev: New DEFINE_PROP_ON_OFF_AUTO, Markus Armbruster, 2016/02/29