Skip to content

Commit 52648c7

Browse files
committed
Adding tests for stats fields
1 parent 4269b9e commit 52648c7

File tree

1 file changed

+29
-7
lines changed

1 file changed

+29
-7
lines changed

tests/test_aql.py

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,37 +29,59 @@ def test_aql_attributes(db, username):
2929

3030

3131
def test_aql_query_management(db_version, db, bad_db, col, docs):
32-
plan_fields = [
32+
explain_fields = [
3333
"estimatedNrItems",
3434
"estimatedCost",
3535
"rules",
3636
"variables",
3737
"collections",
3838
"stats",
3939
]
40+
stats_fields = {
41+
"0.0.0": [
42+
"rulesExecuted",
43+
"rulesSkipped",
44+
"plansCreated",
45+
],
46+
"3.10.4": [
47+
"peakMemoryUsage",
48+
"executionTime",
49+
],
50+
}
51+
4052
# Test explain invalid query
4153
with assert_raises(AQLQueryExplainError) as err:
4254
db.aql.explain("INVALID QUERY")
4355
assert err.value.error_code == 1501
4456

4557
# Test explain valid query with all_plans set to False
46-
plan = db.aql.explain(
58+
explain = db.aql.explain(
4759
f"FOR d IN {col.name} RETURN d",
4860
all_plans=False,
4961
opt_rules=["-all", "+use-index-range"],
5062
)
51-
assert all(field in plan for field in plan_fields)
63+
assert all(field in explain for field in explain_fields)
64+
for v, fields in stats_fields.items():
65+
if db_version >= version.parse(v):
66+
assert all(field in explain["stats"] for field in fields)
67+
else:
68+
assert all(field not in explain["stats"] for field in fields)
5269

5370
# Test explain valid query with all_plans set to True
54-
plans = db.aql.explain(
71+
explanations = db.aql.explain(
5572
f"FOR d IN {col.name} RETURN d",
5673
all_plans=True,
5774
opt_rules=["-all", "+use-index-range"],
5875
max_plans=10,
5976
)
60-
for plan in plans:
61-
assert all(field in plan for field in plan_fields)
62-
assert len(plans) < 10
77+
for explain in explanations:
78+
assert all(field in explain for field in explain_fields)
79+
for v, fields in stats_fields.items():
80+
if db_version >= version.parse(v):
81+
assert all(field in explain["stats"] for field in fields)
82+
else:
83+
assert all(field not in explain["stats"] for field in fields)
84+
assert len(explanations) < 10
6385

6486
# Test validate invalid query
6587
with assert_raises(AQLQueryValidateError) as err:

0 commit comments

Comments
 (0)