def test_lambdas_cloud_watch_logs(self): with Temp_Lambda() as _: assert _.invoke() == 'hello None' log_name = '/aws/lambda/{0}'.format(_.name) logs = Logs(group_name=log_name) assert logs.group_exists() is True logs.stream_name = logs.streams()[0].get('logStreamName') sleep( 1.0 ) # wait for logs to be updated (0.5 has failed in CodeBuild) messages = logs.messages() assert len(messages) > 0 assert 'START RequestId: ' in messages.pop()
class test_Logs(TestCase): log_group = '/unit-tests/test_log_group' stream_name = 'tmp_stream' logs = Logs(log_group, stream_name) delete_on_exit = True @classmethod def setUpClass(cls): if test_Logs.delete_on_exit: assert test_Logs.logs.group_create() is True @classmethod def tearDownClass(cls): if test_Logs.delete_on_exit: assert test_Logs.logs.group_delete() is True def setUp(self): self.logs = Logs(test_Logs.log_group, test_Logs.stream_name) self.logs.stream_create() def test_events(self): assert self.logs.events().get('events') == [] message_1 = 'an message' message_2 = 'another message' result = self.logs.event_add(message_1) assert result.get('status') == 'ok' assert 'An error occurred (DataAlreadyAcceptedException)' in self.logs.event_add( 'an message').get('data') assert self.logs.event_add( message_2, sequence_token=result.get('nextSequenceToken')).get( 'status') == 'ok' max_attempts = 20 sleep_for = 0.5 for i in range(1, max_attempts): # wait for log events to be processed if len(self.logs.events().get('events')) == 2: break sleep(sleep_for) assert len(self.logs.events().get('events')) == 2 assert self.logs.messages() == [message_1, message_2] def test_log_group_create_delete_exists_info(self): tmp_log_group = Misc.random_string_and_numbers( prefix='/unit-tests/test_log_group_') temp_logs = Logs(tmp_log_group, '') assert temp_logs.group_exists() is False assert temp_logs.group_create() is True assert temp_logs.group_exists() is True assert temp_logs.group_info().get('logGroupName') == tmp_log_group assert temp_logs.group_delete() == True assert temp_logs.group_exists() is False def test_groups(self): assert len(list(self.logs.groups())) > 1 assert len(self.logs.groups()) > 10 def test_streams__exists_delete_create(self): assert self.logs.stream_exists( ) is True # log stream is created by setUpClass assert self.logs.streams().pop().get( 'logStreamName') == test_Logs.stream_name assert self.logs.stream_delete() is True assert self.logs.stream_delete() is False assert self.logs.streams() == [] assert self.logs.stream_create() is True assert self.logs.stream_create() is False