]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Add -variant tests to lmdb, and enable these in CI.
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Wed, 30 Apr 2025 10:11:14 +0000 (12:11 +0200)
committerMiod Vallat <miod.vallat@powerdns.com>
Mon, 26 May 2025 11:49:12 +0000 (13:49 +0200)
regression-tests/backends/lmdb-master
regression-tests/start-test-stop
regression-tests/tests/views-management/skip.variant [new file with mode: 0644]
regression-tests/tests/zone-variants/skip.variant [new file with mode: 0644]
tasks.py

index bfc7b54a65bfc65d5f950e653e2b8cee39e959fc..a02fd240bfad1af267f9eb519c7c93ac4cd82610 100644 (file)
@@ -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
index c33eb35c60011c51306ac2060e534c587e56a00b..0fb538cc6bab41ad630eecdaa9c31a3091baf36f 100755 (executable)
@@ -62,14 +62,15 @@ if [ "$_show_help" -eq 1 ]; then
 Usage: ./start-test-stop <port> [<context>] [wait|nowait] [<cachettl>] [<specifictest>]
 
 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 (file)
index 0000000..e69de29
diff --git a/regression-tests/tests/zone-variants/skip.variant b/regression-tests/tests/zone-variants/skip.variant
new file mode 100644 (file)
index 0000000..e69de29
index 049770f37fee6736998397568a25d4884534124d..7b592e87df157a5321f65ea7df9462029572dab7 100644 (file)
--- 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',