xref: /aosp_15_r20/external/perfetto/test/trace_processor/PRESUBMIT.py (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
1*6dbdd20aSAndroid Build Coastguard Worker# Copyright (C) 2022 The Android Open Source Project
2*6dbdd20aSAndroid Build Coastguard Worker#
3*6dbdd20aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
4*6dbdd20aSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
5*6dbdd20aSAndroid Build Coastguard Worker# You may obtain a copy of the License at
6*6dbdd20aSAndroid Build Coastguard Worker#
7*6dbdd20aSAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
8*6dbdd20aSAndroid Build Coastguard Worker#
9*6dbdd20aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*6dbdd20aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
11*6dbdd20aSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*6dbdd20aSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
13*6dbdd20aSAndroid Build Coastguard Worker# limitations under the License.
14*6dbdd20aSAndroid Build Coastguard Worker
15*6dbdd20aSAndroid Build Coastguard Workerfrom __future__ import print_function
16*6dbdd20aSAndroid Build Coastguard Workerimport time
17*6dbdd20aSAndroid Build Coastguard Workerimport subprocess
18*6dbdd20aSAndroid Build Coastguard Workerfrom os.path import relpath
19*6dbdd20aSAndroid Build Coastguard Worker
20*6dbdd20aSAndroid Build Coastguard Worker
21*6dbdd20aSAndroid Build Coastguard WorkerUSE_PYTHON3 = True
22*6dbdd20aSAndroid Build Coastguard Worker
23*6dbdd20aSAndroid Build Coastguard Worker
24*6dbdd20aSAndroid Build Coastguard Workerdef RunAndReportIfLong(func, *args, **kargs):
25*6dbdd20aSAndroid Build Coastguard Worker  start = time.time()
26*6dbdd20aSAndroid Build Coastguard Worker  results = func(*args, **kargs)
27*6dbdd20aSAndroid Build Coastguard Worker  end = time.time()
28*6dbdd20aSAndroid Build Coastguard Worker  limit = 3.0  # seconds
29*6dbdd20aSAndroid Build Coastguard Worker  name = func.__name__
30*6dbdd20aSAndroid Build Coastguard Worker  runtime = end - start
31*6dbdd20aSAndroid Build Coastguard Worker  if runtime > limit:
32*6dbdd20aSAndroid Build Coastguard Worker    print("{} took >{:.2}s ({:.2}s)".format(name, limit, runtime))
33*6dbdd20aSAndroid Build Coastguard Worker  return results
34*6dbdd20aSAndroid Build Coastguard Worker
35*6dbdd20aSAndroid Build Coastguard Worker
36*6dbdd20aSAndroid Build Coastguard Workerdef CheckChange(input, output):
37*6dbdd20aSAndroid Build Coastguard Worker  results = []
38*6dbdd20aSAndroid Build Coastguard Worker  results += RunAndReportIfLong(CheckSqlTest, input, output)
39*6dbdd20aSAndroid Build Coastguard Worker  return results
40*6dbdd20aSAndroid Build Coastguard Worker
41*6dbdd20aSAndroid Build Coastguard Worker
42*6dbdd20aSAndroid Build Coastguard Workerdef CheckChangeOnUpload(input_api, output_api):
43*6dbdd20aSAndroid Build Coastguard Worker  return CheckChange(input_api, output_api)
44*6dbdd20aSAndroid Build Coastguard Worker
45*6dbdd20aSAndroid Build Coastguard Worker
46*6dbdd20aSAndroid Build Coastguard Workerdef CheckChangeOnCommit(input_api, output_api):
47*6dbdd20aSAndroid Build Coastguard Worker  return CheckChange(input_api, output_api)
48*6dbdd20aSAndroid Build Coastguard Worker
49*6dbdd20aSAndroid Build Coastguard Worker
50*6dbdd20aSAndroid Build Coastguard Workerdef CheckSqlTest(input_api, output_api):
51*6dbdd20aSAndroid Build Coastguard Worker
52*6dbdd20aSAndroid Build Coastguard Worker  def file_filter(x):
53*6dbdd20aSAndroid Build Coastguard Worker    return input_api.FilterSourceFile(
54*6dbdd20aSAndroid Build Coastguard Worker        x, files_to_check=('.*\.sql',), files_to_skip=('.*\_test\.sql',))
55*6dbdd20aSAndroid Build Coastguard Worker
56*6dbdd20aSAndroid Build Coastguard Worker  non_test_sql = input_api.AffectedSourceFiles(file_filter)
57*6dbdd20aSAndroid Build Coastguard Worker  if non_test_sql:
58*6dbdd20aSAndroid Build Coastguard Worker    return [
59*6dbdd20aSAndroid Build Coastguard Worker        output_api.PresubmitError("SQL tests should be named *_test.sql:",
60*6dbdd20aSAndroid Build Coastguard Worker                                  [f.LocalPath() for f in non_test_sql])
61*6dbdd20aSAndroid Build Coastguard Worker    ]
62*6dbdd20aSAndroid Build Coastguard Worker  return []
63