@@ -124,6 +124,8 @@ def test_normalize_queries(check_with_dbm):
124124 'result_bytes' : 5000 ,
125125 'memory_usage' : 1000000 ,
126126 'peak_memory_usage' : 1500000 ,
127+ 'cpu_us' : 80000 ,
128+ 'cpu_wait_us' : 8000 ,
127129 }
128130 ]
129131
@@ -189,6 +191,8 @@ def test_query_signature_matches_samples_pipeline(check_with_dbm):
189191 'result_bytes' : 0 ,
190192 'memory_usage' : 0 ,
191193 'peak_memory_usage' : 0 ,
194+ 'cpu_us' : 1000 ,
195+ 'cpu_wait_us' : 100 ,
192196 }
193197 ]
194198 normalized = metrics ._normalize_queries (rows )
@@ -452,6 +456,8 @@ def test_normalize_queries_handles_obfuscation_failure(check_with_dbm):
452456 'result_bytes' : 0 ,
453457 'memory_usage' : 0 ,
454458 'peak_memory_usage' : 0 ,
459+ 'cpu_us' : 1000 ,
460+ 'cpu_wait_us' : 100 ,
455461 },
456462 {
457463 'normalized_query_hash' : '67890' ,
@@ -472,6 +478,8 @@ def test_normalize_queries_handles_obfuscation_failure(check_with_dbm):
472478 'result_bytes' : 0 ,
473479 'memory_usage' : 0 ,
474480 'peak_memory_usage' : 0 ,
481+ 'cpu_us' : 500 ,
482+ 'cpu_wait_us' : 50 ,
475483 },
476484 ]
477485
@@ -500,6 +508,9 @@ def test_statements_query_format():
500508 # Filters
501509 assert 'event_time_microseconds <= now64(6)' in STATEMENTS_QUERY
502510
511+ assert "ProfileEvents['OSCPUVirtualTimeMicroseconds']" in STATEMENTS_QUERY
512+ assert "ProfileEvents['OSCPUWaitMicroseconds']" in STATEMENTS_QUERY
513+
503514
504515def test_merge_rows_across_nodes_single_node ():
505516 """When a query only appears on one node, it should pass through unchanged."""
@@ -520,13 +531,17 @@ def test_merge_rows_across_nodes_single_node():
520531 'result_bytes' : 500 ,
521532 'memory_usage' : 5000 ,
522533 'peak_memory_usage' : 8000 ,
534+ 'cpu_us' : 80000 ,
535+ 'cpu_wait_us' : 8000 ,
523536 }
524537 ]
525538
526539 result = ClickhouseStatementMetrics ._merge_rows_across_nodes (rows )
527540 assert len (result ) == 1
528541 assert result [0 ]['count' ] == 10
529542 assert result [0 ]['total_time' ] == 100.0
543+ assert result [0 ]['cpu_us' ] == 80000
544+ assert result [0 ]['cpu_wait_us' ] == 8000
530545
531546
532547def test_merge_rows_across_nodes_sums_counts ():
@@ -548,6 +563,8 @@ def test_merge_rows_across_nodes_sums_counts():
548563 'result_bytes' : 5000 ,
549564 'memory_usage' : 50000 ,
550565 'peak_memory_usage' : 80000 ,
566+ 'cpu_us' : 500000 ,
567+ 'cpu_wait_us' : 50000 ,
551568 },
552569 {
553570 'normalized_query_hash' : 'hash1' ,
@@ -563,6 +580,8 @@ def test_merge_rows_across_nodes_sums_counts():
563580 'result_bytes' : 2500 ,
564581 'memory_usage' : 30000 ,
565582 'peak_memory_usage' : 90000 ,
583+ 'cpu_us' : 300000 ,
584+ 'cpu_wait_us' : 30000 ,
566585 },
567586 ]
568587
@@ -580,6 +599,8 @@ def test_merge_rows_across_nodes_sums_counts():
580599 assert merged ['result_bytes' ] == 7500
581600 assert merged ['memory_usage' ] == 80000
582601 assert merged ['peak_memory_usage' ] == 90000
602+ assert merged ['cpu_us' ] == 800000
603+ assert merged ['cpu_wait_us' ] == 80000
583604 assert merged ['mean_time' ] == 800.0 / 150
584605
585606
@@ -600,6 +621,8 @@ def test_merge_rows_across_nodes_different_queries():
600621 'result_bytes' : 0 ,
601622 'memory_usage' : 0 ,
602623 'peak_memory_usage' : 0 ,
624+ 'cpu_us' : 80000 ,
625+ 'cpu_wait_us' : 8000 ,
603626 }
604627
605628 rows = [
@@ -636,6 +659,8 @@ def test_metrics_row_with_empty_values(check_with_dbm):
636659 'result_bytes' : 0 ,
637660 'memory_usage' : 0 ,
638661 'peak_memory_usage' : 0 ,
662+ 'cpu_us' : 0 , # Zero CPU
663+ 'cpu_wait_us' : 0 ,
639664 }
640665 ]
641666
0 commit comments