|
8 | 8 | from approvaltests.approvals import verify_as_json
|
9 | 9 | from approvaltests.namer import NamerFactory
|
10 | 10 |
|
| 11 | +from aws.logs_monitoring.steps.enums import AwsEventSource |
| 12 | + |
11 | 13 | sys.modules["trace_forwarder.connection"] = MagicMock()
|
12 | 14 | sys.modules["datadog_lambda.wrapper"] = MagicMock()
|
13 | 15 | sys.modules["datadog_lambda.metric"] = MagicMock()
|
|
22 | 24 | },
|
23 | 25 | )
|
24 | 26 | env_patch.start()
|
| 27 | +from aws.logs_monitoring.settings import DD_HOST, DD_SOURCE |
25 | 28 | from steps.handlers.awslogs_handler import AwsLogsHandler
|
26 | 29 | from steps.handlers.aws_attributes import AwsAttributes
|
27 | 30 | from caching.cache_layer import CacheLayer
|
@@ -117,6 +120,72 @@ def test_awslogs_handler_step_functions_tags_added_properly(
|
117 | 120 | awslogs_handler = AwsLogsHandler(context, metadata, cache_layer)
|
118 | 121 | verify_as_json(list(awslogs_handler.handle(event)))
|
119 | 122 | verify_as_json(metadata, options=NamerFactory.with_parameters("metadata"))
|
| 123 | + # verify that the handling can properly handle SF logs with the default log group naming |
| 124 | + self.assertEqual( |
| 125 | + awslogs_handler.metadata[DD_SOURCE], AwsEventSource.STEPFUNCTION.value |
| 126 | + ) |
| 127 | + self.assertEqual( |
| 128 | + awslogs_handler.metadata[DD_HOST], |
| 129 | + "arn:aws:states:us-east-1:12345678910:stateMachine:StepFunction1", |
| 130 | + ) |
| 131 | + |
| 132 | + @patch("caching.cloudwatch_log_group_cache.CloudwatchLogGroupTagsCache.__init__") |
| 133 | + @patch("caching.cloudwatch_log_group_cache.send_forwarder_internal_metrics") |
| 134 | + @patch.dict("os.environ", {"DD_STEP_FUNCTIONS_TRACE_ENABLED": "true"}) |
| 135 | + def test_awslogs_handler_step_functions_customized_log_group( |
| 136 | + self, |
| 137 | + mock_forward_metrics, |
| 138 | + mock_cache_init, |
| 139 | + ): |
| 140 | + # SF customized log group |
| 141 | + eventFromCustomizedLogGroup = { |
| 142 | + "awslogs": { |
| 143 | + "data": base64.b64encode( |
| 144 | + gzip.compress( |
| 145 | + bytes( |
| 146 | + json.dumps( |
| 147 | + { |
| 148 | + "messageType": "DATA_MESSAGE", |
| 149 | + "owner": "425362996713", |
| 150 | + "logGroup": "test/logs", |
| 151 | + "logStream": "states/logs-to-traces-sequential/2022-11-10-15-50/7851b2d9", |
| 152 | + "subscriptionFilters": ["testFilter"], |
| 153 | + "logEvents": [ |
| 154 | + { |
| 155 | + "id": "37199773595581154154810589279545129148442535997644275712", |
| 156 | + "timestamp": 1668095539607, |
| 157 | + "message": '{"id": "1","type": "ExecutionStarted","details": {"input": "{}","inputDetails": {"truncated": "false"},"roleArn": "arn:aws:iam::12345678910:role/service-role/StepFunctions-test-role-a0iurr4pt"},"previous_event_id": "0","event_timestamp": "1716992192441","execution_arn": "arn:aws:states:us-east-1:12345678910:execution:StepFunction2:ccccccc-d1da-4c38-b32c-2b6b07d713fa","redrive_count": "0"}', |
| 158 | + } |
| 159 | + ], |
| 160 | + } |
| 161 | + ), |
| 162 | + "utf-8", |
| 163 | + ) |
| 164 | + ) |
| 165 | + ) |
| 166 | + } |
| 167 | + } |
| 168 | + context = None |
| 169 | + metadata = {"ddtags": "env:dev"} |
| 170 | + mock_forward_metrics.side_effect = MagicMock() |
| 171 | + mock_cache_init.return_value = None |
| 172 | + cache_layer = CacheLayer("") |
| 173 | + cache_layer._step_functions_cache.get = MagicMock( |
| 174 | + return_value=["test_tag_key:test_tag_value"] |
| 175 | + ) |
| 176 | + cache_layer._cloudwatch_log_group_cache.get = MagicMock() |
| 177 | + |
| 178 | + awslogs_handler = AwsLogsHandler(context, metadata, cache_layer) |
| 179 | + # for some reasons, the below two are needed to update the context of the handler |
| 180 | + verify_as_json(list(awslogs_handler.handle(eventFromCustomizedLogGroup))) |
| 181 | + verify_as_json(metadata, options=NamerFactory.with_parameters("metadata")) |
| 182 | + self.assertEqual( |
| 183 | + awslogs_handler.metadata[DD_SOURCE], AwsEventSource.STEPFUNCTION.value |
| 184 | + ) |
| 185 | + self.assertEqual( |
| 186 | + awslogs_handler.metadata[DD_HOST], |
| 187 | + "arn:aws:states:us-east-1:12345678910:stateMachine:StepFunction2", |
| 188 | + ) |
120 | 189 |
|
121 | 190 | def test_process_lambda_logs(self):
|
122 | 191 | # Non Lambda log
|
|
0 commit comments