From e930eae0b2f958e3c0b46b8bb3dc5e8b294fa40e Mon Sep 17 00:00:00 2001 From: Peter van Dijk Date: Wed, 30 Apr 2025 12:11:14 +0200 Subject: [PATCH] Add -variant tests to lmdb, and enable these in CI. --- regression-tests/backends/lmdb-master | 74 ++++++++++++------- regression-tests/start-test-stop | 14 ++-- .../tests/views-management/skip.variant | 0 .../tests/zone-variants/skip.variant | 0 tasks.py | 7 +- 5 files changed, 61 insertions(+), 34 deletions(-) create mode 100644 regression-tests/tests/views-management/skip.variant create mode 100644 regression-tests/tests/zone-variants/skip.variant diff --git a/regression-tests/backends/lmdb-master b/regression-tests/backends/lmdb-master index bfc7b54a65..a02fd240bf 100644 --- a/regression-tests/backends/lmdb-master +++ b/regression-tests/backends/lmdb-master @@ -1,4 +1,14 @@ -case $context in +plusvariant='' +plusrootvariant='' +_context=${context%-variant} +if [ $context != $_context ] +then + plusvariant='..variant' + plusrootvariant='.variant' + skipreasons="$skipreasons variant" +fi + +case $_context in lmdb | lmdb-nodnssec | lmdb-nsec3 | lmdb-nsec3-optout | lmdb-nsec3-narrow) backend=lmdb cat > pdns-lmdb.conf << __EOF__ @@ -14,63 +24,71 @@ __EOF__ for zone in $(grep 'zone ' named.conf | cut -f2 -d\" | grep -v '^nztest.com$') do if [ "$zone" = "." ]; then - $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb load-zone $zone zones/ROOT + zonewithvariant=$zone$plusrootvariant # prevent extra dot! + zonefile=zones/ROOT else - $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb load-zone $zone zones/$zone + zonewithvariant=$zone$plusvariant + zonefile=zones/$zone fi - if [ $context != lmdb-nodnssec ] + $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb load-zone $zonewithvariant $zonefile + + [ -n "$plusvariant" ] && $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb view-add-zone variant-view $zonewithvariant + + if [ $_context != lmdb-nodnssec ] then if [ $zone != insecure.dnssec-parent.com ] then - if [ $context = lmdb-nsec3 ] + if [ $_context = lmdb-nsec3 ] then - $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb set-nsec3 $zone "1 0 1 abcd" 2>&1 - elif [ $context = lmdb-nsec3-optout ] + $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb set-nsec3 $zonewithvariant "1 0 1 abcd" 2>&1 + elif [ $_context = lmdb-nsec3-optout ] then - $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb set-nsec3 $zone "1 1 1 abcd" 2>&1 - elif [ $context = lmdb-nsec3-narrow ] + $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb set-nsec3 $zonewithvariant "1 1 1 abcd" 2>&1 + elif [ $_context = lmdb-nsec3-narrow ] then - $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb set-nsec3 $zone '1 1 1 abcd' narrow 2>&1 + $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb set-nsec3 $zonewithvariant '1 1 1 abcd' narrow 2>&1 fi - securezone $zone lmdb + securezone $zonewithvariant lmdb if [ $zone = hiddencryptokeys.org ] then - keyid=$($RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb list-keys $zone | grep hiddencryptokeys.org | awk '{ print $7 }') - $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb unpublish-zone-key $zone $keyid + keyid=$($RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb list-keys $zonewithvariant | grep hiddencryptokeys.org | awk '{ print $7 }') + $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb unpublish-zone-key $zonewithvariant $keyid fi if [ $zone = cryptokeys.org ] then - $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb add-zone-key $zone zsk 384 active unpublished ecdsa384 - $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb add-zone-key $zone zsk 2048 inactive published rsasha512 - $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb add-zone-key $zone zsk 2048 inactive unpublished rsasha256 + $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb add-zone-key $zonewithvariant zsk 384 active unpublished ecdsa384 + $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb add-zone-key $zonewithvariant zsk 2048 inactive published rsasha512 + $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb add-zone-key $zonewithvariant zsk 2048 inactive unpublished rsasha256 fi fi else - $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb rectify-zone $zone 2>&1 + $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb rectify-zone $zonewithvariant 2>&1 fi if [ "$zone" = "tsig.com" ]; then $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb import-tsig-key test $ALGORITHM $KEY - $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb activate-tsig-key tsig.com test primary + $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb activate-tsig-key tsig.com$plusvariant test primary fi done # setup catalog zone - if ! $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb list-all-zones | grep '^.$' # detect root tests + if ! $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb list-all-zones | grep '^\.' # detect root tests then for zone in $(grep 'zone ' named.conf | cut -f2 -d\" | grep -v '^nztest.com$') do - $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb set-kind $zone master - $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb set-catalog $zone catalog.invalid + $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb set-kind $zone$plusvariant master + $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb set-catalog $zone$plusvariant catalog.invalid$plusvariant done $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb load-zone catalog.invalid zones/catalog.invalid $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb set-kind catalog.invalid producer - $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb set-options-json test.com '{"producer":{"coo":"other-catalog.invalid","unique":"123"}}' - $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb set-options-json tsig.com '{"producer":{"group":["pdns-group-x","pdns-group-y"]}}' + $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb set-options-json test.com$plusvariant '{"producer":{"coo":"other-catalog.invalid","unique":"123"}}' + $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb set-options-json tsig.com$plusvariant '{"producer":{"group":["pdns-group-x","pdns-group-y"]}}' fi + [ -n "$plusvariant" ] && $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb network-set 0.0.0.0/0 variant-view + for variant in foo bar do $RUNWRAPPER_PDNSUTIL $PDNSUTIL --config-dir=. --config-name=lmdb create-zone example.com..$variant @@ -99,21 +117,21 @@ __EOF__ --cache-ttl=$cachettl --dname-processing $lua_prequery & extracontexts="lmdb" - skipreasons="lmdb nodyndns" + skipreasons="$skipreasons lmdb nodyndns" - if [ $context = lmdb-nsec3 ] + if [ $_context = lmdb-nsec3 ] then extracontexts="$extracontexts dnssec nsec3" skipreasons="$skipreasons nsec3" - elif [ $context = lmdb-nsec3-optout ] + elif [ $_context = lmdb-nsec3-optout ] then extracontexts="$extracontexts dnssec nsec3 nsec3-optout" skipreasons="$skipreasons optout" - elif [ $context = lmdb-nsec3-narrow ] + elif [ $_context = lmdb-nsec3-narrow ] then extracontexts="$extracontexts dnssec narrow" skipreasons="$skipreasons narrow" - elif [ $context = lmdb-nodnssec ] + elif [ $_context = lmdb-nodnssec ] then skipreasons="$skipreasons nodnssec" else diff --git a/regression-tests/start-test-stop b/regression-tests/start-test-stop index c33eb35c60..0fb538cc6b 100755 --- a/regression-tests/start-test-stop +++ b/regression-tests/start-test-stop @@ -62,14 +62,15 @@ if [ "$_show_help" -eq 1 ]; then Usage: ./start-test-stop [] [wait|nowait] [] [] context is one of: -bind bind-dnssec bind-dnssec-nsec3 bind-dnssec-nsec3-optout bind-dnssec-nsec3-narrow +bind bind-dnssec bind-dnssec-nsec3 bind-dnssec-nsec3-optout bind-dnssec-nsec3-narrow bind-dnssec-pkcs11 geoip geoip-nsec3-narrow gmysql-nodnssec gmysql gmysql-nsec3 gmysql-nsec3-optout gmysql-nsec3-narrow gmysql_sp godbc_mssql-nodnssec godbc_mssql godbc_mssql-nsec3 godbc_mssql-nsec3-optout godbc_mssql-nsec3-narrow godbc_sqlite3-nodnssec godbc_sqlite3 godbc_sqlite3-nsec3 godbc_sqlite3-nsec3-optout godbc_sqlite3-narrow gpgsql-nodnssec gpgsql gpgsql-nsec3 gpgsql-nsec3-optout gpgsql-nsec3-narrow gpgsql_sp gsqlite3-nodnssec gsqlite3 gsqlite3-nsec3 gsqlite3-nsec3-optout gsqlite3-nsec3-narrow -lmdb-nodnssec lmdb +lmdb-nodnssec lmdb lmdb-nsec3 lmdb-nsec3-optout lmdb-nsec3-narrow +lmdb-nodnssec-variant lmdb-variant lmdb-nsec3-variant lmdb-nsec3-optout-variant lmdb-nsec3-narrow-variant remotebackend-pipe remotebackend-unix remotebackend-http remotebackend-zeromq remotebackend-pipe-dnssec remotebackend-unix-dnssec remotebackend-http-dnssec remotebackend-zeromq-dnssec #remotebackend-pipe-nsec3 remotebackend-unix-nsec3 remotebackend-http-nsec3 @@ -141,7 +142,7 @@ securezone () fi if [ "${zone: 0:16}" = "secure-delegated" ] then - $PDNSUTIL --config-dir=. $configname import-zone-key $zone $zone.private ksk 2>&1 + $PDNSUTIL --config-dir=. $configname import-zone-key $zone ${zone%..*}.private ksk 2>&1 $PDNSUTIL --config-dir=. $configname add-zone-key $zone rsasha256 1024 zsk active 2>&1 $PDNSUTIL --config-dir=. $configname rectify-zone $zone 2>&1 $PDNSUTIL --config-dir=. $configname set-publish-cds $zone 2>&1 @@ -167,7 +168,7 @@ securezone () $PDNSUTIL --config-dir=. $configname set-publish-cds $zone 2>&1 $PDNSUTIL --config-dir=. $configname set-publish-cdnskey $zone 2>&1 fi - if [ "$zone" = "dnssec-parent.com" ]; then + if [ "${zone%..*}" = "dnssec-parent.com" ]; then $PDNSUTIL --config-dir=. $configname set-publish-cds $zone 0 2>&1 $PDNSUTIL --config-dir=. $configname set-publish-cdnskey $zone delete 2>&1 fi @@ -209,7 +210,10 @@ kill_process () sleep 1 done - kill -9 $pids + if [ $done -eq 0 ] + then + kill -9 $pids + fi fi rm pdns*.pid diff --git a/regression-tests/tests/views-management/skip.variant b/regression-tests/tests/views-management/skip.variant new file mode 100644 index 0000000000..e69de29bb2 diff --git a/regression-tests/tests/zone-variants/skip.variant b/regression-tests/tests/zone-variants/skip.variant new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tasks.py b/tasks.py index 049770f37f..7b592e87df 100644 --- a/tasks.py +++ b/tasks.py @@ -996,7 +996,12 @@ backend_regress_tests = dict( 'lmdb-both', 'lmdb-nsec3-both', 'lmdb-nsec3-optout-both', - 'lmdb-nsec3-narrow' + 'lmdb-nsec3-narrow', + 'lmdb-nodnssec-variant', + 'lmdb-variant', + 'lmdb-nsec3-variant', + 'lmdb-nsec3-optout-variant', + 'lmdb-nsec3-narrow-variant' ], gmysql = [ 'gmysql', -- 2.47.2