• 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.codecs.tests import Codecs
34from diff_tests.metrics.common.tests import CloneDurationMetrics
35from diff_tests.metrics.frame_timeline.tests import FrameTimeline
36from diff_tests.metrics.graphics.tests import GraphicsMetrics
37from diff_tests.metrics.irq.tests import IRQ
38from diff_tests.metrics.memory.tests import MemoryMetrics
39from diff_tests.metrics.network.tests import NetworkMetrics
40from diff_tests.metrics.power.tests import Power
41from diff_tests.metrics.profiling.tests import ProfilingMetrics
42from diff_tests.metrics.startup.tests import Startup
43from diff_tests.metrics.startup.tests_broadcasts import StartupBroadcasts
44from diff_tests.metrics.startup.tests_lock_contention import StartupLockContention
45from diff_tests.metrics.startup.tests_metrics import StartupMetrics
46from diff_tests.metrics.webview.tests import WebView
47from diff_tests.parser.android_fs.tests import AndroidFs
48from diff_tests.parser.android.tests import AndroidParser
49from diff_tests.parser.android.tests_android_input_event import AndroidInputEvent
50from diff_tests.parser.android.tests_bugreport import AndroidBugreport
51from diff_tests.parser.android.tests_dumpstate import AndroidDumpstate
52from diff_tests.parser.android.tests_games import AndroidGames
53from diff_tests.parser.android.tests_inputmethod_clients import InputMethodClients
54from diff_tests.parser.android.tests_inputmethod_manager_service import InputMethodManagerService
55from diff_tests.parser.android.tests_inputmethod_service import InputMethodService
56from diff_tests.parser.android.tests_protolog import ProtoLog
57from diff_tests.parser.android.tests_shell_transitions import ShellTransitions
58from diff_tests.parser.android.tests_surfaceflinger_layers import SurfaceFlingerLayers
59from diff_tests.parser.android.tests_surfaceflinger_transactions import SurfaceFlingerTransactions
60from diff_tests.parser.android.tests_viewcapture import ViewCapture
61from diff_tests.parser.android.tests_windowmanager import WindowManager
62from diff_tests.parser.art_method.tests import ArtMethodParser
63from diff_tests.parser.atrace.tests import Atrace
64from diff_tests.parser.atrace.tests_error_handling import AtraceErrorHandling
65from diff_tests.parser.chrome.tests import ChromeParser
66from diff_tests.parser.chrome.tests_memory_snapshots import ChromeMemorySnapshots
67from diff_tests.parser.chrome.tests_v8 import ChromeV8Parser
68from diff_tests.parser.cros.tests import Cros
69from diff_tests.parser.etm.tests import Etm
70from diff_tests.parser.fs.tests import Fs
71from diff_tests.parser.ftrace.block_io_tests import BlockIo
72from diff_tests.parser.ftrace.ftrace_crop_tests import FtraceCrop
73from diff_tests.parser.ftrace.kprobes_tests import Kprobes
74from diff_tests.parser.fuchsia.tests import Fuchsia
75from diff_tests.parser.gecko.tests import GeckoParser
76from diff_tests.parser.graphics.tests import GraphicsParser
77from diff_tests.parser.graphics.tests_drm_related_ftrace_events import GraphicsDrmRelatedFtraceEvents
78from diff_tests.parser.graphics.tests_gpu_trace import GraphicsGpuTrace
79from diff_tests.parser.gzip.tests import Gzip
80from diff_tests.parser.instruments.tests import Instruments
81from diff_tests.parser.json.tests import JsonParser
82from diff_tests.parser.memory.tests import MemoryParser
83from diff_tests.parser.network.tests import NetworkParser
84from diff_tests.parser.parsing.tests import Parsing
85from diff_tests.parser.parsing.tests_debug_annotation import ParsingDebugAnnotation
86from diff_tests.parser.parsing.tests_memory_counters import ParsingMemoryCounters
87from diff_tests.parser.parsing.tests_rss_stats import ParsingRssStats
88from diff_tests.parser.parsing.tests_sys_stats import ParsingSysStats
89from diff_tests.parser.parsing.tests_traced_stats import ParsingTracedStats
90from diff_tests.parser.perf_text.tests import PerfTextParser
91from diff_tests.parser.power.tests_energy_breakdown import PowerEnergyBreakdown
92from diff_tests.parser.power.tests_entity_state_residency import EntityStateResidency
93from diff_tests.parser.power.tests_linux_sysfs_power import LinuxSysfsPower
94from diff_tests.parser.power.tests_power_rails import PowerPowerRails
95from diff_tests.parser.power.tests_voltage_and_scaling import PowerVoltageAndScaling
96from diff_tests.parser.process_tracking.tests import ProcessTracking
97from diff_tests.parser.profiling.tests import Profiling
98from diff_tests.parser.profiling.tests_heap_graph import ProfilingHeapGraph
99from diff_tests.parser.profiling.tests_heap_profiling import ProfilingHeapProfiling
100from diff_tests.parser.profiling.tests_llvm_symbolizer import ProfilingLlvmSymbolizer
101from diff_tests.parser.sched.tests import SchedParser
102from diff_tests.parser.simpleperf.tests import Simpleperf
103from diff_tests.parser.smoke.tests import Smoke
104from diff_tests.parser.smoke.tests_compute_metrics import SmokeComputeMetrics
105from diff_tests.parser.smoke.tests_json import SmokeJson
106from diff_tests.parser.smoke.tests_sched_events import SmokeSchedEvents
107from diff_tests.parser.track_event.tests import TrackEvent
108from diff_tests.parser.translated_args.tests import TranslatedArgs
109from diff_tests.parser.ufs.tests import Ufs
110from diff_tests.parser.zip.tests import Zip
111from diff_tests.stdlib.android.cpu_cluster_tests import CpuClusters
112from diff_tests.stdlib.android.desktop_mode_tests import DesktopMode
113from diff_tests.stdlib.android.frames_tests import Frames
114from diff_tests.stdlib.android.gpu import AndroidGpu
115from diff_tests.stdlib.android.heap_graph_tests import HeapGraph
116from diff_tests.stdlib.android.heap_profile_tests import HeapProfile
117from diff_tests.stdlib.android.memory import AndroidMemory
118from diff_tests.stdlib.android.startups_tests import Startups
119from diff_tests.stdlib.android.tests import AndroidStdlib
120from diff_tests.stdlib.chrome.chrome_stdlib_testsuites import CHROME_STDLIB_TESTSUITES
121from diff_tests.stdlib.counters.tests import StdlibCounterIntervals
122from diff_tests.stdlib.dynamic_tables.tests import DynamicTables
123from diff_tests.stdlib.export.tests import ExportTests
124from diff_tests.stdlib.graphs.critical_path_tests import CriticalPathTests
125from diff_tests.stdlib.graphs.dominator_tree_tests import DominatorTree
126from diff_tests.stdlib.graphs.partition_tests import GraphPartitionTests
127from diff_tests.stdlib.graphs.scan_tests import GraphScanTests
128from diff_tests.stdlib.graphs.search_tests import GraphSearchTests
129from diff_tests.stdlib.intervals.intersect_tests import IntervalsIntersect
130from diff_tests.stdlib.intervals.tests import StdlibIntervals
131from diff_tests.stdlib.linux.cpu import LinuxCpu
132from diff_tests.stdlib.linux.memory import Memory
133from diff_tests.stdlib.linux.tests import LinuxTests
134from diff_tests.stdlib.pixel.tests import PixelStdlib
135from diff_tests.stdlib.pkvm.tests import Pkvm
136from diff_tests.stdlib.prelude.math_functions_tests import PreludeMathFunctions
137from diff_tests.stdlib.prelude.pprof_functions_tests import PreludePprofFunctions
138from diff_tests.stdlib.prelude.slices_tests import PreludeSlices
139from diff_tests.stdlib.prelude.window_functions_tests import PreludeWindowFunctions
140from diff_tests.stdlib.sched.tests import StdlibSched
141from diff_tests.stdlib.slices.tests import Slices
142from diff_tests.stdlib.span_join.tests_left_join import SpanJoinLeftJoin
143from diff_tests.stdlib.span_join.tests_outer_join import SpanJoinOuterJoin
144from diff_tests.stdlib.span_join.tests_regression import SpanJoinRegression
145from diff_tests.stdlib.span_join.tests_smoke import SpanJoinSmoke
146from diff_tests.stdlib.tests import StdlibSmoke
147from diff_tests.stdlib.timestamps.tests import Timestamps
148from diff_tests.stdlib.viz.tests import Viz
149from diff_tests.stdlib.wattson.tests import WattsonStdlib
150from diff_tests.syntax.filtering_tests import PerfettoFiltering
151from diff_tests.syntax.function_tests import PerfettoFunction
152from diff_tests.syntax.include_tests import PerfettoInclude
153from diff_tests.syntax.macro_tests import PerfettoMacro
154from diff_tests.syntax.table_function_tests import PerfettoTableFunction
155from diff_tests.syntax.table_tests import PerfettoTable
156from diff_tests.syntax.view_tests import PerfettoView
157from diff_tests.tables.tests import Tables
158from diff_tests.tables.tests_counters import TablesCounters
159from diff_tests.tables.tests_sched import TablesSched
160from diff_tests.summary.metrics_v2_tests import SummaryMetricsV2
161
162sys.path.pop()
163
164
165def fetch_all_diff_tests(index_path: str) -> List['testing.TestCase']:
166  parser_tests = [
167      AndroidBugreport,
168      AndroidDumpstate,
169      AndroidFs,
170      AndroidGames,
171      AndroidParser,
172      Atrace,
173      AtraceErrorHandling,
174      ChromeMemorySnapshots,
175      ChromeParser,
176      ChromeV8Parser,
177      Cros,
178      Etm,
179      Fs,
180      Fuchsia,
181      GraphicsDrmRelatedFtraceEvents,
182      GraphicsGpuTrace,
183      GraphicsParser,
184      JsonParser,
185      MemoryParser,
186      NetworkParser,
187      PowerEnergyBreakdown,
188      PowerPowerRails,
189      PowerVoltageAndScaling,
190      EntityStateResidency,
191      LinuxSysfsPower,
192      ProcessTracking,
193      Profiling,
194      ProfilingHeapGraph,
195      ProfilingHeapProfiling,
196      ProfilingLlvmSymbolizer,
197      SchedParser,
198      Simpleperf,
199      StdlibSched,
200      Smoke,
201      SmokeComputeMetrics,
202      SmokeJson,
203      SmokeSchedEvents,
204      InputMethodClients,
205      InputMethodManagerService,
206      InputMethodService,
207      SurfaceFlingerLayers,
208      SurfaceFlingerTransactions,
209      ShellTransitions,
210      ProtoLog,
211      ViewCapture,
212      WindowManager,
213      TrackEvent,
214      TranslatedArgs,
215      Ufs,
216      Parsing,
217      ParsingDebugAnnotation,
218      ParsingRssStats,
219      ParsingSysStats,
220      ParsingMemoryCounters,
221      BlockIo,
222      FtraceCrop,
223      Kprobes,
224      ParsingTracedStats,
225      Zip,
226      AndroidInputEvent,
227      Instruments,
228      Gzip,
229      GeckoParser,
230      ArtMethodParser,
231      PerfTextParser,
232  ]
233
234  metrics_tests = [
235      AndroidMetrics,
236      Camera,
237      ChromeArgs,
238      ChromeMetrics,
239      ChromeProcesses,
240      Codecs,
241      FrameTimeline,
242      GraphicsMetrics,
243      IRQ,
244      CloneDurationMetrics,
245      MemoryMetrics,
246      NetworkMetrics,
247      Power,
248      ProfilingMetrics,
249      Startup,
250      StartupBroadcasts,
251      StartupLockContention,
252      StartupMetrics,
253      WebView,
254  ]
255
256  stdlib_tests = [
257      AndroidMemory,
258      AndroidGpu,
259      AndroidStdlib,
260      CpuClusters,
261      DesktopMode,
262      LinuxCpu,
263      LinuxTests,
264      DominatorTree,
265      CriticalPathTests,
266      GraphScanTests,
267      ExportTests,
268      Frames,
269      GraphSearchTests,
270      GraphPartitionTests,
271      StdlibCounterIntervals,
272      DynamicTables,
273      Memory,
274      PreludeMathFunctions,
275      HeapGraph,
276      PreludePprofFunctions,
277      PreludeWindowFunctions,
278      Pkvm,
279      PreludeSlices,
280      StdlibSmoke,
281      Slices,
282      SpanJoinLeftJoin,
283      SpanJoinOuterJoin,
284      SpanJoinRegression,
285      SpanJoinSmoke,
286      StdlibIntervals,
287      IntervalsIntersect,
288      Startups,
289      Timestamps,
290      Viz,
291      WattsonStdlib,
292      HeapProfile,
293      PixelStdlib,
294  ]
295
296  syntax_tests = [
297      PerfettoFiltering,
298      PerfettoFunction,
299      PerfettoInclude,
300      PerfettoMacro,
301      PerfettoTable,
302      PerfettoTableFunction,
303      PerfettoView,
304  ]
305
306  tables_tests = [
307      Tables,
308      TablesCounters,
309      TablesSched,
310  ]
311
312  summary_tests = [SummaryMetricsV2]
313
314  all_tests = []
315  all_tests += parser_tests
316  all_tests += metrics_tests
317  all_tests += stdlib_tests
318  all_tests += syntax_tests
319  all_tests += tables_tests
320  all_tests += summary_tests
321  all_test_instances = [x for t in all_tests for x in t(index_path).fetch()]
322
323  # Chrome is special because it is rolled in from externally. So it has its
324  # own segregated copy of everything.
325  chrome_test_dir = os.path.abspath(
326      os.path.join(__file__, '../../../data/chrome'))
327  chrome_stdlib_tests_instances = []
328  for test_suite_cls in CHROME_STDLIB_TESTSUITES:
329    test_suite = test_suite_cls(index_path, chrome_test_dir)
330    chrome_stdlib_tests_instances += test_suite.fetch()
331
332  return all_test_instances + chrome_stdlib_tests_instances
333