11import uuid
2-
2+ import time
3+ import logging
34import pytest
45
56from helpers .cluster import ClickHouseCluster
@@ -29,7 +30,7 @@ def test_memory_context_in_trace_log(started_cluster):
2930 pytest .skip ("sanitizers built without jemalloc" )
3031
3132 def get_trace_events (memory_context , memory_blocked_context , trace_type , query_id = None ):
32- return int (node .query (f"""
33+ res = int (node .query (f"""
3334 SELECT count() FROM system.trace_log
3435 WHERE
3536 /* Do not take into account data from other test runs */
@@ -39,13 +40,29 @@ def get_trace_events(memory_context, memory_blocked_context, trace_type, query_i
3940 AND trace_type = '{ trace_type } '
4041 AND { 'empty(query_id)' if query_id is None else f"query_id = '{ query_id } '" }
4142 """ ).strip ())
43+ logging .info ('memory_context=%s/memory_blocked_context=%s/trace_type=%s/query_id=%s: %s' ,
44+ memory_context , memory_blocked_context , trace_type , query_id , res )
45+ return res
46+
47+ for _ in range (0 , 15 ):
48+ # Generate some logs to generate entries with memory_blocked_context=Global and trace_type=JemallocSample
49+ for i in range (10 ):
50+ node .query ("SELECT logTrace('foo')" )
51+ query_id = uuid .uuid4 ().hex
52+ node .query ("SELECT * FROM numbers(100000) ORDER BY number" , query_id = query_id )
4253
43- # Generate some logs to generate entries with memory_blocked_context=Global and trace_type=JemallocSample
44- for i in range (10 ):
45- node .query ("SELECT logTrace('foo')" )
46- query_id = uuid .uuid4 ().hex
47- node .query ("SELECT * FROM numbers(100000) ORDER BY number" , query_id = query_id )
48- node .query ("SYSTEM FLUSH LOGS system.trace_log" )
54+ node .query ("SYSTEM FLUSH LOGS system.trace_log" )
55+ if (
56+ get_trace_events ("Unknown" , "Max" , "MemorySample" , query_id ) > 0 and
57+ get_trace_events ("Unknown" , "Max" , "JemallocSample" , query_id ) > 0 and
58+ get_trace_events ("Unknown" , "Max" , "JemallocSample" ) > 0 and
59+ get_trace_events ("Unknown" , "Global" , "JemallocSample" ) > 0 and
60+ get_trace_events ("Global" , "Max" , "Memory" ) > 0 and
61+ get_trace_events ("Global" , "Max" , "MemoryPeak" ) > 0 and
62+ True
63+ ):
64+ break
65+ time .sleep (1 )
4966
5067 # For JemallocSample we have Global (for i.e. logging) and Max (for regular allocations) blocked memory tracker
5168 for memory_blocked_context in ["Global" , "Max" ]:
0 commit comments