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