]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Get the tests working with liburcu
authorTony Finch <fanf@isc.org>
Wed, 8 Mar 2023 14:52:30 +0000 (14:52 +0000)
committerTony Finch <fanf@isc.org>
Fri, 12 May 2023 19:48:31 +0000 (20:48 +0100)
Mostly a few qp-trie details to adjust.

fuzz/Makefile.am
fuzz/dns_qp.c
tests/bench/load-names.c
tests/bench/qpmulti.c
tests/dns/qp_test.c
tests/dns/qpmulti_test.c
tests/libtest/Makefile.am
tests/libtest/qp.c

index d2e3931c0049f311d84d44810b11c8171fc138ca..75407d488b6dcc7ecd7c4a99fa61daefbd37ee26 100644 (file)
@@ -6,6 +6,7 @@ AM_CFLAGS +=                            \
 AM_CPPFLAGS +=                         \
        $(LIBISC_CFLAGS)                \
        $(LIBDNS_CFLAGS)                \
+       $(LIBURCU_CFLAGS)               \
        $(LIBUV_CFLAGS)                 \
        -DFUZZDIR=\"$(abs_srcdir)\"     \
        -I$(top_srcdir)/lib/dns         \
index 1bc19fa38fe51d73fb34e53fc08f8e70a05a5b98..045c8acbf24f41b77e16a69ba00ce5794406e37b 100644 (file)
 #include <stdbool.h>
 #include <stdint.h>
 
-#include <isc/qsbr.h>
 #include <isc/random.h>
 #include <isc/refcount.h>
 #include <isc/rwlock.h>
+#include <isc/urcu.h>
 #include <isc/util.h>
 
 #include <dns/qp.h>
index babdd37ef14a1cacb9412bc4416d5b559b497a1d..94e105ad16812b0def958da7225580c011e5fea1 100644 (file)
@@ -18,8 +18,8 @@
 #include <isc/hashmap.h>
 #include <isc/ht.h>
 #include <isc/list.h>
-#include <isc/qsbr.h>
 #include <isc/rwlock.h>
+#include <isc/urcu.h>
 #include <isc/util.h>
 
 #include <dns/fixedname.h>
index 93b98a0b6aa35b3cc19ce409bd741b614cc9f1b1..03dd866264134b03f91ed3f84f53f9e7b5ce20e1 100644 (file)
@@ -18,6 +18,7 @@
 #include <unistd.h>
 
 #include <isc/async.h>
+#include <isc/barrier.h>
 #include <isc/list.h>
 #include <isc/log.h>
 #include <isc/loop.h>
@@ -25,7 +26,6 @@
 #include <isc/mem.h>
 #include <isc/mutex.h>
 #include <isc/os.h>
-#include <isc/qsbr.h>
 #include <isc/random.h>
 #include <isc/refcount.h>
 #include <isc/rwlock.h>
@@ -33,6 +33,7 @@
 #include <isc/tid.h>
 #include <isc/time.h>
 #include <isc/timer.h>
+#include <isc/urcu.h>
 #include <isc/util.h>
 #include <isc/uv.h>
 
@@ -883,6 +884,9 @@ int
 main(void) {
        isc_loopmgr_t *loopmgr = NULL;
        isc_mem_t *mctx = NULL;
+
+       setlinebuf(stdout);
+
        uint32_t nloops;
        const char *env_workers = getenv("ISC_TASK_WORKERS");
 
index ee9b30da0057fb464f4ba7355adf5e1e1bff93c7..8a1156b5370a8d6fcfe921a98a4b740988fe36ba 100644 (file)
 #define UNIT_TESTING
 #include <cmocka.h>
 
-#include <isc/qsbr.h>
 #include <isc/random.h>
 #include <isc/refcount.h>
 #include <isc/result.h>
 #include <isc/string.h>
+#include <isc/urcu.h>
 #include <isc/util.h>
 
 #include <dns/name.h>
index d5a5b91d0b51154eca818bf7af5380ec183dc360..96a26930333e1427507f435d0e49c43c07ee175b 100644 (file)
 #include <isc/loop.h>
 #include <isc/magic.h>
 #include <isc/mem.h>
-#include <isc/qsbr.h>
 #include <isc/random.h>
 #include <isc/refcount.h>
 #include <isc/rwlock.h>
+#include <isc/urcu.h>
 #include <isc/util.h>
 
 #include <dns/log.h>
@@ -373,8 +373,7 @@ many_transactions(void *arg) {
        for (size_t n = 0; n < TRANSACTION_COUNT; n++) {
                TRACE("transaction %zu", n);
                one_transaction(qpm);
-               isc__qsbr_quiescent_state(isc_loop_current(loopmgr));
-               isc_loopmgr_wakeup(loopmgr);
+               rcu_quiescent_state();
        }
 
        dns_qpmulti_destroy(&qpm);
@@ -387,6 +386,7 @@ ISC_RUN_TEST_IMPL(qpmulti) {
        setup_items();
        isc_loop_setup(isc_loop_main(loopmgr), many_transactions, NULL);
        isc_loopmgr_run(loopmgr);
+       rcu_barrier();
        isc_loopmgr_destroy(&loopmgr);
        isc_log_destroy(&dns_lctx);
 }
index 68708d463d5b103994b30237df039b10768662e9..1fe4c57b36658050dae7b17d9f21a3dffdb9b010 100644 (file)
@@ -4,6 +4,7 @@ AM_CPPFLAGS +=                  \
        $(LIBISC_CFLAGS)        \
        $(LIBDNS_CFLAGS)        \
        $(LIBNS_CFLAGS)         \
+       $(LIBURCU_CFLAGS)       \
        $(LIBUV_CFLAGS)         \
        -I$(top_srcdir)/lib/isc \
        -I$(top_srcdir)/lib/dns
index db45fbcc16460ccf334ea7a722e77c873e2998a1..aff5eb3dc6b2c1e2d27eee50b0d6db04b9de87d1 100644 (file)
@@ -18,9 +18,9 @@
 #include <isc/buffer.h>
 #include <isc/loop.h>
 #include <isc/magic.h>
-#include <isc/qsbr.h>
 #include <isc/refcount.h>
 #include <isc/rwlock.h>
+#include <isc/urcu.h>
 #include <isc/util.h>
 
 #include <dns/name.h>
@@ -255,10 +255,10 @@ qp_test_dumpchunks(dns_qp_t *qp) {
        dumpqp(qp, "qp");
        for (qp_chunk_t c = 0; c < qp->chunk_max; c++) {
                printf("qp %p chunk %u base %p "
-                      "used %u free %u immutable %u phase %u\n",
+                      "used %u free %u immutable %u discounted %u\n",
                       qp, c, qp->base->ptr[c], qp->usage[c].used,
                       qp->usage[c].free, qp->usage[c].immutable,
-                      qp->usage[c].phase);
+                      qp->usage[c].discounted);
                used += qp->usage[c].used;
                free += qp->usage[c].free;
        }