class TestRequestStream(ScalyrTestCase): def setUp(self): super(TestRequestStream, self).setUp() self.__fake_socket = FakeSocket() self.__fake_run_state = FakeRunState() parser = LineRequestParser(10) self.__request_stream = RequestStream(self.__fake_socket, parser.parse_request, max_buffer_size=10, max_request_size=10) def test_basic_case(self): # Basic case of just a single line. self.__fake_socket.add_input('Hi there\n') self.assertEquals(self.read_request(), 'Hi there\n') self.assertEquals(self.total_times_slept(), 1) self.assertEquals(self.buffer_size(), 0) self.assertIsNone(self.read_request()) def test_multiple_lines(self): self.__fake_socket.add_input('Hi\nBye\nOk\n') self.assertEquals(self.read_request(), 'Hi\n') self.assertEquals(self.buffer_size(), 10) self.assertEquals(self.read_request(), 'Bye\n') self.assertEquals(self.read_request(), 'Ok\n') self.assertEquals(self.total_times_slept(), 1) self.assertEquals(self.buffer_size(), 0) self.assertFalse(self.at_end()) self.assertIsNone(self.read_request()) def test_broken_lines(self): self.__fake_socket.add_input('Hi there') self.assertIsNone(self.read_request()) self.__fake_socket.add_input('\n') self.assertEquals(self.read_request(), 'Hi there\n') self.assertEquals(self.total_times_slept(), 2) self.assertEquals(self.buffer_size(), 0) self.assertFalse(self.at_end()) def test_request_too_long(self): self.__fake_socket.add_input('0123456789') self.assertRaises(RequestSizeExceeded, self.read_request) self.assertFalse(self.at_end()) def test_full_compaction(self): self.__fake_socket.add_input('012\n345678') self.assertEquals(self.read_request(), '012\n') self.assertEquals(self.total_times_slept(), 1) self.assertEquals(self.buffer_size(), 10) self.assertFalse(self.at_end()) self.assertIsNone(self.read_request()) self.assertEquals(self.buffer_size(), 6) self.__fake_socket.add_input('\n') self.assertEquals(self.read_request(), '345678\n') self.assertEquals(self.total_times_slept(), 3) self.assertEquals(self.buffer_size(), 0) def test_close(self): self.__fake_socket.add_input('Hi there\n') self.__fake_socket.close() self.assertEquals(self.read_request(), 'Hi there\n') self.assertEquals(self.total_times_slept(), 1) self.assertEquals(self.buffer_size(), 0) self.assertIsNone(self.read_request()) self.assertTrue(self.at_end()) self.assertEquals(self.total_times_slept(), 2) def read_request(self): return self.__request_stream.read_request( run_state=self.__fake_run_state) def total_times_slept(self): return self.__fake_run_state.total_times_slept def buffer_size(self): return self.__request_stream.get_buffer_size() def at_end(self): return self.__request_stream.at_end()
class TestRequestStream(ScalyrTestCase): def setUp(self): self.__fake_socket = FakeSocket() self.__fake_run_state = FakeRunState() parser = LineRequestParser(10) self.__request_stream = RequestStream(self.__fake_socket, parser.parse_request, max_buffer_size=10, max_request_size=10) def test_basic_case(self): # Basic case of just a single line. self.__fake_socket.add_input('Hi there\n') self.assertEquals(self.read_request(), 'Hi there\n') self.assertEquals(self.total_times_slept(), 1) self.assertEquals(self.buffer_size(), 0) self.assertIsNone(self.read_request()) def test_multiple_lines(self): self.__fake_socket.add_input('Hi\nBye\nOk\n') self.assertEquals(self.read_request(), 'Hi\n') self.assertEquals(self.buffer_size(), 10) self.assertEquals(self.read_request(), 'Bye\n') self.assertEquals(self.read_request(), 'Ok\n') self.assertEquals(self.total_times_slept(), 1) self.assertEquals(self.buffer_size(), 0) self.assertFalse(self.at_end()) self.assertIsNone(self.read_request()) def test_broken_lines(self): self.__fake_socket.add_input('Hi there') self.assertIsNone(self.read_request()) self.__fake_socket.add_input('\n') self.assertEquals(self.read_request(), 'Hi there\n') self.assertEquals(self.total_times_slept(), 2) self.assertEquals(self.buffer_size(), 0) self.assertFalse(self.at_end()) def test_request_too_long(self): self.__fake_socket.add_input('0123456789') self.assertRaises(RequestSizeExceeded, self.read_request) self.assertFalse(self.at_end()) def test_full_compaction(self): self.__fake_socket.add_input('012\n345678') self.assertEquals(self.read_request(), '012\n') self.assertEquals(self.total_times_slept(), 1) self.assertEquals(self.buffer_size(), 10) self.assertFalse(self.at_end()) self.assertIsNone(self.read_request()) self.assertEquals(self.buffer_size(), 6) self.__fake_socket.add_input('\n') self.assertEquals(self.read_request(), '345678\n') self.assertEquals(self.total_times_slept(), 3) self.assertEquals(self.buffer_size(), 0) def test_close(self): self.__fake_socket.add_input('Hi there\n') self.__fake_socket.close() self.assertEquals(self.read_request(), 'Hi there\n') self.assertEquals(self.total_times_slept(), 1) self.assertEquals(self.buffer_size(), 0) self.assertIsNone(self.read_request()) self.assertTrue(self.at_end()) self.assertEquals(self.total_times_slept(), 2) def read_request(self): return self.__request_stream.read_request(run_state=self.__fake_run_state) def total_times_slept(self): return self.__fake_run_state.total_times_slept def buffer_size(self): return self.__request_stream.get_buffer_size() def at_end(self): return self.__request_stream.at_end()