Пример #1
0
    def test_wrong_format_event(self):
        event = {'awslogs': {}}
        data_body = {
            'logStream': 'TestStream',
            'messageType': 'DATA_MESSAGE',
            'logEvents': []
        }

        # Adding wrong format log
        log = "{'timestamp' : '10', 'message' : 'wrong_format', 'id' : '10'}"
        data_body['logEvents'].append(log)
        data_body['owner'] = 'Test'
        data_body['subscriptionFilters'] = ['TestFilters']
        data_body['logGroup'] = 'TestlogGroup'

        zip_text_file = StringIO()
        zipper = gzip.GzipFile(mode='wb', fileobj=zip_text_file)
        zipper.write(json.dumps(data_body))
        zipper.close()
        enc_data = base64.b64encode(zip_text_file.getvalue())

        event['awslogs']['data'] = enc_data
        httpretty.register_uri(httpretty.POST,
                               self._logzioUrl,
                               status=200,
                               content_type="application/json")

        with self.assertRaises(TypeError):
            worker.lambda_handler(event, Context)
Пример #2
0
    def test_enrich_event_bad_format(self):
        os.environ['ENRICH'] = "environment"
        event = self._generate_aws_logs_event(self._json_string_builder)
        httpretty.register_uri(httpretty.POST,
                               self._logzioUrl,
                               body="first",
                               status=200,
                               content_type="application/json")

        with self.assertRaises(IndexError):
            worker.lambda_handler(event['enc'], Context)
Пример #3
0
    def test_ok_gzip_request(self):
        os.environ['COMPRESS'] = 'true'
        event = self._generate_aws_logs_event(self._random_string_builder)
        httpretty.register_uri(httpretty.POST,
                               self._logzioUrl,
                               body="first",
                               status=200,
                               content_type="application/json")
        try:
            worker.lambda_handler(event['enc'], Context)
        except Exception:
            assert "Failed on handling a legit event. Expected status_code = 200"

        request = httpretty.HTTPretty.last_request
        self._check_data(request, event['dec'], Context)
Пример #4
0
    def test_bad_request(self):
        event = self._generate_aws_logs_event(self._random_string_builder)
        httpretty.register_uri(httpretty.POST,
                               self._logzioUrl,
                               responses=[
                                   httpretty.Response(body="first",
                                                      status=400),
                                   httpretty.Response(body="second",
                                                      status=401),
                               ])

        worker.lambda_handler(event['enc'], Context)

        with self.assertRaises(UnauthorizedAccessException):
            worker.lambda_handler(event['enc'], Context)
Пример #5
0
    def test_json_type_request(self):
        os.environ['FORMAT'] = "JSON"
        event = self._generate_aws_logs_event(self._json_string_builder)
        httpretty.register_uri(httpretty.POST,
                               self._logzioUrl,
                               body="first",
                               status=200,
                               content_type="application/json")
        try:
            worker.lambda_handler(event['enc'], Context)
        except Exception:
            self.fail(
                "Failed on handling a legit event. Expected status_code = 200")

        request = httpretty.HTTPretty.last_request
        self._check_json_data(request, event['dec'], Context)
Пример #6
0
    def test_large_body(self):
        body_size = 2000
        event = self._generate_aws_logs_event(self._random_string_builder,
                                              body_size)
        httpretty.register_uri(httpretty.POST,
                               self._logzioUrl,
                               body="first",
                               status=200,
                               content_type="application/json")
        try:
            worker.lambda_handler(event['enc'], Context)
        except Exception:
            self.fail(
                "Failed on handling a legit event. Expected status_code = 200")

        request = httpretty.HTTPretty.last_request
        last_bulk_length = len(request.body.splitlines())
        assert last_bulk_length <= 2000, "Logs were not fragmented"
Пример #7
0
    def test_retry_request(self):
        event = self._generate_aws_logs_event(self._random_string_builder)
        httpretty.register_uri(httpretty.POST,
                               self._logzioUrl,
                               responses=[
                                   httpretty.Response(body="1st Fail",
                                                      status=500),
                                   httpretty.Response(body="2nd Fail",
                                                      status=500),
                                   httpretty.Response(body="3rd Success",
                                                      status=200)
                               ])
        try:
            worker.lambda_handler(event['enc'], Context)
        except Exception:
            self.fail("Should have succeeded on last try")

        request = httpretty.HTTPretty.last_request
        self._check_data(request, event['dec'], Context)
Пример #8
0
    def test_enrich_event_empty(self):
        os.environ['ENRICH'] = ""
        event = self._generate_aws_logs_event(self._json_string_builder)
        httpretty.register_uri(httpretty.POST,
                               self._logzioUrl,
                               body="first",
                               status=200,
                               content_type="application/json")
        try:
            worker.lambda_handler(event['enc'], Context)
        except Exception:
            self.fail(
                "Failed on handling a legit event. Expected status_code = 200")

        request = httpretty.HTTPretty.last_request
        body_logs_list = request.body.splitlines()

        for i in xrange(BODY_SIZE):
            json_body_log = json.loads(body_logs_list[i])
            self.assertFalse(hasattr(json_body_log, "environment"))
Пример #9
0
    def test_gzip_typo_request(self):
        os.environ['COMPRESS'] = 'fakecompress'
        event = self._generate_aws_logs_event(self._random_string_builder)
        httpretty.register_uri(httpretty.POST,
                               self._logzioUrl,
                               body="first",
                               status=200,
                               content_type="application/json")
        try:
            worker.lambda_handler(event['enc'], Context)
        except Exception:
            assert "Failed on handling a legit event. Expected status_code = 200"

        request = httpretty.HTTPretty.last_request
        try:
            gzip_header = request.headers["Content-Encoding"]
            self.fail(
                "Failed to send uncompressed logs with typo in compress env filed"
            )
        except KeyError:
            pass
Пример #10
0
 def test_bad_url(self):
     event = self._generate_aws_logs_event(self._random_string_builder)
     httpretty.register_uri(httpretty.POST, self._logzioUrl, status=404)
     with self.assertRaises(UnknownURL):
         worker.lambda_handler(event['enc'], Context)
Пример #11
0
 def test_retry_limit(self):
     event = self._generate_aws_logs_event(self._random_string_builder)
     httpretty.register_uri(httpretty.POST, self._logzioUrl, status=500)
     with self.assertRaises(MaxRetriesException):
         worker.lambda_handler(event['enc'], Context)