@@ -383,42 +383,39 @@ def test_database_hostname_ignores_reported_hostname_override(reported_hostname,
383383 mock_resolve .assert_called_with (BASE_INSTANCE ['server' ])
384384
385385
386- def test_make_cluster_aware_direct_connection_unchanged (instance ):
387- """Direct connections keep the bare per-node query (SDBM-2746)."""
388- instance = {** instance , 'single_endpoint_mode' : False }
389- check = ClickhouseCheck ('clickhouse' , {}, [instance ])
390-
391- assert check .make_cluster_aware (advanced_queries .SystemEvents ) is advanced_queries .SystemEvents
392-
393-
394- def test_make_cluster_aware_bulk_match_query (instance ):
395- """Single endpoint mode tags system.events per node so counters don't flap across the LB (SDBM-2746)."""
396- instance = {** instance , 'single_endpoint_mode' : True }
397- check = ClickhouseCheck ('clickhouse' , {}, [instance ])
398-
399- rewritten = check .make_cluster_aware (advanced_queries .SystemEvents )
386+ def test_cluster_aware_variant_bulk_match_query ():
387+ """The cluster-aware variant reads all replicas and tags system.events per node (SDBM-2746)."""
388+ variant = advanced_queries .SystemEventsClusterAware
400389
401- assert rewritten ['query' ] == (
390+ assert variant ['query' ] == (
402391 "SELECT value, event, hostName() AS clickhouse_node FROM clusterAllReplicas('default', system.events)"
403392 )
404- assert rewritten ['columns' ][- 1 ] == {'name' : 'clickhouse_node' , 'type' : 'tag' }
405- # The original cached query dict must not be mutated.
393+ assert variant ['columns' ][- 1 ] == {'name' : 'clickhouse_node' , 'type' : 'tag' }
394+ # The base query dict must not be mutated by building the variant .
406395 assert advanced_queries .SystemEvents ['query' ] == 'SELECT value, event FROM system.events'
407396 assert all (column ['name' ] != 'clickhouse_node' for column in advanced_queries .SystemEvents ['columns' ])
408397
409398
410- def test_make_cluster_aware_preserves_where_clause (instance ):
411- """system.errors carries a WHERE clause that must survive the rewrite."""
412- instance = {** instance , 'single_endpoint_mode' : True }
413- check = ClickhouseCheck ('clickhouse' , {}, [instance ])
414-
415- rewritten = check .make_cluster_aware (advanced_queries .SystemErrors )
399+ def test_cluster_aware_variant_preserves_where_clause ():
400+ """system.errors carries a WHERE clause that must survive in the cluster-aware variant."""
401+ variant = advanced_queries .SystemErrorsClusterAware
416402
417- assert rewritten ['query' ] == (
403+ assert variant ['query' ] == (
418404 "SELECT value, name, code, remote, hostName() AS clickhouse_node "
419405 "FROM clusterAllReplicas('default', system.errors) WHERE value > 0"
420406 )
421- assert rewritten ['columns' ][- 1 ] == {'name' : 'clickhouse_node' , 'type' : 'tag' }
407+ assert variant ['columns' ][- 1 ] == {'name' : 'clickhouse_node' , 'type' : 'tag' }
408+
409+
410+ def test_cluster_aware_variant_legacy_query ():
411+ """Legacy queries.py exposes matching static cluster-aware variants."""
412+ variant = queries .SystemMetricsClusterAware
413+
414+ assert variant ['query' ] == (
415+ "SELECT value, metric, hostName() AS clickhouse_node FROM clusterAllReplicas('default', system.metrics)"
416+ )
417+ assert variant ['columns' ][- 1 ] == {'name' : 'clickhouse_node' , 'type' : 'tag' }
418+ assert queries .SystemMetrics ['query' ] == 'SELECT value, metric FROM system.metrics'
422419
423420
424421@pytest .mark .parametrize ('use_advanced_queries' , [True , False ])
@@ -443,3 +440,17 @@ def test_get_queries_tags_system_tables_per_node_in_single_endpoint_mode(instanc
443440 # system.parts/replicas/dictionaries use GROUP BY and are intentionally left untouched here.
444441 if not use_advanced_queries :
445442 assert any (q is queries .SystemParts for q in check .get_queries ())
443+
444+
445+ @pytest .mark .parametrize ('use_advanced_queries' , [True , False ])
446+ def test_get_queries_uses_base_queries_for_direct_connection (instance , use_advanced_queries ):
447+ instance = {
448+ ** instance ,
449+ 'single_endpoint_mode' : False ,
450+ 'use_advanced_queries' : use_advanced_queries ,
451+ 'use_legacy_queries' : not use_advanced_queries ,
452+ }
453+ check = ClickhouseCheck ('clickhouse' , {}, [instance ])
454+ check ._server_version = '24.8'
455+
456+ assert all ('clusterAllReplicas' not in q ['query' ] for q in check .get_queries ())
0 commit comments