]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Add a regression test for randomized IDs over UDP
authorRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 12 Jun 2025 10:42:05 +0000 (12:42 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 12 Jun 2025 10:42:05 +0000 (12:42 +0200)
Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
regression-tests.dnsdist/test_Randomized.py [new file with mode: 0644]

diff --git a/regression-tests.dnsdist/test_Randomized.py b/regression-tests.dnsdist/test_Randomized.py
new file mode 100644 (file)
index 0000000..6954d37
--- /dev/null
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+import dns
+import socket
+from dnsdisttests import DNSDistTest
+
+class RandomizedIDs:
+    def testRandomizedIDOverUDPFromLuaConfig(self):
+        """
+        Randomized IDs over UDP: Lua config
+        """
+        name = 'lua-config.randomizedids.tests.powerdns.com.'
+        query = dns.message.make_query(name, 'A', 'IN')
+        response = dns.message.make_response(query)
+
+        randomized = False
+        for idx in range(10):
+            (receivedQuery, receivedResponse) = self.sendUDPQuery(query, response)
+            if socket.ntohs(receivedQuery.id) != idx:
+                randomized = True
+
+            receivedQuery.id = query.id
+            self.assertEqual(query, receivedQuery)
+            self.assertEqual(response, receivedResponse)
+
+        self.assertTrue(randomized)
+
+class RandomizedIDsLuaConfig(DNSDistTest, RandomizedIDs):
+    _config_template = """
+    setRandomizedIdsOverUDP(true)
+    newServer{address="127.0.0.1:%d"}
+    """
+
+class RandomizedIDsYAMLConfig(DNSDistTest, RandomizedIDs):
+    _yaml_config_template = """
+backends:
+  - address: "127.0.0.1:%d"
+    protocol: Do53
+tuning:
+  udp:
+    randomize_ids_to_backend: true
+    """
+    _yaml_config_params = ['_testServerPort']
+    _config_params = []