def test_tranmission_queue_buildheap(self): # Test buildheap, cleans up the heap when a large number of # messages have been dequeued tQ = TransmissionQueue() now = time.time() node = self._create_node() # Add 10 messages to the queue for i in range(10): msg = self._create_msg() tQ.enqueue_message(msg, now) before = str(tQ._heap) # Should not change the heap, no messages have been dequeued tQ._buildheap() after = str(tQ._heap) self.assertEqual(before, after) before = str(tQ._heap) for i in range(7): # Remove 7 messages from queue # not using dequeue_message so that buildheap() won't be called msgId = tQ._messages.keys().pop() tQ._messages.pop(msgId, None) tQ._times.pop(msgId, None) # The heap has not changed, even though 7 messages have been "dequeued" after = str(tQ._heap) self.assertEqual(before, after) # The heap is cleaned up and left with only the 3 messages. tQ._buildheap() after = str(tQ._heap) self.assertNotEqual(before, after) self.assertEqual(len(tQ._heap), 3)
def test_tranmission_queue_head(self): # Test head property of transmission Queue tQ = TransmissionQueue() now = time.time() node = self._create_node() msg = self._create_msg() # Should return none, since no messages in queue head = tQ.Head self.assertIsNone(head) # Add a message to the queue tQ.enqueue_message(msg, now) # Return the time and message at the head head = tQ.Head self.assertEquals(head[0], now) self.assertEquals(head[1], msg)
def test_tranmission_queue_head(self): # Test head property of transmission Queue tQ = TransmissionQueue() now = time.time() node = self._create_node() msg = self._create_msg() # Should return none, since no messages in queue head = tQ.Head self.assertIsNone(head) # Add a message to the queue tQ.enqueue_message(msg, now) # Return the time and message at the head head = tQ.Head self.assertEqual(head[0], now) self.assertEqual(head[1], msg)
def test_tranmission_queue_messages(self): # Test the Message property of TransmissionQueue tQ = TransmissionQueue() now = time.time() node = self._create_node() msg = self._create_msg() # No messages self.assertEquals(tQ.Messages, []) tQ.enqueue_message(msg, now) # 1 message self.assertEquals(tQ.Messages, [msg.Identifier]) msg2 = self._create_msg() # 2 messages, check if messages id are in Messages tQ.enqueue_message(msg2, now) self.assertIn(msg2.Identifier, tQ.Messages) self.assertIn(msg.Identifier, tQ.Messages)
def test_tranmission_queue_enqueue_message(self): # Test Enqueuing a message tQ = TransmissionQueue() now = time.time() node = self._create_node() msg = self._create_msg() # Enqueue 1 message tQ.enqueue_message(msg, now) self.assertIn(msg.Identifier, tQ._messages) self.assertIn(msg.Identifier, tQ._times) self.assertIn((now, msg.Identifier), tQ._heap) # Enqueue 10 messages for i in range(10): msg = self._create_msg() tQ.enqueue_message(msg, now) self.assertEquals(len(tQ._messages), 11)
def test_tranmission_queue_trimheap(self): # Test _trimheap, remove messages that are no longer valid tQ = TransmissionQueue() now = time.time() node = self._create_node() msg = self._create_msg() # Test the _trimheap doesn't break on empty heap tQ._trimheap() self.assertEqual(tQ._heap, []) tQ.enqueue_message(msg, now) tQ._trimheap() # Should not have changed anything self.assertEqual(tQ._heap, [(now, msg.Identifier)]) # Change time to send in times, but not in heap, this makes it invalid tQ._times[msg.Identifier] = 0.0 tQ._trimheap() self.assertEqual(tQ._heap, [])
def test_tranmission_queue_buildheap(self): # Test buildheap, cleans up the heap when a large number of # messages have been dequeued tQ = TransmissionQueue() now = time.time() node = self._create_node() # Add 10 messages to the queue for i in range(10): msg = self._create_msg() tQ.enqueue_message(msg, now) before = str(tQ._heap) # Should not change the heap, no messages have been dequeued tQ._buildheap() after = str(tQ._heap) self.assertEquals(before, after) before = str(tQ._heap) for i in range(7): # Remove 7 messages from queue # not using dequeue_message so that buildheap() won't be called msgId = tQ._messages.keys().pop() tQ._messages.pop(msgId, None) tQ._times.pop(msgId, None) # The heap has not changed, even though 7 messages have been "dequeued" after = str(tQ._heap) self.assertEquals(before, after) # The heap is cleaned up and left with only the 3 messages. tQ._buildheap() after = str(tQ._heap) self.assertNotEquals(before, after) self.assertEquals(len(tQ._heap), 3)
def test_tranmission_queue_enqueue_message_duplicates(self): # Test Enqueuing a message, try to enqueue twice tQ = TransmissionQueue() now = time.time() node = self._create_node() msg = self._create_msg() tQ.enqueue_message(msg, now) self.assertIn(msg.Identifier, tQ._messages) self.assertIn(msg.Identifier, tQ._times) self.assertIn((now, msg.Identifier), tQ._heap) # Trying to enqueue the same message twice should throw an # AssertionError try: tQ.enqueue_message(msg, now) self.fail("This should throw an assertionError") except AssertionError, e: self.assertFalse(msg.Identifier not in tQ._messages) self.assertFalse(msg.Identifier not in tQ._times)
def test_tranmission_queue_trimheap(self): # Test _trimheap, remove messages that are no longer valid tQ = TransmissionQueue() now = time.time() node = self._create_node() msg = self._create_msg() # Test the _trimheap doesn't break on empty heap tQ._trimheap() self.assertEquals(tQ._heap, []) tQ.enqueue_message(msg, now) tQ._trimheap() # Should not have changed anything self.assertEquals(tQ._heap, [(now, msg.Identifier)]) # Change time to send in times, but not in heap, this makes it invalid tQ._times[msg.Identifier] = 0.0 tQ._trimheap() self.assertEquals(tQ._heap, [])
def test_tranmission_queue_str(self): # Test overridden string function tQ = TransmissionQueue() now = time.time() node = self._create_node() for i in range(3): msg = self._create_msg() tQ.enqueue_message(msg, now) idlist = tQ._times.keys() # Should return a string with all 3 msgs self.assertEquals(str(tQ), '[' + ', ' .join([ident[:8] for ident in idlist]) + ']') for i in range(4): msg = self._create_msg() tQ.enqueue_message(msg, now) idlist = tQ._times.keys() idlist = idlist[:4] idlist.append('...') # Should return a string with the first 4 msgs and ... at the end self.assertEquals(str(tQ), '[' + ', ' .join([ident[:8] for ident in idlist]) + ']')
def test_tranmission_queue_count(self): # Test property count of TransmissionQueue tQ = TransmissionQueue() now = time.time() node = self._create_node() msg = self._create_msg() # 0 messages in queue self.assertEqual(tQ.Count, 0) tQ.enqueue_message(msg, now) # 1 message in queue self.assertEqual(tQ.Count, 1) msg2 = self._create_msg() tQ.enqueue_message(msg2, now) # 2 messages in queue self.assertEqual(tQ.Count, 2) tQ.dequeue_message(msg) # Dequeue message from queue, leaving 1 message self.assertEqual(tQ.Count, 1)
def test_tranmission_queue_count(self): # Test property count of TransmissionQueue tQ = TransmissionQueue() now = time.time() node = self._create_node() msg = self._create_msg() # 0 messages in queue self.assertEquals(tQ.Count, 0) tQ.enqueue_message(msg, now) # 1 message in queue self.assertEquals(tQ.Count, 1) msg2 = self._create_msg() tQ.enqueue_message(msg2, now) # 2 messages in queue self.assertEquals(tQ.Count, 2) tQ.dequeue_message(msg) # Dequeue message from queue, leaving 1 message self.assertEquals(tQ.Count, 1)
def test_tranmission_queue_dequeue_message(self): # Test that a message can be dequeued correctly tQ = TransmissionQueue() now = time.time() node = self._create_node() msg = self._create_msg() # Add a message to the queue tQ.enqueue_message(msg, now) self.assertIn(msg.Identifier, tQ._messages) self.assertIn(msg.Identifier, tQ._times) self.assertIn((now, msg.Identifier), tQ._heap) # Dequeue message we just added tQ.dequeue_message(msg) self.assertNotIn(msg.Identifier, tQ._messages) self.assertNotIn(msg.Identifier, tQ._times) self.assertNotIn((now, msg.Identifier), tQ._heap) # Test that if we try to dequeue a message that is not in the queue # That is does not break the test tQ.dequeue_message(msg) self.assertNotIn(msg.Identifier, tQ._messages) self.assertNotIn(msg.Identifier, tQ._times) self.assertNotIn((now, msg.Identifier), tQ._heap)
def test_tranmission_queue_messages(self): # Test the Message property of TransmissionQueue tQ = TransmissionQueue() now = time.time() node = self._create_node() msg = self._create_msg() # No messages self.assertEqual(tQ.Messages, []) tQ.enqueue_message(msg, now) # 1 message self.assertEqual(tQ.Messages, [msg.Identifier]) msg2 = self._create_msg() # 2 messages, check if messages id are in Messages tQ.enqueue_message(msg2, now) self.assertIn(msg2.Identifier, tQ.Messages) self.assertIn(msg.Identifier, tQ.Messages)
def test_tranmission_queue_enqueue_message(self): # Test Enqueuing a message tQ = TransmissionQueue() now = time.time() node = self._create_node() msg = self._create_msg() # Enqueue 1 message tQ.enqueue_message(msg, now) self.assertIn(msg.Identifier, tQ._messages) self.assertIn(msg.Identifier, tQ._times) self.assertIn((now, msg.Identifier), tQ._heap) # Enqueue 10 messages for i in range(10): msg = self._create_msg() tQ.enqueue_message(msg, now) self.assertEqual(len(tQ._messages), 11)
def test_tranmission_queue_str(self): # Test overridden string function tQ = TransmissionQueue() now = time.time() node = self._create_node() for i in range(3): msg = self._create_msg() tQ.enqueue_message(msg, now) idlist = tQ._times.keys() # Should return a string with all 3 msgs self.assertEqual(str(tQ), '[' + ', ' .join([ident[:8] for ident in idlist]) + ']') for i in range(4): msg = self._create_msg() tQ.enqueue_message(msg, now) idlist = tQ._times.keys() idlist = idlist[:4] idlist.append('...') # Should return a string with the first 4 msgs and ... at the end self.assertEqual(str(tQ), '[' + ', ' .join([ident[:8] for ident in idlist]) + ']')
def test_tranmission_queue_init(self): # Test init of TransmissionQueue tQ = TransmissionQueue() self.assertEqual(tQ._messages, {}) self.assertEqual(tQ._times, {}) self.assertEqual(tQ._heap, [])