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 3097715..a8c5230 100644
--- a/tests/perftests/src/com/android/settings/tests/perf/LaunchSettingsTest.java
+++ b/tests/perftests/src/com/android/settings/tests/perf/LaunchSettingsTest.java
@@ -62,6 +62,7 @@
private static final int TEST_TIME = 10;
private static final Pattern PATTERN = Pattern.compile("TotalTime:\\s[0-9]*");
private static final Page[] PAGES;
+ private static final String TAG = "SettingsPerfTests";
static {
PAGES = new Page[]{
@@ -144,11 +145,17 @@
private void putResultToBundle() {
for (String string : mResult.keySet()) {
mBundle.putString(String.format("LaunchSettingsTest_%s_%s", string, "max"),
- getMax(mResult.get(string)));
+ getMax(string));
mBundle.putString(String.format("LaunchSettingsTest_%s_%s", string, "min"),
- getMin(mResult.get(string)));
+ getMin(string));
mBundle.putString(String.format("LaunchSettingsTest_%s_%s", string, "avg"),
- getAvg(mResult.get(string)));
+ getAvg(string));
+ mBundle.putString(String.format("LaunchSettingsTest_%s_%s", string, "25 Percentile"),
+ getPercentile(string, 25));
+ mBundle.putString(String.format("LaunchSettingsTest_%s_%s", string, "50 Percentile"),
+ getPercentile(string, 50));
+ mBundle.putString(String.format("LaunchSettingsTest_%s_%s", string, "75 Percentile"),
+ getPercentile(string, 75));
mBundle.putString(String.format("LaunchSettingsTest_%s_%s", string, "all_results"),
mResult.get(string).toString());
mBundle.putString(String.format("LaunchSettingsTest_%s_%s", string, "results_count"),
@@ -156,16 +163,30 @@
}
}
- private String getMax(ArrayList<Integer> launchResult) {
- return String.format("%s", launchResult.isEmpty() ? "null" : Collections.max(launchResult));
+ private String getMax(String page) {
+ if (mResult.get(page).size() == TEST_TIME) {
+ return String.format("%s", Collections.max(mResult.get(page)));
+ }
+ Log.e(TAG, String.format("Fail to get max of %s.", page));
+ return "0";
+
}
- private String getMin(ArrayList<Integer> launchResult) {
- return String.format("%s", launchResult.isEmpty() ? "null" : Collections.min(launchResult));
+ private String getMin(String page) {
+ if (mResult.get(page).size() == TEST_TIME) {
+ return String.format("%s", Collections.min(mResult.get(page)));
+ }
+ Log.e(TAG, String.format("Fail to get min of %s.", page));
+ return "0";
}
- private String getAvg(ArrayList<Integer> launchResult) {
- return String.valueOf((int) launchResult.stream().mapToInt(i -> i).average().orElse(0));
+ private String getAvg(String page) {
+ if (mResult.get(page).size() == TEST_TIME) {
+ return String.valueOf((int) mResult.get(page).stream().mapToInt(
+ i -> i).average().orElse(0));
+ }
+ Log.e(TAG, String.format("Fail to get avg of %s.", page));
+ return "0";
}
private void setScreenTimeOut(String timeout) throws Exception {
@@ -202,4 +223,14 @@
private String getAirplaneModeStatus() throws Exception {
return mDevice.executeShellCommand("settings get global airplane_mode_on");
}
+
+ private String getPercentile(String page, double position) {
+ Collections.sort(mResult.get(page));
+ if (mResult.get(page).size() == TEST_TIME) {
+ return String.valueOf(
+ mResult.get(page).get((int) (Math.ceil(TEST_TIME * position / 100)) - 1));
+ }
+ Log.e(TAG, String.format("Fail to get percentile of %s.", page));
+ return "0";
+ }
}
\ No newline at end of file