@@ -71,6 +71,8 @@ def test_facade_segment_properties():
71
71
72
72
def test_segment_methods_on_mimic ():
73
73
# Test to make sure that segment methods exist and function for the Mimic Segment
74
+ # And ensure that the methods (other than get/set origin_trace_header) don't modify
75
+ # the segment.
74
76
mimic_segment = MimicSegment (facade_segment = facade_segment , original_segment = original_segment ) # type: MimicSegment
75
77
assert not getattr (mimic_segment , "service" , None )
76
78
assert not getattr (mimic_segment , "user" , None )
@@ -82,20 +84,44 @@ def test_segment_methods_on_mimic():
82
84
assert getattr (original_segment , "ref_counter" , None )
83
85
assert getattr (original_segment , "_subsegments_counter" , None )
84
86
85
- mimic_segment .set_service ("SomeService" )
86
- original_segment .set_service ("SomeService" )
87
- assert original_segment .service == original_segment .service
88
-
89
87
assert original_segment .get_origin_trace_header () == mimic_segment .get_origin_trace_header ()
90
88
mimic_segment .save_origin_trace_header ("someheader" )
91
89
original_segment .save_origin_trace_header ("someheader" )
92
90
assert original_segment .get_origin_trace_header () == mimic_segment .get_origin_trace_header ()
93
91
94
92
# No exception is thrown
95
93
test_dict = {"akey" : "avalue" }
96
- original_segment .set_aws (test_dict )
97
- original_segment .set_rule_name (test_dict )
94
+ test_rule_name = {"arule" : "name" }
95
+ original_segment .set_aws (test_dict .copy ())
96
+ original_segment .set_rule_name (test_rule_name .copy ())
98
97
original_segment .set_user ("SomeUser" )
99
- mimic_segment .set_aws (test_dict )
100
- mimic_segment .set_rule_name (test_dict )
98
+ original_segment .set_service ("SomeService" )
99
+ mimic_segment .set_aws (test_dict .copy ())
100
+ mimic_segment .set_rule_name (test_rule_name .copy ())
101
101
mimic_segment .set_user ("SomeUser" )
102
+ mimic_segment .set_service ("SomeService" )
103
+
104
+ # Original segment should contain these properties
105
+ # but not the mimic segment.
106
+ assert getattr (original_segment , "service" , None )
107
+ assert getattr (original_segment , "user" , None )
108
+ assert 'xray' in getattr (original_segment , "aws" , None )
109
+ assert 'sampling_rule_name' in getattr (original_segment , "aws" , None )['xray' ]
110
+
111
+ assert not getattr (mimic_segment , "service" , None )
112
+ assert not getattr (mimic_segment , "user" , None )
113
+ # Originally set by rule_name, but no-op so nothing is set.
114
+ assert 'xray' not in getattr (mimic_segment , "aws" , None )
115
+
116
+ # Ensure serialization also doesn't have those properties in mimic but do in original
117
+ original_segment_serialized = original_segment .__getstate__ ()
118
+ mimic_segment_serialized = mimic_segment .__getstate__ ()
119
+
120
+ assert 'service' in original_segment_serialized
121
+ assert 'user' in original_segment_serialized
122
+ assert 'xray' in original_segment_serialized ['aws' ]
123
+ assert 'sampling_rule_name' in original_segment_serialized ['aws' ]['xray' ]
124
+
125
+ assert 'service' not in mimic_segment_serialized
126
+ assert 'user' not in mimic_segment_serialized
127
+ assert 'xray' not in mimic_segment_serialized ['aws' ]
0 commit comments