@@ -54,8 +54,8 @@ def test_filter_custom_properties_drops_invalid_entries(self):
5454 self .assertEqual (filtered ["short" ], "ok" )
5555 self .assertNotIn ("k" * 151 , filtered )
5656
57- def test_custom_properties_gen_ai_attributes_not_truncated (self ):
58- # All values in _GEN_AI_ATTRIBUTES should not be truncated even when > 64KiB
57+ def test_custom_properties_gen_ai_attributes_not_truncated_at_64kb (self ):
58+ # All values in _GEN_AI_ATTRIBUTES should not be truncated at > 64kb but at > 256kb
5959 large_value = "x" * (64 * 1024 + 1000 )
6060 properties = {key : large_value for key in _GEN_AI_ATTRIBUTES }
6161 filtered = _utils ._filter_custom_properties (properties )
@@ -65,7 +65,7 @@ def test_custom_properties_gen_ai_attributes_not_truncated(self):
6565 self .assertEqual (len (filtered [key ]), 64 * 1024 + 1000 )
6666
6767 def test_filter_custom_properties_non_gen_ai_truncated_at_64kb (self ):
68- # Regular properties exceeding 64KiB should be truncated
68+ # Regular properties exceeding 64kb should be truncated
6969 max_length = 64 * 1024
7070 large_value = "y" * (max_length + 2000 )
7171 properties = {
@@ -81,9 +81,10 @@ def test_filter_custom_properties_non_gen_ai_truncated_at_64kb(self):
8181 self .assertEqual (len (filtered [key ]), max_length )
8282
8383 def test_filter_custom_properties_mixed_gen_ai_and_regular (self ):
84- # Gen AI attributes keep full value , regular ones are truncated
84+ # Gen AI attributes truncated at 256kb , regular ones are truncated at 64kb
8585 max_length = 64 * 1024
86- large_value = "z" * (max_length + 3000 )
86+ max_length_for_gen_ai_attributes = 256 * 1024
87+ large_value = "z" * (1024 * 1024 + 3000 )
8788 properties = {
8889 "gen_ai.input.messages" : large_value ,
8990 "gen_ai.output.messages" : large_value ,
@@ -92,14 +93,25 @@ def test_filter_custom_properties_mixed_gen_ai_and_regular(self):
9293 "db.statement" : large_value ,
9394 }
9495 filtered = _utils ._filter_custom_properties (properties )
95- # Gen AI attributes — not truncated
96- self .assertEqual (len (filtered ["gen_ai.input.messages" ]), max_length + 3000 )
97- self .assertEqual (len (filtered ["gen_ai.output.messages" ]), max_length + 3000 )
98- # Regular attributes — truncated
96+
97+ self .assertEqual (len (filtered ["gen_ai.input.messages" ]), max_length_for_gen_ai_attributes )
98+ self .assertEqual (len (filtered ["gen_ai.output.messages" ]), max_length_for_gen_ai_attributes )
99+
99100 self .assertEqual (len (filtered ["gen_ai.agent.version" ]), max_length )
100101 self .assertEqual (len (filtered ["span_kind" ]), max_length )
101102 self .assertEqual (len (filtered ["db.statement" ]), max_length )
102103
104+ def test_custom_properties_gen_ai_attributes_truncated_at_256kb (self ):
105+ # All values in _GEN_AI_ATTRIBUTES should be truncated when > 256kb
106+ max_length_for_gen_ai_attributes = 256 * 1024
107+ large_value = "x" * (256 * 1024 + 1000 )
108+ properties = {key : large_value for key in _GEN_AI_ATTRIBUTES }
109+ filtered = _utils ._filter_custom_properties (properties )
110+ for key in _GEN_AI_ATTRIBUTES :
111+ with self .subTest (key = key ):
112+ self .assertIn (key , filtered )
113+ self .assertEqual (len (filtered [key ]), max_length_for_gen_ai_attributes )
114+
103115 def test_nanoseconds_to_duration (self ):
104116 ns_to_duration = _utils .ns_to_duration
105117 self .assertEqual (ns_to_duration (0 ), "0.00:00:00.000" )
0 commit comments