11import json
2- import unittest
32import os
3+ import sys
4+ import unittest
5+ from importlib import reload
46from time import time
5- from unittest .mock import patch , MagicMock
67from unittest import mock
8+ from unittest .mock import MagicMock , patch
9+
710from approvaltests .approvals import verify_as_json
811
12+ from caching .lambda_cache import LambdaTagsCache
913from enhanced_lambda_metrics import (
10- parse_metrics_from_report_log ,
11- parse_metrics_from_json_report_log ,
12- parse_lambda_tags_from_arn ,
13- generate_enhanced_lambda_metrics ,
1414 create_out_of_memory_enhanced_metric ,
15+ generate_enhanced_lambda_metrics ,
16+ parse_lambda_tags_from_arn ,
17+ parse_metrics_from_json_report_log ,
18+ parse_metrics_from_report_log ,
1519)
1620
17- from caching .lambda_cache import LambdaTagsCache
18-
1921
2022class TestEnhancedLambdaMetrics (unittest .TestCase ):
2123 maxDiff = None
2224 malformed_report = "REPORT invalid report log line"
2325 standard_report = (
24- "REPORT RequestId: 8edab1f8-7d34-4a8e-a965-15ccbbb78d4c "
25- "Duration: 0.62 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 51 MB"
26+ "REPORT RequestId: 8edab1f8-7d34-4a8e-a965-15ccbbb78d4c "
27+ "Duration: 0.62 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 51 MB"
2628 )
2729 cold_start_report = (
28- "REPORT RequestId: 8edab1f8-7d34-4a8e-a965-15ccbbb78d4c "
29- "Duration: 0.81 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 90 MB Init Duration: 1234 ms"
30+ "REPORT RequestId: 8edab1f8-7d34-4a8e-a965-15ccbbb78d4c "
31+ "Duration: 0.81 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 90 MB Init Duration: 1234 ms"
3032 )
3133 report_with_xray = (
3234 "REPORT RequestId: 814ba7cb-071e-4181-9a09-fa41db5bccad\t Duration: 1711.87 ms\t "
@@ -303,7 +305,10 @@ def test_generate_enhanced_lambda_metrics_once_with_missing_arn(self):
303305
304306 @patch ("caching.base_tags_cache.send_forwarder_internal_metrics" )
305307 @patch ("caching.lambda_cache.send_forwarder_internal_metrics" )
308+ @patch .dict (os .environ , {"DD_FETCH_LAMBDA_TAGS" : "true" })
306309 def test_generate_enhanced_lambda_metrics_refresh_s3_cache (self , mock1 , mock2 ):
310+ reload (sys .modules ["settings" ])
311+
307312 tags_cache = LambdaTagsCache ("" )
308313 tags_cache .get_cache_from_s3 = MagicMock (return_value = ({}, 1000 ))
309314 tags_cache .acquire_s3_cache_lock = MagicMock ()
@@ -334,13 +339,12 @@ def test_generate_enhanced_lambda_metrics_refresh_s3_cache(self, mock1, mock2):
334339 "timestamp" : 10000 ,
335340 }
336341
337- os .environ ["DD_FETCH_LAMBDA_TAGS" ] = "True"
338342 generate_enhanced_lambda_metrics (logs_input , tags_cache )
339343 tags_cache .get_cache_from_s3 .assert_called_once ()
340344 tags_cache .build_tags_cache .assert_called_once ()
341345 tags_cache .write_cache_to_s3 .assert_called_once ()
342- del os .environ ["DD_FETCH_LAMBDA_TAGS" ]
343346
347+ @patch .dict (os .environ , {"DD_FETCH_LAMBDA_TAGS" : "true" })
344348 @patch ("caching.lambda_cache.LambdaTagsCache.release_s3_cache_lock" )
345349 @patch ("caching.lambda_cache.LambdaTagsCache.acquire_s3_cache_lock" )
346350 @patch ("caching.lambda_cache.LambdaTagsCache.get_resources_paginator" )
@@ -358,6 +362,8 @@ def test_generate_enhanced_lambda_metrics_client_error(
358362 mock_acquire_lock ,
359363 mock_release_lock ,
360364 ):
365+ reload (sys .modules ["settings" ])
366+
361367 mock_acquire_lock .return_value = True
362368 mock_get_s3_cache .return_value = (
363369 {},
@@ -391,22 +397,23 @@ def test_generate_enhanced_lambda_metrics_client_error(
391397 "timestamp" : 10000 ,
392398 }
393399
394- os .environ ["DD_FETCH_LAMBDA_TAGS" ] = "True"
395400 generate_enhanced_lambda_metrics (logs_input , tags_cache )
396401 mock_get_s3_cache .assert_called_once ()
397402 mock_get_s3_cache .reset_mock ()
398403 mock_get_resources_paginator .assert_called_once ()
399404 paginator .paginate .assert_called_once ()
400405 assert mock_base_tags_cache_forward_metrics .call_count == 1
401406 assert mock_lambda_cache_forward_metrics .call_count == 2
402- del os .environ ["DD_FETCH_LAMBDA_TAGS" ]
403407
404408 @patch ("caching.lambda_cache.send_forwarder_internal_metrics" )
405409 @patch ("caching.base_tags_cache.send_forwarder_internal_metrics" )
406410 @patch ("caching.lambda_cache.LambdaTagsCache.get_cache_from_s3" )
411+ @patch .dict (os .environ , {"DD_FETCH_LAMBDA_TAGS" : "true" })
407412 def test_generate_enhanced_lambda_metrics_timeout (
408413 self , mock_get_s3_cache , mock_forward_metrics , mock_base_forward_metrics
409414 ):
415+ reload (sys .modules ["settings" ])
416+
410417 mock_get_s3_cache .return_value = (
411418 {
412419 "arn:aws:lambda:us-east-1:0:function:cloudwatch-event" : [
@@ -437,17 +444,18 @@ def test_generate_enhanced_lambda_metrics_timeout(
437444 "timestamp" : 1591714946151 ,
438445 }
439446
440- os .environ ["DD_FETCH_LAMBDA_TAGS" ] = "True"
441447 generated_metrics = generate_enhanced_lambda_metrics (logs_input , tags_cache )
442448 verify_as_json (generated_metrics )
443- del os .environ ["DD_FETCH_LAMBDA_TAGS" ]
444449
445450 @patch ("caching.lambda_cache.send_forwarder_internal_metrics" )
446451 @patch ("telemetry.send_forwarder_internal_metrics" )
447452 @patch ("caching.lambda_cache.LambdaTagsCache.get_cache_from_s3" )
453+ @patch .dict (os .environ , {"DD_FETCH_LAMBDA_TAGS" : "true" })
448454 def test_generate_enhanced_lambda_metrics_out_of_memory (
449455 self , mock_get_s3_cache , mock_forward_metrics , mock_base_forward_metrics
450456 ):
457+ reload (sys .modules ["settings" ])
458+
451459 mock_get_s3_cache .return_value = (
452460 {
453461 "arn:aws:lambda:us-east-1:0:function:cloudwatch-event" : [
@@ -478,10 +486,8 @@ def test_generate_enhanced_lambda_metrics_out_of_memory(
478486 "timestamp" : 1591714946151 ,
479487 }
480488
481- os .environ ["DD_FETCH_LAMBDA_TAGS" ] = "True"
482489 generated_metrics = generate_enhanced_lambda_metrics (logs_input , tags_cache )
483490 verify_as_json (generated_metrics )
484- del os .environ ["DD_FETCH_LAMBDA_TAGS" ]
485491
486492
487493if __name__ == "__main__" :
0 commit comments