]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Deduplicate dnsdist test code
authorChristian Hofstaedtler <christian.hofstaedtler@deduktiva.com>
Sat, 2 Jan 2016 22:29:23 +0000 (23:29 +0100)
committerChristian Hofstaedtler <christian@hofstaedtler.name>
Sat, 2 Jan 2016 23:29:53 +0000 (00:29 +0100)
regression-tests.dnsdist/dnsdist.conf [deleted file]
regression-tests.dnsdist/dnsdisttests.py
regression-tests.dnsdist/test_Advanced.py
regression-tests.dnsdist/test_EdnsClientSubnet.py

diff --git a/regression-tests.dnsdist/dnsdist.conf b/regression-tests.dnsdist/dnsdist.conf
deleted file mode 100644 (file)
index 13f3112..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-    truncateTC(true)
-    addAnyTCRule()
-    addAction(RegexRule("evil[0-9]{4,}\\.regex\\.tests\\.powerdns\\.com$"), RCodeAction(5))
-    mySMN = newSuffixMatchNode()
-    mySMN:add(newDNSName("nameAndQtype.tests.powerdns.com."))
-    addAction(AndRule{SuffixMatchNodeRule(mySMN), QTypeRule("TXT")}, RCodeAction(4))
-    block=newDNSName("powerdns.org.")
-    function blockFilter(remote, qname, qtype, dh)
-        if(qname:isPartOf(block))
-        then
-            print("Blocking *.powerdns.org")
-            return true
-        end
-        return false
-    end
index b4a289948e3db856073051e4ba96ab0b6cdc7143..f66f8c8a0c0e299c106993c3cfe282a7d03fd0be 100644 (file)
@@ -11,6 +11,8 @@ import sys
 import threading
 import time
 import unittest
+import random
+
 
 class DNSDistTest(unittest.TestCase):
     """
@@ -23,11 +25,30 @@ class DNSDistTest(unittest.TestCase):
     """
     _dnsDistPort = 5340
     _testServerPort = 5350
-    _dnsdistcmd = (os.environ['DNSDISTBIN'] + " -C dnsdist.conf --acl 127.0.0.1/32 -l 127.0.0.1:" + str(_dnsDistPort) + " 127.0.0.1:" + str(_testServerPort)).split()
     _toResponderQueue = Queue.Queue()
     _fromResponderQueue = Queue.Queue()
     _dnsdist = None
     _responsesCounter = {}
+    _config_template = """
+    newServer{address="127.0.0.1:%s"}
+    truncateTC(true)
+    addAnyTCRule()
+    addAction(RegexRule("evil[0-9]{4,}\\\\.regex\\\\.tests\\\\.powerdns\\\\.com$"), RCodeAction(5))
+    mySMN = newSuffixMatchNode()
+    mySMN:add(newDNSName("nameAndQtype.tests.powerdns.com."))
+    addAction(AndRule{SuffixMatchNodeRule(mySMN), QTypeRule("TXT")}, RCodeAction(4))
+    block=newDNSName("powerdns.org.")
+    function blockFilter(remote, qname, qtype, dh)
+        if(qname:isPartOf(block))
+        then
+            print("Blocking *.powerdns.org")
+            return true
+        end
+        return false
+    end
+    """
+    _config_params = ['_testServerPort']
+    _acl = ['127.0.0.1/32']
 
     @classmethod
     def startResponders(cls):
@@ -46,12 +67,24 @@ class DNSDistTest(unittest.TestCase):
     @classmethod
     def startDNSDist(cls, shutUp=True):
         print("Launching dnsdist..")
-        print(' '.join(cls._dnsdistcmd))
+        conffile = 'dnsdist_test.conf'
+        params = tuple([getattr(cls, param) for param in cls._config_params])
+        print(params)
+        with open(conffile, 'w') as conf:
+            conf.write("-- Autogenerated by dnsdisttests.py\n")
+            conf.write(cls._config_template % params)
+
+        dnsdistcmd = [os.environ['DNSDISTBIN'], '-C', conffile,
+                      '-l', '127.0.0.1:%d' % cls._dnsDistPort]
+        for acl in cls._acl:
+            dnsdistcmd.extend(['--acl', acl])
+        print(' '.join(dnsdistcmd))
+
         if shutUp:
             with open(os.devnull, 'w') as fdDevNull:
-                cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True, stdout=fdDevNull, stderr=fdDevNull)
+                cls._dnsdist = subprocess.Popen(dnsdistcmd, close_fds=True, stdout=fdDevNull, stderr=fdDevNull)
         else:
-            cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True)
+            cls._dnsdist = subprocess.Popen(dnsdistcmd, close_fds=True)
 
         time.sleep(1)
 
index b60fc75383efea0c9b8aeb73529a38644b90820c..662999b18988fd249e76d2634c24c7c1172bbe07 100644 (file)
@@ -10,35 +10,12 @@ from dnsdisttests import DNSDistTest
 
 class TestAdvancedFixupCase(DNSDistTest):
 
-    _dnsDistPort = 5340
     _config_template = """
     truncateTC(true)
     fixupCase(true)
     newServer{address="127.0.0.1:%s"}
     """
 
-    _dnsdistcmd = (os.environ['DNSDISTBIN'] + " -C dnsdist_fixupcase.conf --acl 127.0.0.1/32 -l 127.0.0.1:" + str(_dnsDistPort)).split()
-
-    @classmethod
-    def startDNSDist(cls, shutUp=True):
-        print("Launching dnsdist..")
-        with open('dnsdist_fixupcase.conf', 'w') as conf:
-            conf.write(cls._config_template % str(cls._testServerPort))
-
-        print(' '.join(cls._dnsdistcmd))
-        if shutUp:
-            with open(os.devnull, 'w') as fdDevNull:
-                cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True, stdout=fdDevNull, stderr=fdDevNull)
-        else:
-            cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True)
-
-        time.sleep(1)
-
-        if cls._dnsdist.poll() is not None:
-            cls._dnsdist.terminate()
-            cls._dnsdist.wait()
-            sys.exit(cls._dnsdist.returncode)
-
     def testAdvancedFixupCase(self):
         """
         Send a query with lower and upper chars,
@@ -77,34 +54,11 @@ class TestAdvancedFixupCase(DNSDistTest):
 
 class TestAdvancedRemoveRD(DNSDistTest):
 
-    _dnsDistPort = 5340
     _config_template = """
     addNoRecurseRule("norecurse.advanced.tests.powerdns.com.")
     newServer{address="127.0.0.1:%s"}
     """
 
-    _dnsdistcmd = (os.environ['DNSDISTBIN'] + " -C dnsdist_noRD.conf --acl 127.0.0.1/32 -l 127.0.0.1:" + str(_dnsDistPort)).split()
-
-    @classmethod
-    def startDNSDist(cls, shutUp=True):
-        print("Launching dnsdist..")
-        with open('dnsdist_noRD.conf', 'w') as conf:
-            conf.write(cls._config_template % str(cls._testServerPort))
-
-        print(' '.join(cls._dnsdistcmd))
-        if shutUp:
-            with open(os.devnull, 'w') as fdDevNull:
-                cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True, stdout=fdDevNull, stderr=fdDevNull)
-        else:
-            cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True)
-
-        time.sleep(1)
-
-        if cls._dnsdist.poll() is not None:
-            cls._dnsdist.terminate()
-            cls._dnsdist.wait()
-            sys.exit(cls._dnsdist.returncode)
-
     def testAdvancedNoRD(self):
         """
         Send a query with RD,
@@ -174,34 +128,11 @@ class TestAdvancedRemoveRD(DNSDistTest):
 
 class TestAdvancedAddCD(DNSDistTest):
 
-    _dnsDistPort = 5340
     _config_template = """
     addDisableValidationRule("setcd.advanced.tests.powerdns.com.")
     newServer{address="127.0.0.1:%s"}
     """
 
-    _dnsdistcmd = (os.environ['DNSDISTBIN'] + " -C dnsdist_setCD.conf --acl 127.0.0.1/32 -l 127.0.0.1:" + str(_dnsDistPort)).split()
-
-    @classmethod
-    def startDNSDist(cls, shutUp=True):
-        print("Launching dnsdist..")
-        with open('dnsdist_setCD.conf', 'w') as conf:
-            conf.write(cls._config_template % str(cls._testServerPort))
-
-        print(' '.join(cls._dnsdistcmd))
-        if shutUp:
-            with open(os.devnull, 'w') as fdDevNull:
-                cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True, stdout=fdDevNull, stderr=fdDevNull)
-        else:
-            cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True)
-
-        time.sleep(1)
-
-        if cls._dnsdist.poll() is not None:
-            cls._dnsdist.terminate()
-            cls._dnsdist.wait()
-            sys.exit(cls._dnsdist.returncode)
-
     def testAdvancedSetCD(self):
         """
         Send a query with CD cleared,
@@ -270,34 +201,11 @@ class TestAdvancedAddCD(DNSDistTest):
 
 class TestAdvancedSpoof(DNSDistTest):
 
-    _dnsDistPort = 5340
     _config_template = """
     addDomainSpoof("spoof.tests.powerdns.com.", "192.0.2.1", "2001:DB8::1")
     newServer{address="127.0.0.1:%s"}
     """
 
-    _dnsdistcmd = (os.environ['DNSDISTBIN'] + " -C dnsdist_spoof.conf --acl 127.0.0.1/32 -l 127.0.0.1:" + str(_dnsDistPort)).split()
-
-    @classmethod
-    def startDNSDist(cls, shutUp=True):
-        print("Launching dnsdist..")
-        with open('dnsdist_spoof.conf', 'w') as conf:
-            conf.write(cls._config_template % str(cls._testServerPort))
-
-        print(' '.join(cls._dnsdistcmd))
-        if shutUp:
-            with open(os.devnull, 'w') as fdDevNull:
-                cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True, stdout=fdDevNull, stderr=fdDevNull)
-        else:
-            cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True)
-
-        time.sleep(1)
-
-        if cls._dnsdist.poll() is not None:
-            cls._dnsdist.terminate()
-            cls._dnsdist.wait()
-            sys.exit(cls._dnsdist.returncode)
-
     def testSpoofA(self):
         """
         Send an A query to "spoof.tests.powerdns.com.",
@@ -355,34 +263,11 @@ class TestAdvancedSpoof(DNSDistTest):
 
 class TestAdvancedPoolRouting(DNSDistTest):
 
-    _dnsDistPort = 5340
     _config_template = """
     newServer{address="127.0.0.1:%s", pool="real"}
     addPoolRule("pool.tests.powerdns.com", "real")
     """
 
-    _dnsdistcmd = (os.environ['DNSDISTBIN'] + " -C dnsdist_pool.conf --acl 127.0.0.1/32 -l 127.0.0.1:" + str(_dnsDistPort)).split()
-
-    @classmethod
-    def startDNSDist(cls, shutUp=True):
-        print("Launching dnsdist..")
-        with open('dnsdist_pool.conf', 'w') as conf:
-            conf.write(cls._config_template % str(cls._testServerPort))
-
-        print(' '.join(cls._dnsdistcmd))
-        if shutUp:
-            with open(os.devnull, 'w') as fdDevNull:
-                cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True, stdout=fdDevNull, stderr=fdDevNull)
-        else:
-            cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True)
-
-        time.sleep(1)
-
-        if cls._dnsdist.poll() is not None:
-            cls._dnsdist.terminate()
-            cls._dnsdist.wait()
-            sys.exit(cls._dnsdist.returncode)
-
     def testPolicyPool(self):
         """
         Send an A query to "pool.tests.powerdns.com.",
@@ -427,8 +312,8 @@ class TestAdvancedPoolRouting(DNSDistTest):
 
 class TestAdvancedRoundRobinLB(DNSDistTest):
 
-    _dnsDistPort = 5340
     _testServer2Port = 5351
+    _config_params = ['_testServerPort', '_testServer2Port']
     _config_template = """
     setServerPolicy(roundrobin)
     s1 = newServer{address="127.0.0.1:%s"}
@@ -437,28 +322,6 @@ class TestAdvancedRoundRobinLB(DNSDistTest):
     s2:setUp()
     """
 
-    _dnsdistcmd = (os.environ['DNSDISTBIN'] + " -C dnsdist_rr_lb.conf --acl 127.0.0.1/32 -l 127.0.0.1:" + str(_dnsDistPort)).split()
-
-    @classmethod
-    def startDNSDist(cls, shutUp=True):
-        print("Launching dnsdist..")
-        with open('dnsdist_rr_lb.conf', 'w') as conf:
-            conf.write(cls._config_template % (str(cls._testServerPort), str(cls._testServer2Port)))
-
-        print(' '.join(cls._dnsdistcmd))
-        if shutUp:
-            with open(os.devnull, 'w') as fdDevNull:
-                cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True, stdout=fdDevNull, stderr=fdDevNull)
-        else:
-            cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True)
-
-        time.sleep(1)
-
-        if cls._dnsdist.poll() is not None:
-            cls._dnsdist.terminate()
-            cls._dnsdist.wait()
-            sys.exit(cls._dnsdist.returncode)
-
     @classmethod
     def startResponders(cls):
         print("Launching responders..")
@@ -519,8 +382,8 @@ class TestAdvancedRoundRobinLB(DNSDistTest):
 
 class TestAdvancedRoundRobinLBOneDown(DNSDistTest):
 
-    _dnsDistPort = 5340
     _testServer2Port = 5351
+    _config_params = ['_testServerPort', '_testServer2Port']
     _config_template = """
     setServerPolicy(roundrobin)
     s1 = newServer{address="127.0.0.1:%s"}
@@ -529,28 +392,6 @@ class TestAdvancedRoundRobinLBOneDown(DNSDistTest):
     s2:setDown()
     """
 
-    _dnsdistcmd = (os.environ['DNSDISTBIN'] + " -C dnsdist_rr_lb_down.conf --acl 127.0.0.1/32 -l 127.0.0.1:" + str(_dnsDistPort)).split()
-
-    @classmethod
-    def startDNSDist(cls, shutUp=True):
-        print("Launching dnsdist..")
-        with open('dnsdist_rr_lb_down.conf', 'w') as conf:
-            conf.write(cls._config_template % (str(cls._testServerPort), str(cls._testServer2Port)))
-
-        print(' '.join(cls._dnsdistcmd))
-        if shutUp:
-            with open(os.devnull, 'w') as fdDevNull:
-                cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True, stdout=fdDevNull, stderr=fdDevNull)
-        else:
-            cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True)
-
-        time.sleep(1)
-
-        if cls._dnsdist.poll() is not None:
-            cls._dnsdist.terminate()
-            cls._dnsdist.wait()
-            sys.exit(cls._dnsdist.returncode)
-
     def testRRWithOneDown(self):
         """
         Send 100 A queries to "rr.tests.powerdns.com.",
@@ -594,32 +435,10 @@ class TestAdvancedRoundRobinLBOneDown(DNSDistTest):
 
 class TestAdvancedACL(DNSDistTest):
 
-    _dnsDistPort = 5340
     _config_template = """
     newServer{address="127.0.0.1:%s"}
     """
-
-    _dnsdistcmd = (os.environ['DNSDISTBIN'] + " -C dnsdist_acl.conf --acl 192.0.2.1/32 -l 127.0.0.1:" + str(_dnsDistPort)).split()
-
-    @classmethod
-    def startDNSDist(cls, shutUp=True):
-        print("Launching dnsdist..")
-        with open('dnsdist_acl.conf', 'w') as conf:
-            conf.write(cls._config_template % str(cls._testServerPort))
-
-        print(' '.join(cls._dnsdistcmd))
-        if shutUp:
-            with open(os.devnull, 'w') as fdDevNull:
-                cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True, stdout=fdDevNull, stderr=fdDevNull)
-        else:
-            cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True)
-
-        time.sleep(1)
-
-        if cls._dnsdist.poll() is not None:
-            cls._dnsdist.terminate()
-            cls._dnsdist.wait()
-            sys.exit(cls._dnsdist.returncode)
+    _acl = ['192.0.2.1/32']
 
     def testACLBlocked(self):
         """
@@ -638,34 +457,11 @@ class TestAdvancedACL(DNSDistTest):
 
 class TestAdvancedDelay(DNSDistTest):
 
-    _dnsDistPort = 5340
     _config_template = """
     addAction(AllRule(), DelayAction(1000))
     newServer{address="127.0.0.1:%s"}
     """
 
-    _dnsdistcmd = (os.environ['DNSDISTBIN'] + " -C dnsdist_delay.conf --acl 127.0.0.1/32 -l 127.0.0.1:" + str(_dnsDistPort)).split()
-
-    @classmethod
-    def startDNSDist(cls, shutUp=True):
-        print("Launching dnsdist..")
-        with open('dnsdist_delay.conf', 'w') as conf:
-            conf.write(cls._config_template % str(cls._testServerPort))
-
-        print(' '.join(cls._dnsdistcmd))
-        if shutUp:
-            with open(os.devnull, 'w') as fdDevNull:
-                cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True, stdout=fdDevNull, stderr=fdDevNull)
-        else:
-            cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True)
-
-        time.sleep(1)
-
-        if cls._dnsdist.poll() is not None:
-            cls._dnsdist.terminate()
-            cls._dnsdist.wait()
-            sys.exit(cls._dnsdist.returncode)
-
     def testDelayed(self):
         """
         Send an A query to "tests.powerdns.com.",
index aa8ca34c5e1af9350910b629fd9b6c893e6ae8df..7147bb9952876cb235911ea7962c46f71195a34c 100644 (file)
@@ -14,7 +14,6 @@ class TestEdnsClientSubnetNoOverride(DNSDistTest):
     original query.
     """
 
-    _dnsDistPort = 5340
     _config_template = """
     truncateTC(true)
     block=newDNSName("powerdns.org.")
@@ -29,28 +28,6 @@ class TestEdnsClientSubnetNoOverride(DNSDistTest):
     newServer{address="127.0.0.1:%s", useClientSubnet=true}
     """
 
-    _dnsdistcmd = (os.environ['DNSDISTBIN'] + " -C dnsdist_ecs_no_override.conf --acl 127.0.0.1/32 -l 127.0.0.1:" + str(_dnsDistPort)).split()
-
-    @classmethod
-    def startDNSDist(cls, shutUp=True):
-        print("Launching dnsdist..")
-        with open('dnsdist_ecs_no_override.conf', 'w') as conf:
-            conf.write(cls._config_template % str(cls._testServerPort))
-
-        print(' '.join(cls._dnsdistcmd))
-        if shutUp:
-            with open(os.devnull, 'w') as fdDevNull:
-                cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True, stdout=fdDevNull, stderr=fdDevNull)
-        else:
-            cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True)
-
-        time.sleep(1)
-
-        if cls._dnsdist.poll() is not None:
-            cls._dnsdist.terminate()
-            cls._dnsdist.wait()
-            sys.exit(cls._dnsdist.returncode)
-
     def testWithoutEDNS(self):
         """
         Send a query without EDNS, check that the query
@@ -166,7 +143,6 @@ class TestEdnsClientSubnetOverride(DNSDistTest):
     option, overwriting any existing value.
     """
 
-    _dnsDistPort = 5340
     _config_template = """
     truncateTC(true)
     block=newDNSName("powerdns.org.")
@@ -184,28 +160,6 @@ class TestEdnsClientSubnetOverride(DNSDistTest):
     newServer{address="127.0.0.1:%s", useClientSubnet=true}
     """
 
-    _dnsdistcmd = (os.environ['DNSDISTBIN'] + " -C dnsdist_ecs_override.conf --acl 127.0.0.1/32 -l 127.0.0.1:" + str(_dnsDistPort)).split()
-
-    @classmethod
-    def startDNSDist(cls, shutUp=True):
-        print("Launching dnsdist..")
-        with open('dnsdist_ecs_override.conf', 'w') as conf:
-            conf.write(cls._config_template % str(cls._testServerPort))
-
-        print(' '.join(cls._dnsdistcmd))
-        if shutUp:
-            with open(os.devnull, 'w') as fdDevNull:
-                cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True, stdout=fdDevNull, stderr=fdDevNull)
-        else:
-            cls._dnsdist = subprocess.Popen(cls._dnsdistcmd, close_fds=True)
-
-        time.sleep(1)
-
-        if cls._dnsdist.poll() is not None:
-            cls._dnsdist.terminate()
-            cls._dnsdist.wait()
-            sys.exit(cls._dnsdist.returncode)
-
     def testWithoutEDNS(self):
         """
         Send a query without EDNS, check that the query