Fix UidAtomTests failure
The device has multiple user. The testcase assume the settings
value comes from user id 0, that is wrong because in auto the
first user id is 10. Change the testcase to test global settings
which doesn't have per user settings.
BYPASS_INCLUSIVE_LANGUAGE_REASON=need to use the name defined in
other place
Bug: 153356524
Test: atest android.cts.statsd.atom.UidAtomTests#testSettingsStatsReported
Change-Id: I524b17d68b61aad8b4c216ffc1c5b51d38c7ae26
Merged-In: I20980b64b872f0a006735edde10c12f7a0cd6e19
diff --git a/hostsidetests/statsd/src/android/cts/statsd/atom/UidAtomTests.java b/hostsidetests/statsd/src/android/cts/statsd/atom/UidAtomTests.java
index 88d0f9a..1892f85 100644
--- a/hostsidetests/statsd/src/android/cts/statsd/atom/UidAtomTests.java
+++ b/hostsidetests/statsd/src/android/cts/statsd/atom/UidAtomTests.java
@@ -16,7 +16,6 @@
package android.cts.statsd.atom;
import static com.android.os.AtomsProto.IntegrityCheckResultReported.Response.ALLOWED;
-
import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertWithMessage;
@@ -25,7 +24,6 @@
import android.os.WakeLockLevelEnum;
import android.server.ErrorSource;
import android.telephony.NetworkTypeEnum;
-
import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
import com.android.compatibility.common.util.PropertyUtil;
import com.android.internal.os.StatsdConfigProto.FieldValueMatcher;
@@ -84,10 +82,8 @@
import com.android.os.StatsLog.EventMetricData;
import com.android.server.notification.SmallHash;
import com.android.tradefed.log.LogUtil;
-
import com.google.common.collect.Range;
import com.google.protobuf.Descriptors;
-
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
@@ -1789,18 +1785,32 @@
public void testSettingsStatsReported() throws Exception {
// Base64 encoded proto com.android.service.nano.StringListParamProto,
- // which contains two strings "font_scale" and "screen_auto_brightness_adj".
- final String encoded = "ChpzY3JlZW5fYXV0b19icmlnaHRuZXNzX2FkagoKZm9udF9zY2FsZQ";
- final String font_scale = "font_scale";
- SettingSnapshot snapshot = null;
+ // which contains five strings 'low_power_trigger_level', 'preferred_network_mode1',
+ // 'preferred_network_mode1_int', 'wfc_ims_mode','zen_mode'
+ final String encoded =
+ "Chdsb3dfcG93ZXJfdHJpZ2dlcl9sZXZlbAoQd2ZjX2ltc19tb2RlID0gMgoXcHJlZmVycmVkX25ldHdvcmtfbW9kZTEKG3ByZWZlcnJlZF9uZXR3b3JrX21vZGUxX2ludAoIemVuX21vZGU";
+ final String network_mode1 = "preferred_network_mode1";
+ int originalNetworkMode;
+ try {
+ originalNetworkMode = Integer.parseInt(
+ getDevice().executeShellCommand("settings get global " + network_mode1));
+ } catch (NumberFormatException e) {
+ // The default value, zen mode is not enabled
+ originalNetworkMode = 0;
+ }
+
+ // Clear settings_stats device config.
+ Thread.sleep(WAIT_TIME_SHORT);
+ getDevice().executeShellCommand(
+ "device_config reset untrusted_clear settings_stats");
// Set whitelist through device config.
Thread.sleep(WAIT_TIME_SHORT);
getDevice().executeShellCommand(
- "device_config put settings_stats SystemFeature__float_whitelist " + encoded);
+ "device_config put settings_stats GlobalFeature__integer_whitelist " + encoded);
Thread.sleep(WAIT_TIME_SHORT);
- // Set font_scale value
- getDevice().executeShellCommand("settings put system font_scale 1.5");
+ // Set network_mode1 value
+ getDevice().executeShellCommand("settings put global " + network_mode1 + " 15");
// Get SettingSnapshot as a simple gauge metric.
StatsdConfig.Builder config = createConfigBuilder();
@@ -1817,13 +1827,13 @@
Thread.sleep(WAIT_TIME_LONG);
}
- // Test the size of atoms. It should contain at least "font_scale" and
- // "screen_auto_brightness_adj" two setting values.
+ // Test the size of atoms. It should contain 5 atoms
List<Atom> atoms = getGaugeMetricDataList();
- assertThat(atoms.size()).isAtLeast(2);
+ assertThat(atoms.size()).isEqualTo(5);
+ SettingSnapshot snapshot = null;
for (Atom atom : atoms) {
SettingSnapshot settingSnapshot = atom.getSettingSnapshot();
- if (font_scale.equals(settingSnapshot.getName())) {
+ if (network_mode1.equals(settingSnapshot.getName())) {
snapshot = settingSnapshot;
break;
}
@@ -1832,16 +1842,20 @@
Thread.sleep(WAIT_TIME_SHORT);
// Test the data of atom.
assertNotNull(snapshot);
- // Get font_scale value and test value type.
- final float fontScale = Float.parseFloat(
- getDevice().executeShellCommand("settings get system font_scale"));
+ // Get setting value and test value type.
+ final int newNetworkMode = Integer.parseInt(
+ getDevice().executeShellCommand("settings get global " + network_mode1).trim());
assertThat(snapshot.getType()).isEqualTo(
- SettingSnapshot.SettingsValueType.ASSIGNED_FLOAT_TYPE);
+ SettingSnapshot.SettingsValueType.ASSIGNED_INT_TYPE);
assertThat(snapshot.getBoolValue()).isEqualTo(false);
- assertThat(snapshot.getIntValue()).isEqualTo(0);
- assertThat(snapshot.getFloatValue()).isEqualTo(fontScale);
+ assertThat(snapshot.getIntValue()).isEqualTo(newNetworkMode);
+ assertThat(snapshot.getFloatValue()).isEqualTo(0f);
assertThat(snapshot.getStrValue()).isEqualTo("");
assertThat(snapshot.getUserId()).isEqualTo(0);
+
+ // Restore the setting value.
+ getDevice().executeShellCommand(
+ "settings put global " + network_mode1 + " " + originalNetworkMode);
}
public void testIntegrityCheckAtomReportedDuringInstall() throws Exception {