blob: 8ed753fd1c13920132da39fe5e527fe231d5eb42 [file] [log] [blame]
#!/usr/bin/env python3
# Copyright (C) 2023 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License a
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from python.generators.diff_tests.testing import Path, DataPath, Metric
from python.generators.diff_tests.testing import Csv, Json, TextProto
from python.generators.diff_tests.testing import DiffTestBlueprint
from python.generators.diff_tests.testing import TestSuite
class TablesCounters(TestSuite):
# Counters table
def test_synth_1_filter_counter(self):
return DiffTestBlueprint(
trace=Path('../common/synth_1.py'),
query="""
SELECT COUNT(*)
FROM counter
WHERE
track_id = 0;
""",
out=Csv("""
"COUNT(*)"
2
"""))
def test_memory_counters_b120278869_neg_ts_end(self):
return DiffTestBlueprint(
trace=DataPath('memory_counters.pb'),
query="""
SELECT count(*) FROM counters WHERE -1 < ts;
""",
out=Csv("""
"count(*)"
98688
"""))
def test_counters_where_cpu_counters_where_cpu(self):
return DiffTestBlueprint(
trace=Path('counters_where_cpu.py'),
query="""
SELECT
ts,
lead(ts, 1, ts) OVER (PARTITION BY name ORDER BY ts) - ts AS dur,
value
FROM counter c
JOIN cpu_counter_track t ON t.id = c.track_id
WHERE cpu = 1;
""",
out=Csv("""
"ts","dur","value"
1000,1,3000.000000
1001,0,4000.000000
"""))
def test_counters_group_by_freq_counters_group_by_freq(self):
return DiffTestBlueprint(
trace=Path('counters_group_by_freq.py'),
query="""
SELECT
value,
sum(dur) AS dur_sum
FROM (
SELECT value,
lead(ts) OVER (PARTITION BY name, track_id ORDER BY ts) - ts AS dur
FROM counter
JOIN counter_track ON counter.track_id = counter_track.id
)
WHERE value > 0
GROUP BY value
ORDER BY dur_sum DESC;
""",
out=Csv("""
"value","dur_sum"
4000.000000,2
3000.000000,1
"""))
def test_filter_row_vector_example_android_trace_30s(self):
return DiffTestBlueprint(
trace=DataPath('example_android_trace_30s.pb'),
query="""
SELECT ts
FROM counter
WHERE
ts > 72563651549
AND track_id = (
SELECT t.id
FROM process_counter_track t
JOIN process p USING (upid)
WHERE
t.name = 'Heap size (KB)'
AND p.pid = 1204
)
AND value != 17952.000000
LIMIT 20;
""",
out=Path('filter_row_vector_example_android_trace_30s.out'))
def test_counter_dur_example_android_trace_30s(self):
return DiffTestBlueprint(
trace=DataPath('example_android_trace_30s.pb'),
query=Path('counter_dur_test.sql'),
out=Csv("""
"ts","dur"
100351738640,-1
100351738640,-1
100351738640,-1
70731059648,19510835
70731059648,19510835
70731059648,19510835
73727335051,23522762
73727335051,23522762
73727335051,23522762
86726132752,24487554
"""))