1
1
from aws_embedded_metrics .config import get_config
2
+ from aws_embedded_metrics .exceptions import DimensionSetExceededError
2
3
from aws_embedded_metrics .logger .metrics_context import MetricsContext
3
4
from aws_embedded_metrics .serializers .log_serializer import LogSerializer
4
5
from collections import Counter
5
6
from faker import Faker
6
7
import json
8
+ import pytest
7
9
8
10
fake = Faker ()
9
11
@@ -30,37 +32,6 @@ def test_serialize_dimensions():
30
32
assert_json_equality (result_json , expected )
31
33
32
34
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
-
64
35
def test_serialize_properties ():
65
36
# arrange
66
37
expected_key = fake .word ()
@@ -79,6 +50,25 @@ def test_serialize_properties():
79
50
assert_json_equality (result_json , expected )
80
51
81
52
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
+
82
72
def test_serialize_metrics ():
83
73
# arrange
84
74
expected_key = fake .word ()
0 commit comments