From ef2d1d3afeaf664bde8090cf43b56bce33de2247 Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Fri, 27 May 2016 12:26:33 +0100 Subject: [PATCH] Changes after review of pull #28 - remove permission request dialog handling (no longer required) - reduce per-slide sleep time (now 200ms) - replace magic numbers with named constants - better names for save/delete dialog test tags - comments to explain some design choices --- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 14938 -> 15787 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 51 ++++++++++-------- 2 files changed, 30 insertions(+), 21 deletions(-) diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index 8a6b45b1aa43d4be4e5b9429309437fe1da469ea..c66251f7e5205b1be5efcb773c25c5201f1e73ab 100644 GIT binary patch delta 15593 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 DOMTBO delta 14737 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 WOalA=FRe`W65~LL6M8GJg!?~Yj&=_K diff --git a/wlauto/workloads/googleslides/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java b/wlauto/workloads/googleslides/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java index 6088365c..1ab200f5 100644 --- a/wlauto/workloads/googleslides/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java +++ b/wlauto/workloads/googleslides/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java @@ -54,6 +54,8 @@ public class UiAutomation extends UxPerfUiAutomation { } public static final int DIALOG_WAIT_TIME_MS = 3000; + public static final int SLIDE_WAIT_TIME_MS = 200; + public static final int CLICK_REPEAT_INTERVAL_MS = 50; public static final int DEFAULT_SWIPE_STEPS = 10; public static final String NEW_DOC_FILENAME = "UX Perf Slides"; @@ -154,11 +156,6 @@ public class UiAutomation extends UxPerfUiAutomation { clickView(BY_TEXT, "Device storage", true); timer.end(); results.put("open_file_picker", timer); - // Allow SD card access if requested - UiObject permissionView = new UiObject(new UiSelector().textContains("Allow Slides")); - if (permissionView.waitForExists(DIALOG_WAIT_TIME_MS)) { - clickView(BY_TEXT, "Allow"); - } // Scroll through document list if necessary UiScrollable list = new UiScrollable(new UiSelector().className("android.widget.ListView")); @@ -171,6 +168,11 @@ public class UiAutomation extends UxPerfUiAutomation { results.put("open_document", timer); sleep(5); + // Begin Slide show test + // Note: A short wait-time is introduced before transition to the next slide to simulate + // a real user's behaviour. Otherwise the test swipes through the slides too quickly. + // These waits are not measured in the per-slide timings, and introduce a systematic + // error in the overall slideshow timings. int centerY = getUiDevice().getDisplayHeight() / 2; int centerX = getUiDevice().getDisplayWidth() / 2; int slideIndex = 0; @@ -190,7 +192,7 @@ public class UiAutomation extends UxPerfUiAutomation { slideTimer.end(); results.put(testTag, slideTimer); endDumpsys(ACTIVITY_SLIDES, testTag); - sleep(1); + SystemClock.sleep(SLIDE_WAIT_TIME_MS); } timer.end(); results.put("slides_forward", timer); @@ -210,7 +212,7 @@ public class UiAutomation extends UxPerfUiAutomation { slideTimer.end(); results.put(testTag, slideTimer); endDumpsys(ACTIVITY_SLIDES, testTag); - sleep(1); + SystemClock.sleep(SLIDE_WAIT_TIME_MS); } timer.end(); results.put("slides_reverse", timer); @@ -236,7 +238,7 @@ public class UiAutomation extends UxPerfUiAutomation { slideTimer.end(); results.put(testTag, slideTimer); endDumpsys(ACTIVITY_SLIDES, testTag); - sleep(1); + SystemClock.sleep(SLIDE_WAIT_TIME_MS); } timer.end(); results.put("play_slideshow", timer); @@ -276,6 +278,9 @@ public class UiAutomation extends UxPerfUiAutomation { getUiDevice().pressBack(); // get image from gallery and insert + // To keep the test simple just select the most recent image regardless of what + // folder it's in. More reliable than trying to find a pushed image in the file + // picker, and fails gracefully in the rare case that no images exist. insertSlide("Title Only"); clickView(BY_DESC, "Insert"); clickView(BY_TEXT, "Image", true); @@ -323,7 +328,11 @@ public class UiAutomation extends UxPerfUiAutomation { } catch (UiObjectNotFoundException e) { clickView(BY_ID, "android:id/action_mode_close_button"); } - SystemClock.sleep(200); + // On some devices, keyboard pops up when entering text, and takes a noticeable + // amount of time (few milliseconds) to disappear after clicking Done. + // In these cases, trying to find a view immediately after entering text leads + // to an exception, so a short wait-time is added for stability. + SystemClock.sleep(SLIDE_WAIT_TIME_MS); } public void saveDocument(String docName) throws Exception { @@ -332,12 +341,7 @@ public class UiAutomation extends UxPerfUiAutomation { clickView(BY_TEXT, "SAVE"); clickView(BY_TEXT, "Device"); timer.end(); - results.put("save_dialog1", timer); - // Allow SD card access if requested - UiObject permissionView = new UiObject(new UiSelector().textContains("Allow Slides")); - if (permissionView.waitForExists(DIALOG_WAIT_TIME_MS)) { - clickView(BY_TEXT, "Allow"); - } + results.put("save_dialog_1", timer); timer = new Timer(); timer.start(); @@ -346,8 +350,13 @@ public class UiAutomation extends UxPerfUiAutomation { filename.setText(docName); clickView(BY_TEXT, "Save", CLASS_BUTTON); timer.end(); - results.put("save_dialog2", timer); + results.put("save_dialog_2", timer); + // Overwrite if prompted + // Should not happen under normal circumstances. But ensures test doesn't stop + // if a previous iteration failed prematurely and was unable to delete the file. + // Note that this file isn't removed during workload teardown as deleting it is + // part of the UiAutomator test case. UiObject overwriteView = new UiObject(new UiSelector().textContains("already exists")); if (overwriteView.waitForExists(DIALOG_WAIT_TIME_MS)) { clickView(BY_TEXT, "Overwrite"); @@ -362,7 +371,7 @@ public class UiAutomation extends UxPerfUiAutomation { doc.longClick(); clickView(BY_TEXT, "Remove"); timer.end(); - results.put("delete_dialog1", timer); + results.put("delete_dialog_1", timer); timer = new Timer(); timer.start(); @@ -374,7 +383,7 @@ public class UiAutomation extends UxPerfUiAutomation { } deleteButton.clickAndWaitForNewWindow(); timer.end(); - results.put("delete_dialog2", timer); + results.put("delete_dialog_2", timer); sleep(1); } @@ -382,7 +391,7 @@ public class UiAutomation extends UxPerfUiAutomation { if (repeat < 1 || !view.isClickable()) return; while (repeat-- > 0) { view.click(); - SystemClock.sleep(50); // in order to register as separate click + SystemClock.sleep(CLICK_REPEAT_INTERVAL_MS); // in order to register as separate click } } @@ -455,7 +464,7 @@ public class UiAutomation extends UxPerfUiAutomation { public void startDumpsys(String viewName) throws Exception { if (!dumpsysEnabled) return; - initDumpsysSurfaceFlinger(PACKAGE, viewName); + initDumpsysSurfaceFlinger(PACKAGE); initDumpsysGfxInfo(PACKAGE); } @@ -463,7 +472,7 @@ public class UiAutomation extends UxPerfUiAutomation { if (!dumpsysEnabled) return; String dumpsysTag = TAG + "_" + testTag; - exitDumpsysSurfaceFlinger(PACKAGE, viewName, new File(outputDir, dumpsysTag + "_surfFlinger.log")); + exitDumpsysSurfaceFlinger(PACKAGE, new File(outputDir, dumpsysTag + "_surfFlinger.log")); exitDumpsysGfxInfo(PACKAGE, new File(outputDir, dumpsysTag + "_gfxInfo.log")); } }