]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
tests: fine tune integration test for GC
authorVladimír Čunát <vladimir.cunat@nic.cz>
Mon, 24 Aug 2020 15:47:29 +0000 (17:47 +0200)
committerPetr Špaček <petr.spacek@nic.cz>
Mon, 7 Sep 2020 15:47:27 +0000 (17:47 +0200)
TL;DR: tune the test - now it works quite reliably for me,
though it's perhaps not nice.

With 1 MiB cache it's not easy to avoid overflows, as the defaults are
meant for much larger sizes.  Normal GC target is to decrease usage
by 10% when above 80% in 100 records per transaction.  That just won't
work reliable due to 10% being only 25 pages.

This commit makes the test run GC with more suitable tuning and
frequently pauses kresd to give GC better chance to catch up.

tests/config/test_dns_generators.lua
utils/cache_gc/test.integr/deckard.yaml

index 176137e0fa3f8e090aec3add02855ea496ccd884..4a7cc0a584bad07b833837cc17d8d260335034c8 100644 (file)
@@ -99,6 +99,7 @@ local function add_random_rrset()
        assert(kr_cach:insert(kr_rrset, nil, ffi.C.KR_RANK_SECURE))
 end
 
+ffi.cdef('int usleep(uint32_t usec);') -- at least in current glibc it's always 32-bit
 
 local rr_count = 0
 local function gen_batch()
@@ -110,6 +111,7 @@ local function gen_batch()
                end
        end
        kr_cach:commit()
+       ffi.C.usleep(15) -- stop *whole process* to give better chance to GC executing
        local delay
        if math.random(1,4) == 1 then
                delay = 1  -- give a chance to DNS resolving
index 65947a795e705c9a258ada30053e6f4d284286ac..b1a8b15894ec83079adf1f8418c75dba0fcaa8ea 100644 (file)
@@ -25,8 +25,11 @@ programs:
 - name: gc
   binary: kres-cache-gc
   additional:
-    - -d
-    - "1"
+    # small cache needs shorter RW transactions and larger "percentages"
+    - -l8
+    - -u50
+    - -f20
+    - -d1
     - -c
     - ../kresd1/
   conncheck: False