Automatically switch to native density for ActivityManagerMemoryClassTestConfigurationTest
Bug: 128574090
Test: atest android.app.cts.ActivityManagerMemoryClassTest#testGetMemoryClass
Change-Id: I66965b2b9ef1d5867616b765edb0425f1fb0c35d
diff --git a/tests/app/src/android/app/cts/ActivityManagerMemoryClassTest.java b/tests/app/src/android/app/cts/ActivityManagerMemoryClassTest.java
index 0668ff8..cda65a9 100644
--- a/tests/app/src/android/app/cts/ActivityManagerMemoryClassTest.java
+++ b/tests/app/src/android/app/cts/ActivityManagerMemoryClassTest.java
@@ -22,6 +22,7 @@
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
+import android.support.test.uiautomator.UiDevice;
import android.test.ActivityInstrumentationTestCase2;
import android.util.DisplayMetrics;
import android.view.Display;
@@ -31,6 +32,8 @@
import java.util.HashMap;
import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
/**
* {@link ActivityInstrumentationTestCase2} that tests {@link ActivityManager#getMemoryClass()}
@@ -156,12 +159,35 @@
@CddTest(requirement="3.7")
public void testGetMemoryClass() throws Exception {
+ UiDevice uiDevice = UiDevice.getInstance(getInstrumentation());
+ int density = resetDensityIfNeeded(uiDevice);
+
int memoryClass = getMemoryClass();
int screenDensity = getScreenDensity();
int screenSize = getScreenSize();
assertMemoryForScreenDensity(memoryClass, screenDensity, screenSize);
runHeapTestApp(memoryClass);
+
+ restoreDensityIfNeeded(uiDevice, density);
+ }
+
+ private int resetDensityIfNeeded(UiDevice device) throws Exception {
+ final String output = device.executeShellCommand("wm density");
+ final Pattern p = Pattern.compile("Override density: (\\d+)");
+ final Matcher m = p.matcher(output);
+ if (m.find()) {
+ device.executeShellCommand("wm density reset");
+ int restoreDensity = Integer.parseInt(m.group(1));
+ return restoreDensity;
+ }
+ return -1;
+ }
+
+ private void restoreDensityIfNeeded(UiDevice device, int restoreDensity) throws Exception {
+ if (restoreDensity > 0) {
+ device.executeShellCommand("wm density " + restoreDensity);
+ }
}
private int getMemoryClass() {