[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 03/13] test-qht: test qht_iter_remove
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PULL 03/13] test-qht: test qht_iter_remove |
Date: |
Wed, 26 Sep 2018 11:36:59 -0700 |
From: "Emilio G. Cota" <address@hidden>
Reviewed-by: Alex Bennée <address@hidden>
Signed-off-by: Emilio G. Cota <address@hidden>
Signed-off-by: Richard Henderson <address@hidden>
---
tests/test-qht.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 48 insertions(+), 2 deletions(-)
diff --git a/tests/test-qht.c b/tests/test-qht.c
index dda6a067be..283fb3db39 100644
--- a/tests/test-qht.c
+++ b/tests/test-qht.c
@@ -108,6 +108,49 @@ static void iter_check(unsigned int count)
g_assert_cmpuint(curr, ==, count);
}
+static void sum_func(struct qht *ht, void *p, uint32_t hash, void *userp)
+{
+ uint32_t *sum = userp;
+ uint32_t a = *(uint32_t *)p;
+
+ *sum += a;
+}
+
+static void iter_sum_check(unsigned int expected)
+{
+ unsigned int sum = 0;
+
+ qht_iter(&ht, sum_func, &sum);
+ g_assert_cmpuint(sum, ==, expected);
+}
+
+static bool rm_mod_func(struct qht *ht, void *p, uint32_t hash, void *userp)
+{
+ uint32_t a = *(uint32_t *)p;
+ unsigned int mod = *(unsigned int *)userp;
+
+ return a % mod == 0;
+}
+
+static void iter_rm_mod(unsigned int mod)
+{
+ qht_iter_remove(&ht, rm_mod_func, &mod);
+}
+
+static void iter_rm_mod_check(unsigned int mod)
+{
+ unsigned int expected = 0;
+ unsigned int i;
+
+ for (i = 0; i < N; i++) {
+ if (i % mod == 0) {
+ continue;
+ }
+ expected += i;
+ }
+ iter_sum_check(expected);
+}
+
static void qht_do_test(unsigned int mode, size_t init_entries)
{
/* under KVM we might fetch stats from an uninitialized qht */
@@ -138,8 +181,11 @@ static void qht_do_test(unsigned int mode, size_t
init_entries)
insert(10, 150);
check_n(N);
- rm(1, 2);
- check_n(N - 1);
+ qht_reset(&ht);
+ insert(0, N);
+ iter_rm_mod(10);
+ iter_rm_mod_check(10);
+ check_n(N * 9 / 10);
qht_reset_size(&ht, 0);
check_n(0);
check(0, N, false);
--
2.17.1
- [Qemu-devel] [PULL 00/13] tcg-next patch queue, Richard Henderson, 2018/09/26
- [Qemu-devel] [PULL 01/13] qht: remove unused map param from qht_remove__locked, Richard Henderson, 2018/09/26
- [Qemu-devel] [PULL 02/13] qht: add qht_iter_remove, Richard Henderson, 2018/09/26
- [Qemu-devel] [PULL 03/13] test-qht: test qht_iter_remove,
Richard Henderson <=
- [Qemu-devel] [PULL 04/13] test-qht: test removal of non-existent entries, Richard Henderson, 2018/09/26
- [Qemu-devel] [PULL 12/13] qht-bench: add -p flag to precompute hash values, Richard Henderson, 2018/09/26
- [Qemu-devel] [PULL 07/13] qht: drop ht argument from qht iterators, Richard Henderson, 2018/09/26
- [Qemu-devel] [PULL 13/13] tcg/i386: fix vector operations on 32-bit hosts, Richard Henderson, 2018/09/26
- [Qemu-devel] [PULL 09/13] qht: constify qht_lookup, Richard Henderson, 2018/09/26
- [Qemu-devel] [PULL 06/13] test-qht: speed up + test qht_resize, Richard Henderson, 2018/09/26
- [Qemu-devel] [PULL 08/13] qht: fix comment in qht_bucket_remove_entry, Richard Henderson, 2018/09/26
- [Qemu-devel] [PULL 11/13] qht: constify arguments to some internal functions, Richard Henderson, 2018/09/26
- [Qemu-devel] [PULL 10/13] qht: constify qht_statistics_init, Richard Henderson, 2018/09/26
- [Qemu-devel] [PULL 05/13] test-qht: test deletion of the last entry in a bucket, Richard Henderson, 2018/09/26