• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python3
2# Copyright (C) 2023 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License a
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15import os
16import sys
17from typing import List
18
19from python.generators.diff_tests import testing
20
21# A hack to import using `diff_tests.` which prevents the risk name conflicts,
22# i.e importing a module when user has a different package of the same name
23# installed.
24TRACE_PROCESSOR_TEST_DIR = os.path.dirname(
25    os.path.dirname(os.path.abspath(__file__)))
26sys.path.append(TRACE_PROCESSOR_TEST_DIR)
27
28from diff_tests.metrics.android.tests import AndroidMetrics
29from diff_tests.metrics.camera.tests import Camera
30from diff_tests.metrics.chrome.tests import ChromeMetrics
31from diff_tests.metrics.chrome.tests_args import ChromeArgs
32from diff_tests.metrics.chrome.tests_processes import ChromeProcesses
33from diff_tests.metrics.chrome.tests_rail_modes import ChromeRailModes
34from diff_tests.metrics.chrome.tests_scroll_jank import ChromeScrollJankMetrics
35from diff_tests.metrics.chrome.tests_touch_gesture import ChromeTouchGesture
36from diff_tests.metrics.codecs.tests import Codecs
37from diff_tests.metrics.frame_timeline.tests import FrameTimeline
38from diff_tests.metrics.graphics.tests import GraphicsMetrics
39from diff_tests.metrics.irq.tests import IRQ
40from diff_tests.metrics.memory.tests import MemoryMetrics
41from diff_tests.metrics.network.tests import NetworkMetrics
42from diff_tests.metrics.power.tests import Power
43from diff_tests.metrics.profiling.tests import ProfilingMetrics
44from diff_tests.metrics.startup.tests import Startup
45from diff_tests.metrics.startup.tests_broadcasts import StartupBroadcasts
46from diff_tests.metrics.startup.tests_lock_contention import StartupLockContention
47from diff_tests.metrics.startup.tests_metrics import StartupMetrics
48from diff_tests.metrics.webview.tests import WebView
49from diff_tests.parser.android_fs.tests import AndroidFs
50from diff_tests.parser.android.tests import AndroidParser
51from diff_tests.parser.android.tests_android_input_event import AndroidInputEvent
52from diff_tests.parser.android.tests_bugreport import AndroidBugreport
53from diff_tests.parser.android.tests_games import AndroidGames
54from diff_tests.parser.android.tests_inputmethod_clients import InputMethodClients
55from diff_tests.parser.android.tests_inputmethod_manager_service import InputMethodManagerService
56from diff_tests.parser.android.tests_inputmethod_service import InputMethodService
57from diff_tests.parser.android.tests_protolog import ProtoLog
58from diff_tests.parser.android.tests_shell_transitions import ShellTransitions
59from diff_tests.parser.android.tests_surfaceflinger_layers import SurfaceFlingerLayers
60from diff_tests.parser.android.tests_surfaceflinger_transactions import SurfaceFlingerTransactions
61from diff_tests.parser.android.tests_viewcapture import ViewCapture
62from diff_tests.parser.atrace.tests import Atrace
63from diff_tests.parser.atrace.tests_error_handling import AtraceErrorHandling
64from diff_tests.parser.chrome.tests import ChromeParser
65from diff_tests.parser.chrome.tests_memory_snapshots import ChromeMemorySnapshots
66from diff_tests.parser.chrome.tests_v8 import ChromeV8Parser
67from diff_tests.parser.cros.tests import Cros
68from diff_tests.parser.fs.tests import Fs
69from diff_tests.parser.ftrace.ftrace_crop_tests import FtraceCrop
70from diff_tests.parser.fuchsia.tests import Fuchsia
71from diff_tests.parser.graphics.tests import GraphicsParser
72from diff_tests.parser.graphics.tests_drm_related_ftrace_events import GraphicsDrmRelatedFtraceEvents
73from diff_tests.parser.graphics.tests_gpu_trace import GraphicsGpuTrace
74from diff_tests.parser.json.tests import JsonTests
75from diff_tests.parser.memory.tests import MemoryParser
76from diff_tests.parser.network.tests import NetworkParser
77from diff_tests.parser.parsing.tests import Parsing
78from diff_tests.parser.parsing.tests_debug_annotation import ParsingDebugAnnotation
79from diff_tests.parser.parsing.tests_memory_counters import ParsingMemoryCounters
80from diff_tests.parser.parsing.tests_traced_stats import ParsingTracedStats
81from diff_tests.parser.parsing.tests_rss_stats import ParsingRssStats
82from diff_tests.parser.power.tests_energy_breakdown import PowerEnergyBreakdown
83from diff_tests.parser.power.tests_entity_state_residency import EntityStateResidency
84from diff_tests.parser.power.tests_linux_sysfs_power import LinuxSysfsPower
85from diff_tests.parser.power.tests_power_rails import PowerPowerRails
86from diff_tests.parser.power.tests_voltage_and_scaling import PowerVoltageAndScaling
87from diff_tests.parser.process_tracking.tests import ProcessTracking
88from diff_tests.parser.profiling.tests import Profiling
89from diff_tests.parser.profiling.tests_heap_graph import ProfilingHeapGraph
90from diff_tests.parser.profiling.tests_heap_profiling import ProfilingHeapProfiling
91from diff_tests.parser.profiling.tests_llvm_symbolizer import ProfilingLlvmSymbolizer
92from diff_tests.parser.sched.tests import SchedParser
93from diff_tests.parser.simpleperf.tests import Simpleperf
94from diff_tests.parser.smoke.tests import Smoke
95from diff_tests.parser.smoke.tests_compute_metrics import SmokeComputeMetrics
96from diff_tests.parser.smoke.tests_json import SmokeJson
97from diff_tests.parser.smoke.tests_sched_events import SmokeSchedEvents
98from diff_tests.parser.track_event.tests import TrackEvent
99from diff_tests.parser.translated_args.tests import TranslatedArgs
100from diff_tests.parser.ufs.tests import Ufs
101from diff_tests.parser.zip.tests import Zip
102from diff_tests.stdlib.android.frames_tests import Frames
103from diff_tests.stdlib.android.startups_tests import Startups
104from diff_tests.stdlib.android.tests import AndroidStdlib
105from diff_tests.stdlib.chrome.chrome_stdlib_testsuites import CHROME_STDLIB_TESTSUITES
106from diff_tests.stdlib.common.tests import StdlibCommon
107from diff_tests.stdlib.common.tests import StdlibCommon
108from diff_tests.stdlib.counters.tests import StdlibCounterIntervals
109from diff_tests.stdlib.cpu.tests import Cpu
110from diff_tests.stdlib.dynamic_tables.tests import DynamicTables
111from diff_tests.stdlib.export.tests import ExportTests
112from diff_tests.stdlib.gpu.tests import Gpu
113from diff_tests.stdlib.graphs.dominator_tree_tests import DominatorTree
114from diff_tests.stdlib.graphs.partition_tests import GraphPartitionTests
115from diff_tests.stdlib.graphs.search_tests import GraphSearchTests
116from diff_tests.stdlib.intervals.intersect_tests import IntervalsIntersect
117from diff_tests.stdlib.intervals.tests import StdlibIntervals
118from diff_tests.stdlib.linux.tests import LinuxStdlib
119from diff_tests.stdlib.memory.heap_graph_dominator_tree_tests import HeapGraphDominatorTree
120from diff_tests.stdlib.memory.tests import Memory
121from diff_tests.stdlib.pkvm.tests import Pkvm
122from diff_tests.stdlib.prelude.math_functions_tests import PreludeMathFunctions
123from diff_tests.stdlib.prelude.pprof_functions_tests import PreludePprofFunctions
124from diff_tests.stdlib.prelude.slices_tests import PreludeSlices
125from diff_tests.stdlib.prelude.window_functions_tests import PreludeWindowFunctions
126from diff_tests.stdlib.sched.tests import StdlibSched
127from diff_tests.stdlib.slices.tests import Slices
128from diff_tests.stdlib.span_join.tests_left_join import SpanJoinLeftJoin
129from diff_tests.stdlib.span_join.tests_outer_join import SpanJoinOuterJoin
130from diff_tests.stdlib.span_join.tests_regression import SpanJoinRegression
131from diff_tests.stdlib.span_join.tests_smoke import SpanJoinSmoke
132from diff_tests.stdlib.tests import StdlibSmoke
133from diff_tests.stdlib.timestamps.tests import Timestamps
134from diff_tests.stdlib.wattson.tests import WattsonStdlib
135from diff_tests.syntax.filtering_tests import PerfettoFiltering
136from diff_tests.syntax.function_tests import PerfettoFunction
137from diff_tests.syntax.include_tests import PerfettoInclude
138from diff_tests.syntax.macro_tests import PerfettoMacro
139from diff_tests.syntax.table_function_tests import PerfettoTableFunction
140from diff_tests.syntax.table_tests import PerfettoTable
141from diff_tests.syntax.view_tests import PerfettoView
142from diff_tests.tables.tests import Tables
143from diff_tests.tables.tests_counters import TablesCounters
144from diff_tests.tables.tests_sched import TablesSched
145
146sys.path.pop()
147
148
149def fetch_all_diff_tests(index_path: str) -> List['testing.TestCase']:
150  parser_tests = [
151      *AndroidBugreport(index_path, 'parser/android',
152                        'AndroidBugreport').fetch(),
153      *AndroidFs(index_path, 'parser/android_fs', 'AndroidFs').fetch(),
154      *AndroidGames(index_path, 'parser/android', 'AndroidGames').fetch(),
155      *AndroidParser(index_path, 'parser/android', 'AndroidParser').fetch(),
156      *Atrace(index_path, 'parser/atrace', 'Atrace').fetch(),
157      *AtraceErrorHandling(index_path, 'parser/atrace',
158                           'AtraceErrorHandling').fetch(),
159      *ChromeMemorySnapshots(index_path, 'parser/chrome',
160                             'ChromeMemorySnapshots').fetch(),
161      *ChromeParser(index_path, 'parser/chrome', 'ChromeParser').fetch(),
162      *ChromeV8Parser(index_path, 'parser/chrome', 'ChromeV8Parser').fetch(),
163      *Cros(index_path, 'parser/cros', 'Cros').fetch(),
164      *Fs(index_path, 'parser/fs', 'Fs').fetch(),
165      *Fuchsia(index_path, 'parser/fuchsia', 'Fuchsia').fetch(),
166      *GraphicsDrmRelatedFtraceEvents(index_path, 'parser/graphics',
167                                      'GraphicsDrmRelatedFtraceEvents').fetch(),
168      *GraphicsGpuTrace(index_path, 'parser/graphics',
169                        'GraphicsGpuTrace').fetch(),
170      *GraphicsParser(index_path, 'parser/graphics', 'GraphicsParser').fetch(),
171      *JsonTests(index_path, 'parser/json', 'JsonParser').fetch(),
172      *MemoryParser(index_path, 'parser/memory', 'MemoryParser').fetch(),
173      *NetworkParser(index_path, 'parser/network', 'NetworkParser').fetch(),
174      *PowerEnergyBreakdown(index_path, 'parser/power',
175                            'PowerEnergyBreakdown').fetch(),
176      *PowerPowerRails(index_path, 'parser/power', 'PowerPowerRails').fetch(),
177      *PowerVoltageAndScaling(index_path, 'parser/power',
178                              'PowerVoltageAndScaling').fetch(),
179      *EntityStateResidency(index_path, 'parser/power',
180                            'EntityStateResidency').fetch(),
181      *LinuxSysfsPower(index_path, 'parser/power', 'LinuxSysfsPower').fetch(),
182      *ProcessTracking(index_path, 'parser/process_tracking',
183                       'ProcessTracking').fetch(),
184      *Profiling(index_path, 'parser/profiling', 'Profiling').fetch(),
185      *ProfilingHeapGraph(index_path, 'parser/profiling',
186                          'ProfilingHeapGraph').fetch(),
187      *ProfilingHeapProfiling(index_path, 'parser/profiling',
188                              'ProfilingHeapProfiling').fetch(),
189      *ProfilingLlvmSymbolizer(index_path, 'parser/profiling',
190                               'ProfilingLlvmSymbolizer').fetch(),
191      *SchedParser(index_path, 'parser/sched', 'SchedParser').fetch(),
192      *Simpleperf(index_path, 'parser/simpleperf', 'Simpleperf').fetch(),
193      *StdlibSched(index_path, 'stdlib/sched', 'StdlibSched').fetch(),
194      *Smoke(index_path, 'parser/smoke', 'Smoke').fetch(),
195      *SmokeComputeMetrics(index_path, 'parser/smoke',
196                           'SmokeComputeMetrics').fetch(),
197      *SmokeJson(index_path, 'parser/smoke', 'SmokeJson').fetch(),
198      *SmokeSchedEvents(index_path, 'parser/smoke', 'SmokeSchedEvents').fetch(),
199      *InputMethodClients(index_path, 'parser/android',
200                          'InputMethodClients').fetch(),
201      *InputMethodManagerService(index_path, 'parser/android',
202                                 'InputMethodManagerService').fetch(),
203      *InputMethodService(index_path, 'parser/android',
204                          'InputMethodService').fetch(),
205      *SurfaceFlingerLayers(index_path, 'parser/android',
206                            'SurfaceFlingerLayers').fetch(),
207      *SurfaceFlingerTransactions(index_path, 'parser/android',
208                                  'SurfaceFlingerTransactions').fetch(),
209      *ShellTransitions(index_path, 'parser/android',
210                        'ShellTransitions').fetch(),
211      *ProtoLog(index_path, 'parser/android', 'ProtoLog').fetch(),
212      *ViewCapture(index_path, 'parser/android', 'ViewCapture').fetch(),
213      *TrackEvent(index_path, 'parser/track_event', 'TrackEvent').fetch(),
214      *TranslatedArgs(index_path, 'parser/translated_args',
215                      'TranslatedArgs').fetch(),
216      *Ufs(index_path, 'parser/ufs', 'Ufs').fetch(),
217      # TODO(altimin, lalitm): "parsing" should be split into more specific
218      # directories.
219      *Parsing(index_path, 'parser/parsing', 'Parsing').fetch(),
220      *ParsingDebugAnnotation(index_path, 'parser/parsing',
221                              'ParsingDebugAnnotation').fetch(),
222      *ParsingRssStats(index_path, 'parser/parsing', 'ParsingRssStats').fetch(),
223      *ParsingMemoryCounters(index_path, 'parser/parsing',
224                             'ParsingMemoryCounters').fetch(),
225      *FtraceCrop(index_path, 'parser/ftrace', 'FtraceCrop').fetch(),
226      *ParsingTracedStats(index_path, 'parser/parsing',
227                          'ParsingTracedStats').fetch(),
228      *Zip(index_path, 'parser/zip', 'Zip').fetch(),
229      *AndroidInputEvent(index_path, 'parser/android', 'AndroidInputEvent').fetch(),
230  ]
231
232  metrics_tests = [
233      *AndroidMetrics(index_path, 'metrics/android', 'AndroidMetrics').fetch(),
234      *Camera(index_path, 'metrics/camera', 'Camera').fetch(),
235      *ChromeArgs(index_path, 'metrics/chrome', 'ChromeArgs').fetch(),
236      *ChromeMetrics(index_path, 'metrics/chrome', 'ChromeMetrics').fetch(),
237      *ChromeProcesses(index_path, 'metrics/chrome', 'ChromeProcesses').fetch(),
238      *ChromeRailModes(index_path, 'metrics/chrome', 'ChromeRailModes').fetch(),
239      *ChromeScrollJankMetrics(index_path, 'metrics/chrome',
240                               'ChromeScrollJankMetrics').fetch(),
241      *ChromeTouchGesture(index_path, 'metrics/chrome',
242                          'ChromeTouchGesture').fetch(),
243      *Codecs(index_path, 'metrics/codecs', 'Codecs').fetch(),
244      *FrameTimeline(index_path, 'metrics/frame_timeline',
245                     'FrameTimeline').fetch(),
246      *GraphicsMetrics(index_path, 'metrics/graphics',
247                       'GraphicsMetrics').fetch(),
248      *IRQ(index_path, 'metrics/irq', 'IRQ').fetch(),
249      *MemoryMetrics(index_path, 'metrics/memory', 'MemoryMetrics').fetch(),
250      *NetworkMetrics(index_path, 'metrics/network', 'orkMetrics').fetch(),
251      *Power(index_path, 'metrics/power', 'Power').fetch(),
252      *ProfilingMetrics(index_path, 'metrics/profiling',
253                        'ProfilingMetrics').fetch(),
254      *Startup(index_path, 'metrics/startup', 'Startup').fetch(),
255      *StartupBroadcasts(index_path, 'metrics/startup',
256                         'StartupBroadcasts').fetch(),
257      *StartupLockContention(index_path, 'metrics/startup',
258                             'StartupLockContention').fetch(),
259      *StartupMetrics(index_path, 'metrics/startup', 'StartupMetrics').fetch(),
260      *WebView(index_path, 'metrics/webview', 'WebView').fetch(),
261  ]
262
263  chrome_test_dir = os.path.abspath(
264      os.path.join(__file__, '../../../data/chrome'))
265  chrome_stdlib_tests = []
266  for test_suite_cls in CHROME_STDLIB_TESTSUITES:
267    test_suite = test_suite_cls(index_path, 'stdlib/chrome',
268                                test_suite_cls.__name__, chrome_test_dir)
269    chrome_stdlib_tests += test_suite.fetch()
270
271  stdlib_tests = [
272      *AndroidStdlib(index_path, 'stdlib/android', 'AndroidStdlib').fetch(),
273      *Cpu(index_path, 'stdlib/cpu', 'Cpu').fetch(),
274      *DominatorTree(index_path, 'stdlib/graphs', 'DominatorTree').fetch(),
275      *ExportTests(index_path, 'stdlib/export', 'ExportTests').fetch(),
276      *Frames(index_path, 'stdlib/android', 'Frames').fetch(),
277      *Gpu(index_path, 'stdlib/gpu', 'Gpu').fetch(),
278      *GraphSearchTests(index_path, 'stdlib/graphs',
279                        'GraphSearchTests').fetch(),
280      *GraphPartitionTests(index_path, 'stdlib/graphs',
281                           'GraphPartitionTests').fetch(),
282      *StdlibCounterIntervals(index_path, 'stdlib/counters',
283                              'StdlibCounterIntervals').fetch(),
284      *DynamicTables(index_path, 'stdlib/dynamic_tables',
285                     'DynamicTables').fetch(),
286      *LinuxStdlib(index_path, 'stdlib/linux', 'LinuxStdlib').fetch(),
287      *Memory(index_path, 'stdlib/memory', 'Memory').fetch(),
288      *PreludeMathFunctions(index_path, 'stdlib/prelude',
289                            'PreludeMathFunctions').fetch(),
290      *HeapGraphDominatorTree(index_path, 'stdlib/memory',
291                              'HeapGraphDominatorTree').fetch(),
292      *PreludePprofFunctions(index_path, 'stdlib/prelude',
293                             'PreludePprofFunctions').fetch(),
294      *PreludeWindowFunctions(index_path, 'stdlib/prelude',
295                              'PreludeWindowFunctions').fetch(),
296      *Pkvm(index_path, 'stdlib/pkvm', 'Pkvm').fetch(),
297      *PreludeSlices(index_path, 'stdlib/prelude', 'PreludeSlices').fetch(),
298      *StdlibSmoke(index_path, 'stdlib', 'StdlibSmoke').fetch(),
299      *StdlibCommon(index_path, 'stdlib/common', 'StdlibCommon').fetch(),
300      *Slices(index_path, 'stdlib/slices', 'Slices').fetch(),
301      *SpanJoinLeftJoin(index_path, 'stdlib/span_join',
302                        'SpanJoinLeftJoin').fetch(),
303      *SpanJoinOuterJoin(index_path, 'stdlib/span_join',
304                         'SpanJoinOuterJoin').fetch(),
305      *SpanJoinRegression(index_path, 'stdlib/span_join',
306                          'SpanJoinRegression').fetch(),
307      *SpanJoinSmoke(index_path, 'stdlib/span_join', 'SpanJoinSmoke').fetch(),
308      *StdlibCommon(index_path, 'stdlib/common', 'StdlibCommon').fetch(),
309      *StdlibIntervals(index_path, 'stdlib/intervals',
310                       'StdlibIntervals').fetch(),
311      *IntervalsIntersect(index_path, 'stdlib/intervals',
312                          'StdlibIntervalsIntersect').fetch(),
313      *Startups(index_path, 'stdlib/android', 'Startups').fetch(),
314      *Timestamps(index_path, 'stdlib/timestamps', 'Timestamps').fetch(),
315      *WattsonStdlib(index_path, 'stdlib/wattson', 'WattsonStdlib').fetch(),
316  ] + chrome_stdlib_tests
317
318  syntax_tests = [
319      *PerfettoFiltering(index_path, 'syntax', 'PerfettoFiltering').fetch(),
320      *PerfettoFunction(index_path, 'syntax', 'PerfettoFunction').fetch(),
321      *PerfettoInclude(index_path, 'syntax', 'PerfettoInclude').fetch(),
322      *PerfettoMacro(index_path, 'syntax', 'PerfettoMacro').fetch(),
323      *PerfettoTable(index_path, 'syntax', 'PerfettoTable').fetch(),
324      *PerfettoTableFunction(index_path, 'syntax',
325                             'PerfettoTableFunction').fetch(),
326      *PerfettoView(index_path, 'syntax', 'PerfettoView').fetch(),
327  ]
328
329  return parser_tests + metrics_tests + stdlib_tests + syntax_tests + [
330      *Tables(index_path, 'tables', 'Tables').fetch(),
331      *TablesCounters(index_path, 'tables', 'TablesCounters').fetch(),
332      *TablesSched(index_path, 'tables', 'TablesSched').fetch(),
333  ]
334