diff options
author | Chang Li <licha@google.com> | 2021-06-24 21:38:38 +0000 |
---|---|---|
committer | Chang Li <licha@google.com> | 2021-11-05 09:55:40 +0000 |
commit | 49410e98e35ebcdd89c4718ed12f868efefe0d4a (patch) | |
tree | 10cb2a2397a6d0af98a52c799054e9ab06f1b044 | |
parent | f030ee8811e04d9bbe7d307f44202ef9b8932113 (diff) | |
download | libtextclassifier-android12-qpr3-release.tar.gz |
Fix flaky TextClassifierSettingsTest.android-12.1.0_r9android-12.1.0_r8android-12.1.0_r7android-12.1.0_r22android-12.1.0_r21android-12.1.0_r20android-12.1.0_r19android-12.1.0_r11android-12.1.0_r10android12L-devandroid12-qpr3-s7-releaseandroid12-qpr3-s6-releaseandroid12-qpr3-s5-releaseandroid12-qpr3-s4-releaseandroid12-qpr3-s3-releaseandroid12-qpr3-s2-releaseandroid12-qpr3-s1-releaseandroid12-qpr3-release
We used to override and read DeviceConfig directly, but it is temporary and will be override after the testing emulator syncs. With this change, we always override/read a fake DeviceConfig.
Bug: 191844721
Bug: 204903521
Change-Id: I06021adc2e075c1745e1027fda85235d61957702
(cherry picked from commit 5c9980a957e85c74e6577f5ebe300a4a5039b742)
2 files changed, 40 insertions, 34 deletions
diff --git a/java/tests/instrumentation/src/com/android/textclassifier/common/TextClassifierSettingsTest.java b/java/tests/instrumentation/src/com/android/textclassifier/common/TextClassifierSettingsTest.java index 21d6943..8072d72 100644 --- a/java/tests/instrumentation/src/com/android/textclassifier/common/TextClassifierSettingsTest.java +++ b/java/tests/instrumentation/src/com/android/textclassifier/common/TextClassifierSettingsTest.java @@ -18,12 +18,11 @@ package com.android.textclassifier.common; import static com.google.common.truth.Truth.assertThat; -import android.provider.DeviceConfig; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; import androidx.test.platform.app.InstrumentationRegistry; +import com.android.textclassifier.testing.TestingDeviceConfig; import com.google.common.collect.ImmutableMap; -import java.util.HashMap; import java.util.Map; import java.util.function.Consumer; import org.junit.After; @@ -157,26 +156,11 @@ public class TextClassifierSettingsTest { private static void assertSettings( Map<String, String> keyValueMap, Consumer<TextClassifierSettings> settingsConsumer) { - HashMap<String, String> keyOriginalValueMap = new HashMap<>(); + TestingDeviceConfig deviceConfig = new TestingDeviceConfig(); + TextClassifierSettings settings = new TextClassifierSettings(deviceConfig); for (String key : keyValueMap.keySet()) { - keyOriginalValueMap.put( - key, DeviceConfig.getProperty(DeviceConfig.NAMESPACE_TEXTCLASSIFIER, key)); + deviceConfig.setConfig(key, keyValueMap.get(key)); } - TextClassifierSettings settings = new TextClassifierSettings(); - try { - for (String key : keyValueMap.keySet()) { - setDeviceConfig(key, keyValueMap.get(key)); - } - settingsConsumer.accept(settings); - } finally { - for (String key : keyValueMap.keySet()) { - setDeviceConfig(key, keyOriginalValueMap.get(key)); - } - } - } - - private static void setDeviceConfig(String key, String value) { - DeviceConfig.setProperty( - DeviceConfig.NAMESPACE_TEXTCLASSIFIER, key, value, /* makeDefault */ false); + settingsConsumer.accept(settings); } } diff --git a/java/tests/instrumentation/src/com/android/textclassifier/testing/TestingDeviceConfig.java b/java/tests/instrumentation/src/com/android/textclassifier/testing/TestingDeviceConfig.java index 670e3d0..bdc422e 100644 --- a/java/tests/instrumentation/src/com/android/textclassifier/testing/TestingDeviceConfig.java +++ b/java/tests/instrumentation/src/com/android/textclassifier/testing/TestingDeviceConfig.java @@ -25,42 +25,64 @@ import javax.annotation.Nullable; /** A fake DeviceConfig implementation for testing purpose. */ public final class TestingDeviceConfig implements TextClassifierSettings.IDeviceConfig { - private final HashMap<String, String> strConfigs; - private final HashMap<String, Boolean> boolConfigs; + private final HashMap<String, String> configs; public TestingDeviceConfig() { - this.strConfigs = new HashMap<>(); - this.boolConfigs = new HashMap<>(); + this.configs = new HashMap<>(); } public void setConfig(String key, String value) { - strConfigs.put(key, value); + configs.put(key, value); } public void setConfig(String key, boolean value) { - boolConfigs.put(key, value); + configs.put(key, Boolean.toString(value)); + } + + public void setConfig(String key, int value) { + configs.put(key, Integer.toString(value)); + } + + public void setConfig(String key, float value) { + configs.put(key, Float.toString(value)); + } + + public void setConfig(String key, long value) { + configs.put(key, Long.toString(value)); } @Override public Properties getProperties(@NonNull String namespace, @NonNull String... names) { Properties.Builder builder = new Properties.Builder(namespace); - for (String key : strConfigs.keySet()) { - builder.setString(key, strConfigs.get(key)); - } - for (String key : boolConfigs.keySet()) { - builder.setBoolean(key, boolConfigs.get(key)); + for (String key : configs.keySet()) { + builder.setString(key, configs.get(key)); } return builder.build(); } @Override public boolean getBoolean(@NonNull String namespace, @NonNull String name, boolean defaultValue) { - return boolConfigs.containsKey(name) ? boolConfigs.get(name) : defaultValue; + return configs.containsKey(name) ? Boolean.parseBoolean(configs.get(name)) : defaultValue; } @Override public String getString( @NonNull String namespace, @NonNull String name, @Nullable String defaultValue) { - return strConfigs.containsKey(name) ? strConfigs.get(name) : defaultValue; + return configs.containsKey(name) ? configs.get(name) : defaultValue; + } + + @Override + public int getInt(@NonNull String namespace, @NonNull String name, int defaultValue) { + return configs.containsKey(name) ? Integer.parseInt(configs.get(name)) : defaultValue; + } + + @Override + public float getFloat(@NonNull String namespace, @NonNull String name, float defaultValue) { + return configs.containsKey(name) ? Float.parseFloat(configs.get(name)) : defaultValue; + } + + @Override + public long getLong(@NonNull String namespace, @NonNull String name, long defaultValue) { + return configs.containsKey(name) ? Long.parseLong(configs.get(name)) : defaultValue; } } |