]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Test the built-in console client in our regression tests 15824/head
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 11 Jul 2025 10:02:10 +0000 (12:02 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Wed, 16 Jul 2025 16:08:06 +0000 (18:08 +0200)
Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
regression-tests.dnsdist/test_Console.py

index 8d394322a5246abcd1f11c53195071049f3993ad..8dc957da030c9f78ea9b25d408cbafbfdf5b37ec 100644 (file)
@@ -4,6 +4,7 @@ import cdbx
 import dns
 import os
 import socket
+import subprocess
 import time
 from dnsdisttests import DNSDistTest
 
@@ -243,3 +244,33 @@ class TestConsoleRings(DNSDistTest):
         self.assertEqual(backend, f"127.0.0.1:{self._testServerPort}")
         isResponse = self.sendConsoleCommand(f'tostring(getRingEntries()[{index}].isResponse)').rstrip()
         self.assertEqual(isResponse, "true")
+
+class TestConsoleViaBuiltInClient(DNSDistTest):
+
+    _consoleKey = DNSDistTest.generateConsoleKey()
+    _consoleKeyB64 = base64.b64encode(_consoleKey).decode('ascii')
+
+    _config_params = ['_consoleKeyB64', '_consolePort', '_testServerPort']
+    _config_template = """
+    setKey("%s")
+    controlSocket("127.0.0.1:%s")
+    newServer{address="127.0.0.1:%d"}
+    """
+
+    def testConsoleViaBuiltInclient(self):
+        """
+        Console: Built-in client
+        """
+        output = None
+        try:
+            confFile = os.path.join('configs', 'dnsdist_%s.conf' % (self.__class__.__name__))
+            testcmd = [os.environ['DNSDISTBIN'], '--client', '-C', confFile ]
+            process = subprocess.Popen(testcmd, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True)
+            output = process.communicate(input=b'showVersion()\n')
+        except subprocess.CalledProcessError as exc:
+            raise AssertionError('%s failed (%d): %s' % (testcmd, process.returncode, process.output))
+
+        if process.returncode != 0:
+          raise AssertionError('%s failed (%d): %s' % (testcmd, process.returncode, output))
+
+        self.assertTrue(output[0].startswith(b'dnsdist '))