]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
auth: speedup secondary tests and make pdns_control catalog type aware
authorKees Monshouwer <mind04@monshouwer.org>
Tue, 12 Jul 2022 10:24:58 +0000 (12:24 +0200)
committermind04 <mind04@monshouwer.org>
Tue, 12 Jul 2022 22:11:30 +0000 (00:11 +0200)
pdns/dynhandler.cc
regression-tests/.gitignore
regression-tests/backends/gmysql-slave
regression-tests/backends/lmdb-slave

index 31869cb1f8059495206bb4bd0459e9a49d121b3f..82125a84d393b555e536d873aec59d3ee50fc980 100644 (file)
@@ -273,8 +273,8 @@ string DLNotifyRetrieveHandler(const vector<string>&parts, Utility::pid_t ppid)
     di.masters.push_back(master_ip);
   }
 
-  if(!override_master && (di.kind != DomainInfo::Slave || di.masters.empty()))
-    return "Zone '" + domain.toString() + "' is not a secondary zone (or has no primary defined)";
+  if (!override_master && (!di.isSecondaryType() || di.masters.empty()))
+    return "Zone '" + domain.toString() + "' is not a secondary/consumer zone (or has no primary defined)";
 
   shuffle(di.masters.begin(), di.masters.end(), pdns::dns_random_engine());
   const auto& master = di.masters.front();
@@ -328,7 +328,7 @@ string DLNotifyHandler(const vector<string>&parts, Utility::pid_t ppid)
     int total = 0;
     int notified = 0;
     for (const auto& di : domains) {
-      if (di.kind == DomainInfo::Master || di.kind == DomainInfo::Slave) { // Primary and secondary if secondary-do-renotify is enabled
+      if (di.kind != DomainInfo::Native) { // Primary and secondary if secondary-do-renotify is enabled
         total++;
         if(Communicator.notifyDomain(di.zone, &B))
           notified++;
@@ -337,7 +337,7 @@ string DLNotifyHandler(const vector<string>&parts, Utility::pid_t ppid)
 
     if (total != notified)
       return itoa(notified)+" out of "+itoa(total)+" zones added to queue - see log";
-    return "Added "+itoa(total)+" MASTER/SLAVE zones to queue";
+    return "Added " + itoa(total) + " MASTER/SLAVE/PRODUCER/CONSUMER zones to queue";
   } else {
     DNSName domain;
     try {
@@ -382,28 +382,29 @@ string DLListZones(const vector<string>&parts, Utility::pid_t ppid)
   vector<DomainInfo> domains;
   B.getAllDomains(&domains, false, false);
   ostringstream ret;
-  int kindFilter = -1;
+  DomainInfo::DomainKind kind;
   if (parts.size() > 1) {
-    if (toUpper(parts[1]) == "PRIMARY" || toUpper(parts[1]) == "MASTER")
-      kindFilter = 0;
-    else if (toUpper(parts[1]) == "SECONDARY" || toUpper(parts[1]) == "SLAVE")
-      kindFilter = 1;
-    else if (toUpper(parts[1]) == "NATIVE")
-      kindFilter = 2;
+    kind = DomainInfo::stringToKind(parts[1]);
+  }
+  else {
+    kind = DomainInfo::All;
   }
 
   int count = 0;
 
   for (const auto& di: domains) {
-    if (di.kind == kindFilter || kindFilter == -1) {
+    if (di.kind == kind || kind == DomainInfo::All) {
       ret<<di.zone.toString()<<endl;
       count++;
     }
   }
-  if (kindFilter != -1)
+
+  if (kind == DomainInfo::All) {
     ret<<parts[1]<<" zonecount:"<<count;
-  else
+  }
+  else {
     ret<<"All zonecount:"<<count;
+  }
 
   return ret.str();
 }
index 0289965f21a055d7f729c2049171b8c9385b7ddb..3f29b7520efed749f88b0bdf236735b59ea85277 100644 (file)
@@ -1,3 +1,4 @@
+/*.log
 /*.xml
 /*.tar
 /K*
index a6c21ab619abbef23a7751987e655acba0a5f2cb..4ad78f767e447ebe6d949662e939d4d60ee33650 100644 (file)
@@ -32,22 +32,22 @@ __EOF__
        do
                zones=$((zones+1))
                if [ "$zone" = "example.com" ]; then
-                       $PDNSUTIL --config-dir=. --config-name=gmysql2 create-slave-zone $zone 127.0.0.1:$port
+                       $PDNSUTIL --config-dir=. --config-name=gmysql2 create-secondary-zone $zone 127.0.0.1:$port
                fi
                if [ "$zone" = "test.com" ]; then
-                       $PDNSUTIL --config-dir=. --config-name=gmysql2 create-slave-zone $zone 127.0.0.1:$port
+                       $PDNSUTIL --config-dir=. --config-name=gmysql2 create-secondary-zone $zone 127.0.0.1:$port
                        $PDNSUTIL --config-dir=. --config-name=gmysql2 set-catalog $zone other-catalog.invalid
                        $PDNSUTIL --config-dir=. --config-name=gmysql2 set-options $zone '{"consumer":{"coo":"catalog.invalid","unique":"42"}}'
                fi
                if [ "$zone" = "tsig.com" ]; then
-                       $PDNSUTIL --config-dir=. --config-name=gmysql2 create-slave-zone $zone 127.0.0.2:$port
+                       $PDNSUTIL --config-dir=. --config-name=gmysql2 create-secondary-zone $zone 127.0.0.2:$port
                        $PDNSUTIL --config-dir=. --config-name=gmysql2 set-catalog $zone catalog.invalid
                        $PDNSUTIL --config-dir=. --config-name=gmysql2 set-options $zone "{\"consumer\":{\"unique\":\"$($SAXFR 127.0.0.1 $port catalog.invalid | grep $zone | grep PTR | cut -d'.' -f1)\"}}"
                        $PDNSUTIL --config-dir=. --config-name=gmysql2 import-tsig-key test $ALGORITHM $KEY
-                       $PDNSUTIL --config-dir=. --config-name=gmysql2 activate-tsig-key tsig.com test slave
+                       $PDNSUTIL --config-dir=. --config-name=gmysql2 activate-tsig-key tsig.com test secondary
                fi
                if [ "$zone" = "stest.com" ]; then
-                       $PDNSUTIL --config-dir=. --config-name=gmysql2 create-slave-zone $zone 127.0.0.1:$port
+                       $PDNSUTIL --config-dir=. --config-name=gmysql2 create-secondary-zone $zone 127.0.0.1:$port
                        $PDNSUTIL --config-dir=. --config-name=gmysql2 set-catalog $zone other-catalog.invalid
                        $PDNSUTIL --config-dir=. --config-name=gmysql2 set-options $zone "{\"consumer\":{\"coo\":\"catalog.invalid\",\"unique\":\"$($SAXFR 127.0.0.1 $port catalog.invalid | grep $zone | grep PTR | cut -d'.' -f1)\"}}"
                        if [[ $skipreasons != *nolua* ]]; then
@@ -55,7 +55,7 @@ __EOF__
                        fi
                fi
                if [ "$zone" = "." ]; then
-                       $PDNSUTIL --config-dir=. --config-name=gmysql2 create-slave-zone $zone 127.0.0.1:$port
+                       $PDNSUTIL --config-dir=. --config-name=gmysql2 create-secondary-zone $zone 127.0.0.1:$port
                fi
        done
 
@@ -63,10 +63,10 @@ __EOF__
        if [ $zones -ne 1 ] # detect root tests
        then
                zones=$((zones+1))
-               $PDNSUTIL --config-dir=. --config-name=gmysql2 create-slave-zone catalog.invalid 127.0.0.1:$port
+               $PDNSUTIL --config-dir=. --config-name=gmysql2 create-secondary-zone catalog.invalid 127.0.0.1:$port
                $PDNSUTIL --config-dir=. --config-name=gmysql2 set-kind catalog.invalid consumer
 
-               $PDNSUTIL --config-dir=. --config-name=gmysql2 create-slave-zone remove.invalid 127.0.0.1:$port
+               $PDNSUTIL --config-dir=. --config-name=gmysql2 create-secondary-zone remove.invalid 127.0.0.1:$port
                $PDNSUTIL --config-dir=. --config-name=gmysql2 set-catalog remove.invalid catalog.invalid
        fi
 
@@ -74,10 +74,12 @@ __EOF__
 
        $RUNWRAPPER $PDNS2 --daemon=no --local-port=$port --config-dir=. \
                --config-name=gmysql2 --socket-dir=./ --no-shuffle \
-               --slave --retrieval-threads=4 \
-               --slave-cycle-interval=300 --dname-processing &
+               --secondary --xfr-cycle-interval=15 --dname-processing &
 
-       echo 'waiting for zones to be slaved'
+       sleep 1
+       $PDNSCONTROL --config-name=gmysql2 --socket-dir=. --no-config retrieve catalog.invalid
+
+       echo 'waiting for zones to be fetched'
        loopcount=0
        while [ $loopcount -lt 30 ]
        do
index 7981a654c28b66bc0574532a57a7fd7e7c2ec287..0ce0faf9647d637f7ecc71a1e7a525cc430f47c0 100644 (file)
@@ -11,22 +11,22 @@ __EOF__
        do
                zones=$((zones+1))
                if [ "$zone" = "example.com" ]; then
-                       $PDNSUTIL --config-dir=. --config-name=lmdb2 create-slave-zone $zone 127.0.0.1:$port
+                       $PDNSUTIL --config-dir=. --config-name=lmdb2 create-secondary-zone $zone 127.0.0.1:$port
                fi
                if [ "$zone" = "test.com" ]; then
-                       $PDNSUTIL --config-dir=. --config-name=lmdb2 create-slave-zone $zone 127.0.0.1:$port
+                       $PDNSUTIL --config-dir=. --config-name=lmdb2 create-secondary-zone $zone 127.0.0.1:$port
                        $PDNSUTIL --config-dir=. --config-name=lmdb2 set-catalog $zone other-catalog.invalid
                        $PDNSUTIL --config-dir=. --config-name=lmdb2 set-options $zone '{"consumer":{"coo":"catalog.invalid","unique":"42"}}'
                fi
                if [ "$zone" = "tsig.com" ]; then
-                       $PDNSUTIL --config-dir=. --config-name=lmdb2 create-slave-zone $zone 127.0.0.2:$port
+                       $PDNSUTIL --config-dir=. --config-name=lmdb2 create-secondary-zone $zone 127.0.0.2:$port
                        $PDNSUTIL --config-dir=. --config-name=lmdb2 set-catalog $zone catalog.invalid
                        $PDNSUTIL --config-dir=. --config-name=lmdb2 set-options $zone "{\"consumer\":{\"unique\":\"$($SAXFR 127.0.0.1 $port catalog.invalid | grep $zone | grep PTR | cut -d'.' -f1)\"}}"
                        $PDNSUTIL --config-dir=. --config-name=lmdb2 import-tsig-key test $ALGORITHM $KEY
-                       $PDNSUTIL --config-dir=. --config-name=lmdb2 activate-tsig-key tsig.com test slave
+                       $PDNSUTIL --config-dir=. --config-name=lmdb2 activate-tsig-key tsig.com test secondary
                fi
                if [ "$zone" = "stest.com" ]; then
-                       $PDNSUTIL --config-dir=. --config-name=lmdb2 create-slave-zone $zone 127.0.0.1:$port
+                       $PDNSUTIL --config-dir=. --config-name=lmdb2 create-secondary-zone $zone 127.0.0.1:$port
                        $PDNSUTIL --config-dir=. --config-name=lmdb2 set-catalog $zone other-catalog.invalid
                        $PDNSUTIL --config-dir=. --config-name=lmdb2 set-options $zone "{\"consumer\":{\"coo\":\"catalog.invalid\",\"unique\":\"$($SAXFR 127.0.0.1 $port catalog.invalid | grep $zone | grep PTR | cut -d'.' -f1)\"}}"
                        if [[ $skipreasons != *nolua* ]]; then
@@ -34,7 +34,7 @@ __EOF__
                        fi
                fi
                if [ "$zone" = "." ]; then
-                       $PDNSUTIL --config-dir=. --config-name=lmdb2 create-slave-zone $zone 127.0.0.1:$port
+                       $PDNSUTIL --config-dir=. --config-name=lmdb2 create-secondary-zone $zone 127.0.0.1:$port
                fi
        done
 
@@ -42,10 +42,10 @@ __EOF__
        if [ $zones -ne 1 ] # detect root tests
        then
                zones=$((zones+1))
-               $PDNSUTIL --config-dir=. --config-name=lmdb2 create-slave-zone catalog.invalid 127.0.0.1:$port
+               $PDNSUTIL --config-dir=. --config-name=lmdb2 create-secondary-zone catalog.invalid 127.0.0.1:$port
                $PDNSUTIL --config-dir=. --config-name=lmdb2 set-kind catalog.invalid consumer
 
-               $PDNSUTIL --config-dir=. --config-name=lmdb2 create-slave-zone remove.invalid 127.0.0.1:$port
+               $PDNSUTIL --config-dir=. --config-name=lmdb2 create-secondary-zone remove.invalid 127.0.0.1:$port
                $PDNSUTIL --config-dir=. --config-name=lmdb2 set-catalog remove.invalid catalog.invalid
        fi
 
@@ -53,9 +53,12 @@ __EOF__
 
        $RUNWRAPPER $PDNS2 --daemon=no --local-port=$port --config-dir=. \
                --config-name=lmdb2 --socket-dir=./ --no-shuffle \
-               --slave --dname-processing --api --api-key=secret &
+               --secondary --xfr-cycle-interval=15 --dname-processing --api --api-key=secret &
 
-       echo 'waiting for zones to be slaved'
+       sleep 1
+       $PDNSCONTROL --config-name=lmdb2 --socket-dir=. --no-config retrieve catalog.invalid
+
+       echo 'waiting for zones to be fetched'
        loopcount=0
        while [ $loopcount -lt 30 ]
        do