| #!/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 SpanJoinLeftJoin(TestSuite): |
| |
| def test_span_left_join(self): |
| return DiffTestBlueprint( |
| trace=Path('../common/synth_1.py'), |
| query=Path('span_left_join_test.sql'), |
| out=Path('span_left_join.out')) |
| |
| def test_span_left_join_unpartitioned(self): |
| return DiffTestBlueprint( |
| trace=Path('../common/synth_1.py'), |
| query=Path('span_left_join_unpartitioned_test.sql'), |
| out=Path('span_left_join_unpartitioned.out')) |
| |
| def test_span_left_join_left_unpartitioned(self): |
| return DiffTestBlueprint( |
| trace=Path('../common/synth_1.py'), |
| query=Path('span_left_join_left_unpartitioned_test.sql'), |
| out=Path('span_left_join_left_unpartitioned.out')) |
| |
| def test_span_left_join_left_partitioned(self): |
| return DiffTestBlueprint( |
| trace=Path('../common/synth_1.py'), |
| query=Path('span_left_join_left_partitioned_test.sql'), |
| out=Path('span_left_join_left_partitioned.out')) |
| |
| def test_span_left_join_empty_right(self): |
| return DiffTestBlueprint( |
| trace=Path('../common/synth_1.py'), |
| query=""" |
| CREATE TABLE t1( |
| ts BIGINT, |
| dur BIGINT, |
| part BIGINT, |
| PRIMARY KEY (part, ts) |
| ) WITHOUT ROWID; |
| |
| CREATE TABLE t2( |
| ts BIGINT, |
| dur BIGINT, |
| part BIGINT, |
| PRIMARY KEY (part, ts) |
| ) WITHOUT ROWID; |
| |
| INSERT INTO t1(ts, dur, part) |
| VALUES |
| (500, 500, 100); |
| |
| CREATE VIRTUAL TABLE sp USING span_left_join(t1 PARTITIONED part, |
| t2 PARTITIONED part); |
| |
| SELECT * FROM sp; |
| """, |
| out=Csv(""" |
| "ts","dur","part" |
| 500,500,100 |
| """)) |
| |
| def test_span_left_join_unordered_android_sched_and_ps(self): |
| return DiffTestBlueprint( |
| trace=Path('../common/synth_1.py'), |
| query=""" |
| CREATE TABLE t1( |
| ts BIGINT, |
| dur BIGINT, |
| part BIGINT, |
| PRIMARY KEY (part, ts) |
| ) WITHOUT ROWID; |
| |
| CREATE TABLE t2( |
| ts BIGINT, |
| dur BIGINT, |
| part BIGINT, |
| PRIMARY KEY (part, ts) |
| ) WITHOUT ROWID; |
| |
| INSERT INTO t1(ts, dur, part) |
| VALUES (500, 100, 10); |
| |
| INSERT INTO t2(ts, dur, part) |
| VALUES (500, 100, 5); |
| |
| CREATE VIRTUAL TABLE sp USING span_left_join(t1 PARTITIONED part, |
| t2 PARTITIONED part); |
| |
| SELECT * FROM sp; |
| """, |
| out=Csv(""" |
| "ts","dur","part" |
| 500,100,10 |
| """)) |