]> git.ipfire.org Git - thirdparty/pdns.git/blobdiff - regression-tests.dnsdist/test_Carbon.py
Merge pull request #14001 from rgacogne/ddist-ffi-policy-no-server
[thirdparty/pdns.git] / regression-tests.dnsdist / test_Carbon.py
index f075f4859e2dfc7f8c0524d69bf78a74e974a2db..d697fc8a1279c88d50878725a0a494bdd55e4d1b 100644 (file)
@@ -3,13 +3,13 @@ import threading
 import socket
 import sys
 import time
-from dnsdisttests import DNSDistTest, Queue
+from dnsdisttests import DNSDistTest, Queue, pickAvailablePort
 
 class TestCarbon(DNSDistTest):
 
-    _carbonServer1Port = 8000
+    _carbonServer1Port = pickAvailablePort()
     _carbonServer1Name = "carbonname1"
-    _carbonServer2Port = 8001
+    _carbonServer2Port = pickAvailablePort()
     _carbonServer2Name = "carbonname2"
     _carbonQueue1 = Queue()
     _carbonQueue2 = Queue()
@@ -53,10 +53,10 @@ class TestCarbon(DNSDistTest):
                 cls._carbonQueue1.put(lines, True, timeout=2.0)
             else:
                 cls._carbonQueue2.put(lines, True, timeout=2.0)
-            if threading.currentThread().name in cls._carbonCounters:
-                cls._carbonCounters[threading.currentThread().name] += 1
+            if threading.current_thread().name in cls._carbonCounters:
+                cls._carbonCounters[threading.current_thread().name] += 1
             else:
-                cls._carbonCounters[threading.currentThread().name] = 1
+                cls._carbonCounters[threading.current_thread().name] = 1
 
             conn.close()
         sock.close()
@@ -64,13 +64,20 @@ class TestCarbon(DNSDistTest):
     @classmethod
     def startResponders(cls):
         cls._CarbonResponder1 = threading.Thread(name='Carbon Responder 1', target=cls.CarbonResponder, args=[cls._carbonServer1Port])
-        cls._CarbonResponder1.setDaemon(True)
+        cls._CarbonResponder1.daemon = True
         cls._CarbonResponder1.start()
 
         cls._CarbonResponder2 = threading.Thread(name='Carbon Responder 2', target=cls.CarbonResponder, args=[cls._carbonServer2Port])
-        cls._CarbonResponder2.setDaemon(True)
+        cls._CarbonResponder2.daemon = True
         cls._CarbonResponder2.start()
 
+    def isfloat(self, num):
+        try:
+            float(num)
+            return True
+        except ValueError:
+            return False
+
     def testCarbon(self):
         """
         Carbon: send data to 2 carbon servers
@@ -78,12 +85,13 @@ class TestCarbon(DNSDistTest):
         # wait for the carbon data to be sent
         time.sleep(self._carbonInterval + 1)
 
+        # check if the servers have received our data
+        # we will block for a short while if the data is not already there,
+        # and an exception will be raised after the timeout
         # first server
-        self.assertFalse(self._carbonQueue1.empty())
-        data1 = self._carbonQueue1.get(False)
+        data1 = self._carbonQueue1.get(block=True, timeout=2.0)
         # second server
-        self.assertFalse(self._carbonQueue2.empty())
-        data2 = self._carbonQueue2.get(False)
+        data2 = self._carbonQueue2.get(block=True, timeout=2.0)
         after = time.time()
 
         self.assertTrue(data1)
@@ -92,8 +100,8 @@ class TestCarbon(DNSDistTest):
         for line in data1.splitlines():
             self.assertTrue(line.startswith(expectedStart))
             parts = line.split(b' ')
-            self.assertEquals(len(parts), 3)
-            self.assertTrue(parts[1].isdigit())
+            self.assertEqual(len(parts), 3)
+            self.assertTrue(self.isfloat(parts[1]))
             self.assertTrue(parts[2].isdigit())
             self.assertTrue(int(parts[2]) <= int(after))
 
@@ -103,8 +111,8 @@ class TestCarbon(DNSDistTest):
         for line in data2.splitlines():
             self.assertTrue(line.startswith(expectedStart))
             parts = line.split(b' ')
-            self.assertEquals(len(parts), 3)
-            self.assertTrue(parts[1].isdigit())
+            self.assertEqual(len(parts), 3)
+            self.assertTrue(self.isfloat(parts[1]))
             self.assertTrue(parts[2].isdigit())
             self.assertTrue(int(parts[2]) <= int(after))
 
@@ -120,12 +128,13 @@ class TestCarbon(DNSDistTest):
         # wait for the carbon data to be sent
         time.sleep(self._carbonInterval + 1)
 
+        # check if the servers have received our data
+        # we will block for a short while if the data is not already there,
+        # and an exception will be raised after the timeout
         # first server
-        self.assertFalse(self._carbonQueue1.empty())
-        data1 = self._carbonQueue1.get(False)
+        data1 = self._carbonQueue1.get(block=True, timeout=2.0)
         # second server
-        self.assertFalse(self._carbonQueue2.empty())
-        data2 = self._carbonQueue2.get(False)
+        data2 = self._carbonQueue2.get(block=True, timeout=2.0)
         after = time.time()
 
         # check the first carbon server got both servers and
@@ -138,15 +147,15 @@ class TestCarbon(DNSDistTest):
             if expectedStart in line:
                 parts = line.split(b' ')
                 if b'servers-up' in line:
-                    self.assertEquals(len(parts), 3)
+                    self.assertEqual(len(parts), 3)
                     self.assertTrue(parts[1].isdigit())
-                    self.assertEquals(int(parts[1]), 2)
+                    self.assertEqual(int(parts[1]), 2)
                     self.assertTrue(parts[2].isdigit())
                     self.assertTrue(int(parts[2]) <= int(after))
                 else:
-                    self.assertEquals(len(parts), 3)
+                    self.assertEqual(len(parts), 3)
                     self.assertTrue(parts[1].isdigit())
-                    self.assertEquals(int(parts[1]), 3)
+                    self.assertEqual(int(parts[1]), 3)
                     self.assertTrue(parts[2].isdigit())
                     self.assertTrue(int(parts[2]) <= int(after))
 
@@ -161,14 +170,14 @@ class TestCarbon(DNSDistTest):
             if expectedStart in line:
                 parts = line.split(b' ')
                 if b'servers-up' in line:
-                    self.assertEquals(len(parts), 3)
+                    self.assertEqual(len(parts), 3)
                     self.assertTrue(parts[1].isdigit())
-                    self.assertEquals(int(parts[1]), 2)
+                    self.assertEqual(int(parts[1]), 2)
                     self.assertTrue(parts[2].isdigit())
                     self.assertTrue(int(parts[2]) <= int(after))
                 else:
-                    self.assertEquals(len(parts), 3)
+                    self.assertEqual(len(parts), 3)
                     self.assertTrue(parts[1].isdigit())
-                    self.assertEquals(int(parts[1]), 3)
+                    self.assertEqual(int(parts[1]), 3)
                     self.assertTrue(parts[2].isdigit())
                     self.assertTrue(int(parts[2]) <= int(after))