Пример #1
0
    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()
Пример #2
0
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