• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python3
2# Copyright (C) 2024 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.
15
16from python.generators.diff_tests.testing import Path, DataPath
17from python.generators.diff_tests.testing import Csv, TextProto
18from python.generators.diff_tests.testing import DiffTestBlueprint
19from python.generators.diff_tests.testing import TestSuite
20
21
22class Startups(TestSuite):
23
24  def test_hot_startups(self):
25    return DiffTestBlueprint(
26        trace=DataPath('api31_startup_hot.perfetto-trace'),
27        query="""
28        INCLUDE PERFETTO MODULE android.startup.startups;
29        SELECT * FROM android_startups;
30        """,
31        out=Csv("""
32        "startup_id","ts","ts_end","dur","package","startup_type"
33        0,186969441973689,186969489302704,47329015,"androidx.benchmark.integration.macrobenchmark.target","hot"
34        """))
35
36  def test_warm_startups(self):
37    return DiffTestBlueprint(
38        trace=DataPath('api31_startup_warm.perfetto-trace'),
39        query="""
40        INCLUDE PERFETTO MODULE android.startup.startups;
41        SELECT * FROM android_startups;
42        """,
43        out=Csv("""
44        "startup_id","ts","ts_end","dur","package","startup_type"
45        0,186982050780778,186982115528805,64748027,"androidx.benchmark.integration.macrobenchmark.target","warm"
46        """))
47
48  def test_cold_startups(self):
49    return DiffTestBlueprint(
50        trace=DataPath('api31_startup_cold.perfetto-trace'),
51        query="""
52        INCLUDE PERFETTO MODULE android.startup.startups;
53        SELECT * FROM android_startups;
54        """,
55        out=Csv("""
56        "startup_id","ts","ts_end","dur","package","startup_type"
57        0,186974938196632,186975083989042,145792410,"androidx.benchmark.integration.macrobenchmark.target","cold"
58        """))
59
60  def test_hot_startups_maxsdk28(self):
61    return DiffTestBlueprint(
62        trace=DataPath('api24_startup_hot.perfetto-trace'),
63        query="""
64        INCLUDE PERFETTO MODULE android.startup.startups;
65        SELECT * FROM android_startups;
66        """,
67        out=Csv("""
68        "startup_id","ts","ts_end","dur","package","startup_type"
69        0,779860286416,779893485322,33198906,"com.google.android.googlequicksearchbox","hot"
70        1,780778904571,780813944498,35039927,"androidx.benchmark.integration.macrobenchmark.target","hot"
71        """))
72
73  def test_warm_startups_maxsdk28(self):
74    return DiffTestBlueprint(
75        trace=DataPath('api24_startup_warm.perfetto-trace'),
76        query="""
77        INCLUDE PERFETTO MODULE android.startup.startups;
78        SELECT * FROM android_startups;
79        """,
80        out=Csv("""
81        "startup_id","ts","ts_end","dur","package","startup_type"
82        0,799979565075,800014194731,34629656,"com.google.android.googlequicksearchbox","hot"
83        1,800868511677,800981929562,113417885,"androidx.benchmark.integration.macrobenchmark.target","[NULL]"
84        """))
85
86  def test_cold_startups_maxsdk28(self):
87    return DiffTestBlueprint(
88        trace=DataPath('api24_startup_cold.perfetto-trace'),
89        query="""
90        INCLUDE PERFETTO MODULE android.startup.startups;
91        SELECT * FROM android_startups;
92        """,
93        out=Csv("""
94        "startup_id","ts","ts_end","dur","package","startup_type"
95        0,791231114368,791501060868,269946500,"androidx.benchmark.integration.macrobenchmark.target","[NULL]"
96        """))
97
98  def test_android_startup_time_to_display_hot_maxsdk28(self):
99    return DiffTestBlueprint(
100        trace=DataPath('api24_startup_hot.perfetto-trace'),
101        query="""
102        INCLUDE PERFETTO MODULE android.startup.time_to_display;
103        SELECT * FROM android_startup_time_to_display;
104        """,
105        out=Csv("""
106        "startup_id","time_to_initial_display","time_to_full_display","ttid_frame_id","ttfd_frame_id","upid"
107        0,33198906,"[NULL]",1,"[NULL]",355
108        1,35039927,537343160,4,5,383
109        """))
110
111  def test_android_startup_time_to_display_warm_maxsdk28(self):
112    return DiffTestBlueprint(
113        trace=DataPath('api24_startup_warm.perfetto-trace'),
114        query="""
115        INCLUDE PERFETTO MODULE android.startup.time_to_display;
116        SELECT * FROM android_startup_time_to_display;
117        """,
118        out=Csv("""
119        "startup_id","time_to_initial_display","time_to_full_display","ttid_frame_id","ttfd_frame_id","upid"
120        0,34629656,"[NULL]",1,"[NULL]",355
121        1,108563770,581026583,4,5,388
122        """))
123
124  def test_android_startup_time_to_display_cold_maxsdk28(self):
125    return DiffTestBlueprint(
126        trace=DataPath('api24_startup_cold.perfetto-trace'),
127        query="""
128        INCLUDE PERFETTO MODULE android.startup.time_to_display;
129        SELECT * FROM android_startup_time_to_display;
130        """,
131        out=Csv("""
132        "startup_id","time_to_initial_display","time_to_full_display","ttid_frame_id","ttfd_frame_id","upid"
133        0,264869885,715406822,65,66,396
134        """))
135
136  def test_android_startup_time_to_display_hot(self):
137    return DiffTestBlueprint(
138        trace=DataPath('api31_startup_hot.perfetto-trace'),
139        query="""
140        INCLUDE PERFETTO MODULE android.startup.time_to_display;
141        SELECT * FROM android_startup_time_to_display;
142        """,
143        out=Csv("""
144        "startup_id","time_to_initial_display","time_to_full_display","ttid_frame_id","ttfd_frame_id","upid"
145        0,40534066,542222554,5872867,5872953,184
146        """))
147
148  def test_android_startup_time_to_display_warm(self):
149    return DiffTestBlueprint(
150        trace=DataPath('api31_startup_warm.perfetto-trace'),
151        query="""
152        INCLUDE PERFETTO MODULE android.startup.time_to_display;
153        SELECT * FROM android_startup_time_to_display;
154        """,
155        out=Csv("""
156        "startup_id","time_to_initial_display","time_to_full_display","ttid_frame_id","ttfd_frame_id","upid"
157        0,62373965,555968701,5873800,5873889,185
158        """))
159
160  def test_android_startup_time_to_display_cold(self):
161    return DiffTestBlueprint(
162        trace=DataPath('api31_startup_cold.perfetto-trace'),
163        query="""
164        INCLUDE PERFETTO MODULE android.startup.time_to_display;
165        SELECT * FROM android_startup_time_to_display;
166        """,
167        out=Csv("""
168        "startup_id","time_to_initial_display","time_to_full_display","ttid_frame_id","ttfd_frame_id","upid"
169        0,143980066,620815843,5873276,5873353,229
170        """))
171
172  def test_android_startup_breakdown(self):
173    return DiffTestBlueprint(
174        trace=DataPath('api31_startup_cold.perfetto-trace'),
175        query="""
176        INCLUDE PERFETTO MODULE android.startup.startup_breakdowns;
177        SELECT
178          SUM(dur) AS dur,
179          reason
180          FROM android_startup_opinionated_breakdown
181          GROUP BY reason ORDER BY dur DESC;
182        """,
183        out=Csv("""
184        "dur","reason"
185        28663023,"choreographer_do_frame"
186        22564487,"binder"
187        22011252,"launch_delay"
188        16351925,"Running"
189        13212137,"activity_start"
190        10264635,"io"
191        6779947,"inflate"
192        6240207,"bind_application"
193        5214375,"R+"
194        3072397,"resources_manager_get_resources"
195        2722869,"D"
196        2574273,"open_dex_files_from_oat"
197        2392761,"S"
198        2353124,"activity_resume"
199        1325727,"R"
200        43698,"art_lock_contention"
201        5573,"verify_class"
202        """))
203