-
Notifications
You must be signed in to change notification settings - Fork 3.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add automated baseline profile generation (#880)
Baseline profile generation is disabled for the PR level Build task. Release tasks require a fresh baseline profile. A new profile is generated using the baseline profile Gradle plugin. * Prepare for usage of dex layout optimizations which can be actively used once NiA switches to AGP 8.2+. * Add GMD config to release build * Switch to macos-latest * Update names for StartupBenchmark tests to better reflect states * Stable release and recent GMD device * Reduce flakiness by adding wait to benchmark * More convenient waiting for objects * Rename junit dependency to androidx-junit * Only run baseline profile benchmarks during GH workflow * Enable automatic BP generation for only release builds * Disable BP generation from Build workflow * Specify modules and skip benchmarking Build workflow Bug: b/299334172
- Loading branch information
1 parent
d4ef172
commit aa8ce0e
Showing
18 changed files
with
244 additions
and
62 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
40 changes: 40 additions & 0 deletions
40
...n/kotlin/com/google/samples/apps/nowinandroid/baselineprofile/BookmarksBaselineProfile.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
/* | ||
* Copyright 2022 The Android Open Source Project | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* https://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package com.google.samples.apps.nowinandroid.baselineprofile | ||
|
||
import androidx.benchmark.macro.junit4.BaselineProfileRule | ||
import com.google.samples.apps.nowinandroid.PACKAGE_NAME | ||
import com.google.samples.apps.nowinandroid.bookmarks.goToBookmarksScreen | ||
import com.google.samples.apps.nowinandroid.startActivityAndAllowNotifications | ||
import org.junit.Rule | ||
import org.junit.Test | ||
|
||
/** | ||
* Baseline Profile of the "Bookmarks" screen | ||
*/ | ||
class BookmarksBaselineProfile { | ||
@get:Rule val baselineProfileRule = BaselineProfileRule() | ||
|
||
@Test | ||
fun generate() = | ||
baselineProfileRule.collect(PACKAGE_NAME) { | ||
startActivityAndAllowNotifications() | ||
|
||
// Navigate to saved screen | ||
goToBookmarksScreen() | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
42 changes: 42 additions & 0 deletions
42
...n/kotlin/com/google/samples/apps/nowinandroid/baselineprofile/InterestsBaselineProfile.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
/* | ||
* Copyright 2022 The Android Open Source Project | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* https://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package com.google.samples.apps.nowinandroid.baselineprofile | ||
|
||
import androidx.benchmark.macro.junit4.BaselineProfileRule | ||
import com.google.samples.apps.nowinandroid.PACKAGE_NAME | ||
import com.google.samples.apps.nowinandroid.interests.goToInterestsScreen | ||
import com.google.samples.apps.nowinandroid.interests.interestsScrollTopicsDownUp | ||
import com.google.samples.apps.nowinandroid.startActivityAndAllowNotifications | ||
import org.junit.Rule | ||
import org.junit.Test | ||
|
||
/** | ||
* Baseline Profile of the "Interests" screen | ||
*/ | ||
class InterestsBaselineProfile { | ||
@get:Rule val baselineProfileRule = BaselineProfileRule() | ||
|
||
@Test | ||
fun generate() = | ||
baselineProfileRule.collect(PACKAGE_NAME) { | ||
startActivityAndAllowNotifications() | ||
|
||
// Navigate to interests screen | ||
goToInterestsScreen() | ||
interestsScrollTopicsDownUp() | ||
} | ||
} |
40 changes: 40 additions & 0 deletions
40
...ain/kotlin/com/google/samples/apps/nowinandroid/baselineprofile/StartupBaselineProfile.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
/* | ||
* Copyright 2022 The Android Open Source Project | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* https://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package com.google.samples.apps.nowinandroid.baselineprofile | ||
|
||
import androidx.benchmark.macro.junit4.BaselineProfileRule | ||
import com.google.samples.apps.nowinandroid.PACKAGE_NAME | ||
import com.google.samples.apps.nowinandroid.startActivityAndAllowNotifications | ||
import org.junit.Rule | ||
import org.junit.Test | ||
|
||
/** | ||
* Baseline Profile for app startup. This profile also enables using [Dex Layout Optimizations](https://developer.android.com/topic/performance/baselineprofiles/dex-layout-optimizations) | ||
* via the `includeInStartupProfile` parameter. | ||
*/ | ||
class StartupBaselineProfile { | ||
@get:Rule val baselineProfileRule = BaselineProfileRule() | ||
|
||
@Test | ||
fun generate() = | ||
baselineProfileRule.collect( | ||
PACKAGE_NAME, | ||
includeInStartupProfile = true, | ||
) { | ||
startActivityAndAllowNotifications() | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.