Merge "Settings performance testing"
diff --git a/tests/perftests/src/com/android/settings/tests/perf/LaunchSettingsTest.java b/tests/perftests/src/com/android/settings/tests/perf/LaunchSettingsTest.java
index ec2a311..15a769c 100644
--- a/tests/perftests/src/com/android/settings/tests/perf/LaunchSettingsTest.java
+++ b/tests/perftests/src/com/android/settings/tests/perf/LaunchSettingsTest.java
@@ -56,8 +56,10 @@
         }
     }
 
+    private static final String SCREEN_TIME_OUT = "7200000";
+    private static final String DEFAULT_SCREEN_TIMEOUT = "15000";
     private static final int TIME_OUT = 5000;
-    private static final int TEST_TIME = 10;
+    private static final int TEST_TIME = 100;
     private static final Pattern PATTERN = Pattern.compile("TotalTime:\\s[0-9]*");
     private static final Page[] PAGES;
 
@@ -67,7 +69,8 @@
                 new Page("android.settings.WIFI_SETTINGS", "Use Wi‑Fi", "Wi-Fi"),
                 new Page("android.settings.BLUETOOTH_SETTINGS", "Connected devices", "BlueTooth"),
                 new Page("android.settings.APPLICATION_SETTINGS", "App info", "Application"),
-                new Page("android.intent.action.POWER_USAGE_SUMMARY", "Battery", "Battery")
+                new Page("android.intent.action.POWER_USAGE_SUMMARY", "Battery", "Battery"),
+                new Page("android.settings.INTERNAL_STORAGE_SETTINGS", "Storage", "Storage")
         };
     }
 
@@ -75,6 +78,7 @@
     private UiDevice mDevice;
     private Instrumentation mInstrumentation;
     private Map<String, ArrayList<Integer>> mResult;
+    private String mDefaultScreenTimeout;
 
     @Before
     public void setUp() throws Exception {
@@ -82,6 +86,9 @@
         mDevice = UiDevice.getInstance(getInstrumentation());
         mInstrumentation = InstrumentationRegistry.getInstrumentation();
         mResult = new LinkedHashMap<>();
+        mDefaultScreenTimeout = mDevice.executeShellCommand(
+                "settings get system screen_off_timeout");
+        setScreenTimeOut(SCREEN_TIME_OUT);
         mDevice.pressHome();
         mDevice.waitForIdle(TIME_OUT);
 
@@ -94,6 +101,8 @@
     public void tearDown() throws Exception {
         putResultToBundle();
         mInstrumentation.sendStatus(0, mBundle);
+        resetScreenTimeout();
+        closeApp();
     }
 
     @Test
@@ -107,11 +116,11 @@
 
     private void executePreformanceTest(String action, String displayName, String title)
             throws Exception {
+        closeApp();
+        mDevice.waitForIdle(TIME_OUT);
         final String mString = mDevice.executeShellCommand("am start -W -a" + action);
         mDevice.wait(Until.findObject(By.text(displayName)), TIME_OUT);
         handleLaunchResult(title, mString);
-        closeApp();
-        mDevice.waitForIdle(TIME_OUT);
     }
 
     private void handleLaunchResult(String title, String s) {
@@ -150,4 +159,16 @@
     private String getAvg(ArrayList<Integer> launchResult) {
         return String.valueOf((int) launchResult.stream().mapToInt(i -> i).average().orElse(0));
     }
+
+    private void setScreenTimeOut(String timeout) throws Exception {
+        mDevice.executeShellCommand("settings put system screen_off_timeout " + timeout);
+    }
+
+    private void resetScreenTimeout() throws Exception {
+        String timeout = DEFAULT_SCREEN_TIMEOUT;
+        if (!mDefaultScreenTimeout.isEmpty()) {
+            timeout = mDefaultScreenTimeout;
+        }
+        setScreenTimeOut(timeout);
+    }
 }
\ No newline at end of file