| #!/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 |
| """)) |