11from aws_embedded_metrics .config import get_config
2+ from aws_embedded_metrics .exceptions import DimensionSetExceededError
23from aws_embedded_metrics .logger .metrics_context import MetricsContext
34from aws_embedded_metrics .serializers .log_serializer import LogSerializer
45from collections import Counter
56from faker import Faker
67import json
8+ import pytest
79
810fake = Faker ()
911
@@ -30,37 +32,6 @@ def test_serialize_dimensions():
3032 assert_json_equality (result_json , expected )
3133
3234
33- def test_cannot_serialize_more_than_9_dimensions ():
34- # arrange
35- dimensions = {}
36- dimension_pointers = []
37- allowed_dimensions = 9
38- dimensions_to_add = 15
39-
40- for i in range (0 , dimensions_to_add ):
41- print (i )
42- expected_key = f"{ i } "
43- expected_value = fake .word ()
44- dimensions [expected_key ] = expected_value
45- dimension_pointers .append (expected_key )
46-
47- expected_dimensions_pointers = dimension_pointers [0 :allowed_dimensions ]
48-
49- expected = {** get_empty_payload (), ** dimensions }
50- expected ["_aws" ]["CloudWatchMetrics" ][0 ]["Dimensions" ].append (
51- expected_dimensions_pointers
52- )
53-
54- context = get_context ()
55- context .put_dimensions (dimensions )
56-
57- # act
58- result_json = serializer .serialize (context )[0 ]
59-
60- # assert
61- assert_json_equality (result_json , expected )
62-
63-
6435def test_serialize_properties ():
6536 # arrange
6637 expected_key = fake .word ()
@@ -79,6 +50,25 @@ def test_serialize_properties():
7950 assert_json_equality (result_json , expected )
8051
8152
53+ def test_default_and_custom_dimensions_combined_limit_exceeded ():
54+ # While serializing default dimensions are added to the custom dimension set,
55+ # and the combined size of the dimension set should not be more than 30
56+ dimensions = {}
57+ default_dimension_key = fake .word ()
58+ default_dimension_value = fake .word ()
59+ custom_dimensions_to_add = 30
60+
61+ for i in range (0 , custom_dimensions_to_add ):
62+ dimensions [f"{ i } " ] = fake .word ()
63+
64+ context = get_context ()
65+ context .set_default_dimensions ({default_dimension_key : default_dimension_value })
66+ context .put_dimensions (dimensions )
67+
68+ with pytest .raises (DimensionSetExceededError ):
69+ serializer .serialize (context )
70+
71+
8272def test_serialize_metrics ():
8373 # arrange
8474 expected_key = fake .word ()
0 commit comments