Esempio n. 1
0
    def setUp(self):
        self.__fake_socket = FakeSocket()
        self.__fake_run_state = FakeRunState()
        self.__last_request = None

        parser = LineRequestParser(10)
        request_stream = RequestStream(self.__fake_socket, parser.parse_request, max_buffer_size=10,
                                       max_request_size=10)

        self.__fake_handler = ConnectionProcessor(request_stream, self.execute_request, self.__fake_run_state, 5.0)
        self.__fake_time = 0.0
class TestConnectionHandler(ScalyrTestCase):
    def setUp(self):
        super(TestConnectionHandler, self).setUp()
        self.__fake_socket = FakeSocket()
        self.__fake_run_state = FakeRunState()
        self.__last_request = None

        parser = LineRequestParser(10)
        request_stream = RequestStream(self.__fake_socket,
                                       parser.parse_request,
                                       max_buffer_size=10,
                                       max_request_size=10)

        self.__fake_handler = ConnectionProcessor(request_stream,
                                                  self.execute_request,
                                                  self.__fake_run_state, 5.0)
        self.__fake_time = 0.0

    def test_basic_case(self):
        self.__fake_socket.add_input('Hi there\n')
        self.assertTrue(self.run_single_cycle())
        self.assertEquals(self.__last_request, 'Hi there\n')

    def test_multiple_requests(self):
        self.__fake_socket.add_input('Hi there\n')
        self.assertTrue(self.run_single_cycle())
        self.assertEquals(self.__last_request, 'Hi there\n')

        self.advance_time(3.0)
        self.__fake_socket.add_input('2nd there\n')
        self.assertTrue(self.run_single_cycle())
        self.assertEquals(self.__last_request, '2nd there\n')

        self.advance_time(3.0)
        self.assertTrue(self.run_single_cycle())
        self.assertIsNone(self.__last_request)

    def test_inactivity_error(self):
        self.__fake_socket.add_input('Hi there\n')
        self.assertTrue(self.run_single_cycle())
        self.assertEquals(self.__last_request, 'Hi there\n')

        self.advance_time(3.0)
        self.assertTrue(self.run_single_cycle())
        self.assertIsNone(self.__last_request)

        self.advance_time(3.0)
        self.assertRaises(ConnectionIdleTooLong, self.run_single_cycle)

    def test_run_state_done(self):
        self.__fake_socket.add_input('Hi there\nOk\n')
        self.assertTrue(self.run_single_cycle())
        self.assertEquals(self.__last_request, 'Hi there\n')
        self.__fake_run_state.stop()

        self.assertFalse(self.run_single_cycle())
        self.assertIsNone(self.__last_request)

    def test_connection_closed(self):
        self.__fake_socket.add_input('Hi there\n')
        self.assertTrue(self.run_single_cycle())
        self.assertEquals(self.__last_request, 'Hi there\n')
        self.__fake_socket.close()

        self.assertFalse(self.run_single_cycle())
        self.assertIsNone(self.__last_request)

    def execute_request(self, request):
        self.__last_request = request

    def run_single_cycle(self):
        self.__last_request = None
        return self.__fake_handler.run_single_cycle(
            current_time=self.__fake_time)

    def advance_time(self, delta):
        self.__fake_time += delta
class TestConnectionHandler(ScalyrTestCase):
    def setUp(self):
        self.__fake_socket = FakeSocket()
        self.__fake_run_state = FakeRunState()
        self.__last_request = None

        parser = LineRequestParser(10)
        request_stream = RequestStream(self.__fake_socket, parser.parse_request, max_buffer_size=10,
                                       max_request_size=10)

        self.__fake_handler = ConnectionProcessor(request_stream, self.execute_request, self.__fake_run_state, 5.0)
        self.__fake_time = 0.0

    def test_basic_case(self):
        self.__fake_socket.add_input('Hi there\n')
        self.assertTrue(self.run_single_cycle())
        self.assertEquals(self.__last_request, 'Hi there\n')

    def test_multiple_requests(self):
        self.__fake_socket.add_input('Hi there\n')
        self.assertTrue(self.run_single_cycle())
        self.assertEquals(self.__last_request, 'Hi there\n')

        self.advance_time(3.0)
        self.__fake_socket.add_input('2nd there\n')
        self.assertTrue(self.run_single_cycle())
        self.assertEquals(self.__last_request, '2nd there\n')

        self.advance_time(3.0)
        self.assertTrue(self.run_single_cycle())
        self.assertIsNone(self.__last_request)

    def test_inactivity_error(self):
        self.__fake_socket.add_input('Hi there\n')
        self.assertTrue(self.run_single_cycle())
        self.assertEquals(self.__last_request, 'Hi there\n')

        self.advance_time(3.0)
        self.assertTrue(self.run_single_cycle())
        self.assertIsNone(self.__last_request)

        self.advance_time(3.0)
        self.assertRaises(ConnectionIdleTooLong, self.run_single_cycle)

    def test_run_state_done(self):
        self.__fake_socket.add_input('Hi there\nOk\n')
        self.assertTrue(self.run_single_cycle())
        self.assertEquals(self.__last_request, 'Hi there\n')
        self.__fake_run_state.stop()

        self.assertFalse(self.run_single_cycle())
        self.assertIsNone(self.__last_request)

    def test_connection_closed(self):
        self.__fake_socket.add_input('Hi there\n')
        self.assertTrue(self.run_single_cycle())
        self.assertEquals(self.__last_request, 'Hi there\n')
        self.__fake_socket.close()

        self.assertFalse(self.run_single_cycle())
        self.assertIsNone(self.__last_request)

    def execute_request(self, request):
        self.__last_request = request

    def run_single_cycle(self):
        self.__last_request = None
        return self.__fake_handler.run_single_cycle(current_time=self.__fake_time)

    def advance_time(self, delta):
        self.__fake_time += delta