diff options
author | 2025-01-30 16:19:11 +0100 | |
---|---|---|
committer | 2025-01-30 16:19:11 +0100 | |
commit | bab932f258ebbb0fd41960603e79cab4e8bed8d6 (patch) | |
tree | 5b6e6ad4538e02ae1e551378c756fd806ff4b7cb /packages/SettingsLib/src | |
parent | 7e6a7855470e5aa7621780959e95bc66b4dc025f (diff) |
Generate sequential instead of random rule ids in TestModeBuilder
Because we were only generating numbers between 0 and 1000 for whatever reason, there was a relatively high chance that two Modes could end up with the same id. This is generally not a problem because ZenMode has a well-defined equals method and we rarely use the ids except for API calls (which unit tests don't exercise). However some parts of the code (notably ModesDialogViewModel) do match modes by id (for visual stability), so collisions would lead to wrong results and test flakiness.
With this change we will only get collisions if a test uses a list containing 4294967296 modes. Good luck with that!
Fixes: 391727306
Test: atest ModesDialogViewModelTest
Flag: TEST_ONLY
Change-Id: I1b7dfdd18f41ffe04bba7b2d6a54f53f259a0a05
Diffstat (limited to 'packages/SettingsLib/src')
-rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java b/packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java index 64a2de5025de..ecea5fd35150 100644 --- a/packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java +++ b/packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java @@ -33,10 +33,12 @@ import android.service.notification.ZenPolicy; import androidx.annotation.DrawableRes; import androidx.annotation.Nullable; -import java.util.Random; +import java.util.concurrent.atomic.AtomicInteger; public class TestModeBuilder { + private static final AtomicInteger sNextId = new AtomicInteger(0); + private String mId; private AutomaticZenRule mRule; private ZenModeConfig.ZenRule mConfigZenRule; @@ -47,7 +49,7 @@ public class TestModeBuilder { public TestModeBuilder() { // Reasonable defaults - int id = new Random().nextInt(1000); + int id = sNextId.incrementAndGet(); mId = "rule_" + id; mRule = new AutomaticZenRule.Builder("Test Rule #" + id, Uri.parse("rule://" + id)) .setPackage("some_package") |