def test_should_reject_too_big_message(self): _, message = base.generate_rejectable_message() headers = base._get_headers(self.logs_client.get_headers()) data = base._get_data(message) # Add 'Connection: Keep-Alive' to send large message before # connection is closed by client. In class ClosingHttp is added # header 'connection:close' (which will cause closing socket before sending whole message). # Data are send in small TCP packages. # Without this header set to Keep-Alive Tempest lib will try to retry connection and finally # raise ProtocolError. headers.update({'Connection': 'Keep-Alive'}) try: self.logs_client.send_single_log(data, headers) except exceptions.OverLimit as urc: self.assertEqual(413, urc.resp.status) return self.assertTrue(False, 'API should respond with 413')
def test_should_accept_message_but_reject_after_adding_metadata(self): _, message = base.generate_unique_message( size=base._get_message_size(0.9999)) headers = base._get_headers(self.logs_client.get_headers()) data = base._get_data(message) try: self.logs_client.send_single_log(data, headers) except exceptions.ServerFault as urc: self.assertEqual(500, urc.resp.status) msg = urc.resp_body.get('title', None) # in Java that is under message if msg is None: msg = urc.resp_body.get('message', None) self.assertIsNotNone(msg, 'Should get status message') self.assertEqual('Envelope size exceeded', msg) return self.assertTrue(False, 'API should respond with 500')
def test_should_reject_too_big_message(self): _, message = base.generate_rejectable_message() headers = base._get_headers(self.logs_clients["v3"].get_headers()) # Add 'Connection: Keep-Alive' to send large message before # connection is closed by client. In class ClosingHttp is added # header 'connection:close' (which will cause closing socket before sending whole message). # Data are send in small TCP packages. # Without this header set to Keep-Alive Tempest lib will try to retry connection and finally # raise ProtocolError. headers.update({'Connection': 'Keep-Alive'}) for ver, cli in self.logs_clients.items(): data = base._get_data(message, version=ver) try: cli.send_single_log(data, headers) except exceptions.OverLimit as urc: self.assertEqual(413, urc.resp.status) return self.assertTrue(False, 'API should respond with 413')
def _run_and_wait(self, key, data, content_type='application/json', headers=None): def wait(): return self.logs_search_client.count_search_messages(key) > 0 self.assertEqual(0, self.logs_search_client.count_search_messages(key), 'Find log message in elasticsearch: {0}'.format(key)) headers = base._get_headers(headers, content_type) data = base._get_data(data, content_type) response, _ = self.logs_client.send_single_log(data, headers) self.assertEqual(204, response.status) test.call_until_true(wait, _RETRY_COUNT, _RETRY_WAIT) response = self.logs_search_client.search_messages(key) self.assertEqual(1, len(response)) return response