def test_logs_json_serializer(is_valid, given_input, expected_output): if not is_valid: with pytest.raises(ValueError) as ve: data = logs_json_serializer(given_input) else: data = logs_json_serializer(given_input, sort_keys=True) assert data == expected_output # Make sure the datetime was serialized in the correct ISO8601 datetime_str = json.loads(data)["datetime"] assert datetime_str == TEST_DATETIME.isoformat()
def send(self, logentry): try: data = logs_json_serializer(logentry) self._producer.put_record( StreamName=self._stream_name, Data=data, PartitionKey=_partition_key() ) except ClientError as ce: logger.exception('KinesisStreamLogsProducer client error sending log to Kinesis: %s', ce) raise LogSendException('KinesisStreamLogsProducer client error sending log to Kinesis: %s' % ce) except Exception as e: logger.exception('KinesisStreamLogsProducer exception sending log to Kinesis: %s', e) raise LogSendException('KinesisStreamLogsProducer exception sending log to Kinesis: %s' % e)