ClickHouse/tests/integration/test_custom_dashboards/test.py
Azat Khuzhin 870ec237bb Add ability to load dashboards for system.dashboards from config
One of the obvious reasons is to allow rendering them with readonly
user, which is not possible right now, due to usage of merge() function
there.

Another one, is to add some custom metrics.

Note, that once set, they overrides the default dashboards preset.

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2024-07-26 21:21:09 +02:00

36 lines
1.5 KiB
Python

import pytest
from helpers.cluster import ClickHouseCluster
cluster = ClickHouseCluster(__file__)
default = cluster.add_instance("default")
custom = cluster.add_instance("custom", main_configs=["configs/config.d/overrides.xml"])
@pytest.fixture(scope="module", autouse=True)
def start_cluster():
try:
cluster.start()
yield cluster
finally:
cluster.shutdown()
def test_custom_dashboards():
assert int(default.query("select count()>10 from system.dashboards")) == 1
assert int(custom.query("select count() from system.dashboards")) == 1
assert (
default.query(
"select normalizeQuery(query) from system.dashboards where dashboard = 'Overview' and title = 'Queries/second'"
).strip()
== """
SELECT toStartOfInterval(event_time, INTERVAL {rounding:UInt32} SECOND)::INT AS t, avg(ProfileEvent_Query) FROM merge(?..) WHERE event_date >= toDate(now() - {seconds:UInt32}) AND event_time >= now() - {seconds:UInt32} GROUP BY t ORDER BY t WITH FILL STEP {rounding:UInt32}
""".strip()
)
custom.query(
"select normalizeQuery(query) from system.dashboards where dashboard = 'Overview' and title = 'Queries/second'"
).strip == """
SELECT toStartOfInterval(event_time, INTERVAL {rounding:UInt32} SECOND)::INT AS t, avg(ProfileEvent_Query) FROM system.metric_log WHERE event_date >= toDate(now() - {seconds:UInt32}) AND event_time >= now() - {seconds:UInt32} GROUP BY t ORDER BY t WITH FILL STEP {rounding:UInt32}
""".strip()