def test_add_get(self):
     table = ConversationTable()
     conversation = StubConversation()
     table.add_conversation("127.0.0.1", "3942", conversation)
     self.assertEqual(table.get_conversation("127.0.0.1", "3942"),
                      conversation)
     self.assertTrue(table.lock._RLock__count == 0)
 def test_add_get(self):
     table = ConversationTable()
     conversation = StubConversation()
     table.add_conversation("127.0.0.1", "3942", conversation)
     self.assertEqual(table.get_conversation("127.0.0.1", "3942"),
                      conversation)
     self.assertTrue(table.lock._RLock__count == 0)
 def test_delete_without_add(self):
     # Seems uninteresting, but this test is useful to defend against
     # exceptions
     table = ConversationTable()
     self.assertEqual(table.delete_conversation("127.0.0.1", "3942"), False)
     self.assertIsNone(table.get_conversation("127.0.0.1", "3942"))
     self.assertTrue(table.lock._RLock__count == 0)
 def test_add_delete(self):
     table = ConversationTable()
     conversation = StubConversation()
     table.add_conversation("127.0.0.1", "3942", conversation)
     self.assertTrue(table.delete_conversation("127.0.0.1", "3942"))
     self.assertIsNone(table.get_conversation("127.0.0.1", "3942"))
     self.assertTrue(table.lock._RLock__count == 0)
 def test_delete_without_add(self):
     # Seems uninteresting, but this test is useful to defend against
     # exceptions
     table = ConversationTable()
     self.assertEqual(table.delete_conversation("127.0.0.1", "3942"),
                      False)
     self.assertIsNone(table.get_conversation("127.0.0.1", "3942"))
     self.assertTrue(table.lock._RLock__count == 0)
Beispiel #6
0
 def test_find_and_handle_stale_conversations(self):
     conversation = StubConversation(12344)
     conversation.retries_made = 6
     table = ConversationTable()
     table.add_conversation("stub_host", "stub_port", conversation)
     performer = Performer(self.sock, table, 10, 6)
     performer.find_and_handle_stale_conversations()
     self.assertEqual(len(table), 0)
Beispiel #7
0
 def test_find_and_handle_stale_conversations(self):
     conversation = StubConversation(12344)
     conversation.retries_made = 6
     table = ConversationTable()
     table.add_conversation("stub_host", "stub_port", conversation)
     performer = Performer(self.sock, table, 10, 6)
     performer.find_and_handle_stale_conversations()
     self.assertEqual(len(table), 0)
Beispiel #8
0
 def test_get_conversation_old_with_data_packet(self):
     conversation_table = ConversationTable()
     packet = packets.DataPacket('stub block number', 'stub data')
     old_conversation = TFTPConversation('10.26.0.1', 3942, 'stub_router')
     conversation_table.add_conversation('10.26.0.1', 3942, old_conversation)
     reactor = Reactor('stub_socket', 'stub_router', conversation_table)
     conversation = reactor.get_conversation('10.26.0.1', 3942, packet)
     self.assertEqual(len(conversation_table), 1)
     self.assertTrue(isinstance(conversation, TFTPConversation))
     self.assertEqual(conversation, old_conversation)
Beispiel #9
0
 def test_handle_stale_conversation_giveup(self):
     conversation = StubConversation(12344)
     conversation.retries_made = 6
     table = ConversationTable()
     table.add_conversation("stub_host", "stub_port", conversation)
     performer = Performer(self.sock, table, 10, 6)
     performer._handle_stale_conversation(conversation)
     self.assertEqual(self.sock.sent_data,
         '\x00\x05\x00\x00Conversation Timed Out\x00')
     self.assertEqual(self.sock.sent_addr, ("stub_host", "stub_port"))
     self.assertIsNone(table.get_conversation("stub_host", "stub_port"), None)
Beispiel #10
0
 def test_get_conversation_old_with_data_packet(self):
     conversation_table = ConversationTable()
     packet = packets.DataPacket('stub block number', 'stub data')
     old_conversation = TFTPConversation('10.26.0.1', 3942, 'stub_router')
     conversation_table.add_conversation('10.26.0.1', 3942,
                                         old_conversation)
     reactor = Reactor('stub_socket', 'stub_router', conversation_table)
     conversation = reactor.get_conversation('10.26.0.1', 3942, packet)
     self.assertEqual(len(conversation_table), 1)
     self.assertTrue(isinstance(conversation, TFTPConversation))
     self.assertEqual(conversation, old_conversation)
 def test_conversations(self):
     table = ConversationTable()
     conversation_one = StubConversation()
     table.add_conversation("10.0.0.1", "3942", conversation_one)
     conversation_two = StubConversation()
     table.add_conversation("10.0.0.2", "3942", conversation_two)
     # Either order of returned results is fine
     self.assertTrue(
         table.conversations == [conversation_one, conversation_two]
         or table.conversations == [conversation_two, conversation_one],
         "conversations retrieved don't match")
Beispiel #12
0
 def test_handle_stale_conversation_giveup(self):
     conversation = StubConversation(12344)
     conversation.retries_made = 6
     table = ConversationTable()
     table.add_conversation("stub_host", "stub_port", conversation)
     performer = Performer(self.sock, table, 10, 6)
     performer._handle_stale_conversation(conversation)
     self.assertEqual(self.sock.sent_data,
                      '\x00\x05\x00\x00Conversation Timed Out\x00')
     self.assertEqual(self.sock.sent_addr, ("stub_host", "stub_port"))
     self.assertIsNone(table.get_conversation("stub_host", "stub_port"),
                       None)
Beispiel #13
0
 def test_get_conversation_new_with_reading_packet(self):
     conversation_table = ConversationTable()
     packet = packets.ReadRequestPacket('stub filename', 'stub mode')
     reactor = Reactor('stub_socket', 'stub_router', conversation_table)
     conversation = reactor.get_conversation('10.26.0.1', 3942, packet)
     self.assertEqual(len(conversation_table), 1)
     self.assertTrue(isinstance(conversation, TFTPConversation))
Beispiel #14
0
 def test_handle_stale_conversation_retry(self):
     conversation = StubConversation(12344)
     conversation.retries_made = 0
     table = ConversationTable()
     performer = Performer(self.sock, table, 10, 6)
     performer._handle_stale_conversation(conversation)
     self.assertEqual(self.sock.sent_data, "stub_packet_data")
     self.assertEqual(self.sock.sent_addr, ("stub_host", "stub_port"))
Beispiel #15
0
    def test_get_stale_conversations(self):
        table = ConversationTable()
        conversation_one = StubConversation(12344)
        conversation_two = StubConversation(12345)
        conversation_three = StubConversation(12346)
        table.conversation_table = {
            ("10.26.0.1", "3942"): conversation_one,
            ("10.26.0.2", "3942"): conversation_two,
            ("10.26.0.3", "3942"): conversation_three
        }

        performer = Performer(self.sock, table, 10, 6)

        # Either order of returned results is fine
        self.assertTrue(performer._get_stale_conversations(5, 12350)
            == [conversation_one, conversation_two]
            or performer.get_stale_conversations(5, 12350)
            == [conversation_two, conversation_one],
            "stale conversations found don't match")
Beispiel #16
0
 def __init__(self):
     self.host = config.HOST
     self.port = config.PORT
     self.response_router = ResponseRouter()
     self.conversation_table = ConversationTable()
     self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
     self.reactor = Reactor(self.sock, self.response_router,
                            self.conversation_table)
     self.performer = Performer(self.sock, self.conversation_table,
                                config.RESEND_TIMEOUT,
                                config.RETRIES_BEFORE_GIVEUP)
Beispiel #17
0
    def test_get_stale_conversations(self):
        table = ConversationTable()
        conversation_one = StubConversation(12344)
        conversation_two = StubConversation(12345)
        conversation_three = StubConversation(12346)
        table.conversation_table = {
            ("10.26.0.1", "3942"): conversation_one,
            ("10.26.0.2", "3942"): conversation_two,
            ("10.26.0.3", "3942"): conversation_three
        }

        performer = Performer(self.sock, table, 10, 6)

        # Either order of returned results is fine
        self.assertTrue(
            performer._get_stale_conversations(
                5, 12350) == [conversation_one, conversation_two]
            or performer.get_stale_conversations(
                5, 12350) == [conversation_two, conversation_one],
            "stale conversations found don't match")
Beispiel #18
0
    def test_sweep_completed_conversations(self):
        conversation_one = StubConversation(12344)
        conversation_one.state = tftp_conversation.COMPLETED

        conversation_two = StubConversation(12345)
        conversation_two.state = tftp_conversation.READING

        conversation_three = StubConversation(12346)
        conversation_three.state = tftp_conversation.COMPLETED

        table = ConversationTable()
        table.conversation_table = {
                ("10.26.0.1", "3942"): conversation_one,
                ("10.26.0.2", "3942"): conversation_two,
                ("10.26.0.3", "3942"): conversation_three
        }

        performer = Performer(self.sock, table, 10, 6)
        performer.sweep_completed_conversations()
        self.assertEqual(table.conversation_table,
            {("10.26.0.2", "3942"): conversation_two, })
 def test_add_delete(self):
     table = ConversationTable()
     conversation = StubConversation()
     table.add_conversation("127.0.0.1", "3942", conversation)
     self.assertTrue(table.delete_conversation("127.0.0.1", "3942"))
     self.assertIsNone(table.get_conversation("127.0.0.1", "3942"))
     self.assertTrue(table.lock._RLock__count == 0)
Beispiel #20
0
    def test_sweep_completed_conversations(self):
        conversation_one = StubConversation(12344)
        conversation_one.state = tftp_conversation.COMPLETED

        conversation_two = StubConversation(12345)
        conversation_two.state = tftp_conversation.READING

        conversation_three = StubConversation(12346)
        conversation_three.state = tftp_conversation.COMPLETED

        table = ConversationTable()
        table.conversation_table = {
            ("10.26.0.1", "3942"): conversation_one,
            ("10.26.0.2", "3942"): conversation_two,
            ("10.26.0.3", "3942"): conversation_three
        }

        performer = Performer(self.sock, table, 10, 6)
        performer.sweep_completed_conversations()
        self.assertEqual(table.conversation_table, {
            ("10.26.0.2", "3942"): conversation_two,
        })
 def test_conversations(self):
     table = ConversationTable()
     conversation_one = StubConversation()
     table.add_conversation("10.0.0.1", "3942", conversation_one)
     conversation_two = StubConversation()
     table.add_conversation("10.0.0.2", "3942", conversation_two)
     # Either order of returned results is fine
     self.assertTrue(
         table.conversations == [conversation_one, conversation_two]
         or table.conversations == [conversation_two, conversation_one],
         "conversations retrieved don't match")
 def test_get_without_add(self):
     table = ConversationTable()
     self.assertIsNone(table.get_conversation("127.0.0.1", "3942"))
     self.assertTrue(table.lock._RLock__count == 0)
 def test_get_without_add(self):
     table = ConversationTable()
     self.assertIsNone(table.get_conversation("127.0.0.1", "3942"))
     self.assertTrue(table.lock._RLock__count == 0)