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()
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()
@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
# 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)
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))
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))
# 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
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))
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))