-
Notifications
You must be signed in to change notification settings - Fork 1
/
benchmark_query.py
135 lines (105 loc) · 3.8 KB
/
benchmark_query.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
"""
Use the `pytest-benchmark` library to more formally benchmark the Kùzu queries with warmup and iterations.
`pip install pytest-benchmark`
"""
import pytest
import kuzu
import query
@pytest.fixture
def connection():
db = kuzu.Database("./social_network")
# Default num_threads=0 uses as many threads as hardware and utilization allows
conn = kuzu.Connection(db, num_threads=0)
yield conn
def test_benchmark_query1(benchmark, connection):
result = benchmark(query.run_query1, connection)
result = result.to_dicts()
assert len(result) == 3
assert result[0]["personID"] == 85723
assert result[1]["personID"] == 68753
assert result[2]["personID"] == 54696
assert result[0]["numFollowers"] == 4998
assert result[1]["numFollowers"] == 4985
assert result[2]["numFollowers"] == 4976
def test_benchmark_query2(benchmark, connection):
result = benchmark(query.run_query2, connection)
result = result.to_dicts()
assert len(result) == 1
assert result[0]["name"] == "Melissa Murphy"
assert result[0]["numFollowers"] == 4998
assert result[0]["city"] == "Austin"
assert result[0]["state"] == "Texas"
assert result[0]["country"] == "United States"
def test_benchmark_query3(benchmark, connection):
result = benchmark(query.run_query3, connection, {"country": "United States"})
result = result.to_dicts()
assert len(result) == 5
assert result[0]["city"] == "Austin"
assert result[1]["city"] == "Kansas City"
assert result[2]["city"] == "Miami"
assert result[3]["city"] == "Houston"
assert result[4]["city"] == "San Antonio"
def test_benchmark_query4(benchmark, connection):
result = benchmark(query.run_query4, connection, {"age_lower": 30, "age_upper": 40})
result = result.to_dicts()
assert len(result) == 3
assert result[0]["countries"] == "United States"
assert result[1]["countries"] == "Canada"
assert result[2]["countries"] == "United Kingdom"
assert result[0]["personCounts"] == 30698
assert result[1]["personCounts"] == 3037
assert result[2]["personCounts"] == 1819
def test_benchmark_query5(benchmark, connection):
result = benchmark(
query.run_query5,
connection,
{
"gender": "male",
"city": "London",
"country": "United Kingdom",
"interest": "fine dining",
},
)
result = result.to_dicts()
assert len(result) == 1
assert result[0]["numPersons"] == 52
def test_benchmark_query6(benchmark, connection):
result = benchmark(
query.run_query6,
connection,
{
"gender": "female",
"interest": "tennis"
},
)
result = result.to_dicts()
assert len(result) == 5
assert result[0]["numPersons"] == 66
assert result[0]["city"] in ("Houston", "Birmingham")
assert result[0]["country"] in ("United States", "United Kingdom")
def test_benchmark_query7(benchmark, connection):
result = benchmark(
query.run_query7,
connection,
{
"country": "United States",
"age_lower": 23,
"age_upper": 30,
"interest": "photography",
},
)
result = result.to_dicts()
assert len(result) == 1
assert result[0]["numPersons"] == 165
assert result[0]["state"] == "California"
assert result[0]["country"] == "United States"
def test_benchmark_query8(benchmark, connection):
result = benchmark(query.run_query8, connection)
result = result.to_dicts()
assert len(result) == 1
assert result[0]["numPaths"] == 58431994
def test_benchmark_query9(benchmark, connection):
result = benchmark(query.run_query9, connection, {"age_1": 50, "age_2": 25})
result = result.to_dicts()
assert len(result) == 1
assert result[0]["numPaths"] == 46061065