Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@ def query_groups(queries, query_key):
"queries": rendered,
"controller_options": {"accuracy_sla": ACCURACY_SLA},
}
for index, (interval_ms, rendered) in enumerate(sorted(grouped.items()), start=1)
for index, (interval_ms, rendered) in enumerate(
sorted(grouped.items()), start=1
)
]


Expand All @@ -44,7 +46,9 @@ def render(workload):
return {
"queries": queries,
"promql_planner": {
"metrics": [{"metric": metric, "labels": labels} for metric in PROMQL_METRICS],
"metrics": [
{"metric": metric, "labels": labels} for metric in PROMQL_METRICS
],
"query_groups": query_groups(queries, "promql"),
"aggregate_cleanup": {"policy": "read_based"},
},
Expand All @@ -69,7 +73,9 @@ def main():
path.write_text(yaml.safe_dump(rendered[name], sort_keys=False))
print(path)
schedule = args.out / "queries.json"
schedule.write_text(json.dumps(rendered["queries"], indent=2, sort_keys=True) + "\n")
schedule.write_text(
json.dumps(rendered["queries"], indent=2, sort_keys=True) + "\n"
)
print(schedule)


Expand Down
10 changes: 8 additions & 2 deletions asap-tools/experiments/datasets/fake_metric/random_workloads.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,11 @@
)
LABEL_CARDINALITIES = {name: cardinality for name, cardinality, _ in LABEL_HIERARCHY}
METRIC_LABELS = [
{"name": name, "cardinality": cardinality, **({"child_of": parent} if parent else {})}
{
"name": name,
"cardinality": cardinality,
**({"child_of": parent} if parent else {}),
}
for name, cardinality, parent in LABEL_HIERARCHY
]
GROUPINGS = (("region",), ("region", "service"), ("region", "service", "job"))
Expand Down Expand Up @@ -241,7 +245,9 @@ def validate_workload(workload):
"""Reject manifests that violate the experiment's stable public contract."""
queries = workload["queries"]
if len(queries) != QUERIES_PER_WORKLOAD:
raise ValueError(f"a workload must contain exactly {QUERIES_PER_WORKLOAD} queries")
raise ValueError(
f"a workload must contain exactly {QUERIES_PER_WORKLOAD} queries"
)
if len({query["id"] for query in queries}) != len(queries):
raise ValueError("query IDs must be unique")
rqe_keys = {
Expand Down
22 changes: 17 additions & 5 deletions asap-tools/experiments/tests/test_random_workload_artifacts.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
import unittest


sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "datasets", "fake_metric"))
sys.path.insert(
0, os.path.join(os.path.dirname(__file__), "..", "datasets", "fake_metric")
)

import random_workload_artifacts as artifacts # noqa: E402
import random_workloads as workloads # noqa: E402
Expand All @@ -18,22 +20,32 @@ def test_promql_input_groups_non_sql_queries_by_repeat_interval(self):
planner = rendered["promql_planner"]
expected = [q for q in rendered["queries"] if q["promql"]]
self.assertEqual(
sum(len(group["queries"]) for group in planner["query_groups"]), len(expected)
sum(len(group["queries"]) for group in planner["query_groups"]),
len(expected),
)
self.assertEqual(
{tuple(metric["labels"]) for metric in planner["metrics"]},
{("region", "service", "job", "label_0")},
)
for group in planner["query_groups"]:
self.assertTrue(all(query["interval_ms"] == group["repetition_delay_ms"]
for query in expected if query["promql"] in group["queries"]))
self.assertTrue(
all(
query["interval_ms"] == group["repetition_delay_ms"]
for query in expected
if query["promql"] in group["queries"]
)
)

def test_sql_input_contains_only_sql_queries_and_their_table_schema(self):
rendered = artifacts.render(workloads.generate_workloads(seed=862)[0])

self.assertTrue(rendered["sql_planner"]["query_groups"])
self.assertEqual(rendered["sql_planner"]["tables"][0]["name"], "events")
sql = [query for group in rendered["sql_planner"]["query_groups"] for query in group["queries"]]
sql = [
query
for group in rendered["sql_planner"]["query_groups"]
for query in group["queries"]
]
self.assertTrue(all("COUNT(DISTINCT user_id)" in query for query in sql))


Expand Down
Loading