From ceb6677274f04b5d312966870390405a62e55bdc Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Tue, 10 May 2016 12:07:41 +0100 Subject: [PATCH 01/25] Initial commit for Google Slides Includes functionality to create a document from template or plain PPT or Slides Also helper functions for edge swipe and adb commands (not quite working) --- wlauto/workloads/googleslides/__init__.py | 94 +++++++++++ .../com.arm.wlauto.uiauto.googleslides.jar | Bin 0 -> 10747 bytes wlauto/workloads/googleslides/uiauto/build.sh | 39 +++++ .../workloads/googleslides/uiauto/build.xml | 92 +++++++++++ .../googleslides/uiauto/project.properties | 14 ++ .../com/arm/wlauto/uiauto/UiAutomation.java | 155 ++++++++++++++++++ 6 files changed, 394 insertions(+) create mode 100644 wlauto/workloads/googleslides/__init__.py create mode 100644 wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar create mode 100755 wlauto/workloads/googleslides/uiauto/build.sh create mode 100644 wlauto/workloads/googleslides/uiauto/build.xml create mode 100644 wlauto/workloads/googleslides/uiauto/project.properties create mode 100644 wlauto/workloads/googleslides/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java diff --git a/wlauto/workloads/googleslides/__init__.py b/wlauto/workloads/googleslides/__init__.py new file mode 100644 index 00000000..7c04549a --- /dev/null +++ b/wlauto/workloads/googleslides/__init__.py @@ -0,0 +1,94 @@ +# Copyright 2014-2016 ARM Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import os.path as op +import re +import time + +from wlauto import AndroidUiAutoBenchmark, Parameter + + +def not_implemented(workload, text): + workload.logger.info('## ++ NOT IMPLEMENTED ++ ##\n## {}\n## -- NOT IMPLEMENTED -- ##'.format(text)) + + +class GoogleSlides(AndroidUiAutoBenchmark): + + name = 'googleslides' + package = 'com.google.android.apps.docs.editors.slides' + description = 'Creates a Google Slides presentation with some commonly used features' + activity = '' + # com.google.android.apps.docs.editors.slides/com.google.android.apps.docs.app.DocListActivity + # com.google.android.apps.docs.editors.slides/com.google.android.apps.docs.welcome.warmwelcome.TrackingWelcomeActivity + + instrumentation_log = '{}_instrumentation.log'.format(name) + + parameters = [ + Parameter('dumpsys_enabled', kind=bool, default=True, + description=''' + If ``True``, dumpsys captures will be carried out during the test run. + The output is piped to log files which are then pulled from the phone. + '''), + ] + + def __init__(self, device, **kwargs): + super(GoogleSlides, self).__init__(device, **kwargs) + self.output_file = op.join(self.device.working_directory, self.instrumentation_log) + self.run_timeout = 60 + + def validate(self): + self.logger.info('===== validate() ======') + super(GoogleSlides, self).validate() + self.uiauto_params['dumpsys_enabled'] = self.dumpsys_enabled + self.uiauto_params['output_dir'] = self.device.working_directory + self.uiauto_params['results_file'] = self.output_file + + def setup(self, context): + self.logger.info('===== setup() ======') + super(GoogleSlides, self).setup(context) + + def run(self, context): + self.logger.info('===== run() ======') + super(GoogleSlides, self).run(context) + + def update_result(self, context): + self.logger.info('===== update_result() ======') + super(GoogleSlides, self).update_result(context) + if self.dumpsys_enabled: + not_implemented(self, 'get_metrics(context)') + + def teardown(self, context): + self.logger.info('===== teardown() ======') + super(GoogleSlides, self).teardown(context) + not_implemented(self, 'pull_logs(context)') + + def get_metrics(self, context): + self.device.pull_file(self.output_file, context.output_directory) + metrics_file = op.join(context.output_directory, self.instrumentation_log) + with open(metrics_file, 'r') as wfh: + regex = re.compile(r'(\w+)\s+(\d+)\s+(\d+)\s+(\d+)') + for line in wfh: + match = regex.search(line) + if match: + context.result.add_metric((match.group(1) + '_start'), match.group(2)) + context.result.add_metric((match.group(1) + '_finish'), match.group(3)) + context.result.add_metric((match.group(1) + '_duration'), match.group(4)) + + def pull_logs(self, context): + wd = self.device.working_directory + for entry in self.device.listdir(wd): + if entry.startswith(self.name) and entry.endswith('.log'): + self.device.pull_file(op.join(wd, entry), context.output_directory) + self.device.delete_file(op.join(wd, entry)) diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar new file mode 100644 index 0000000000000000000000000000000000000000..3a2191510093674f3c8e1ca7ce0071bdaeebb687 GIT binary patch literal 10747 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 literal 0 HcmV?d00001 diff --git a/wlauto/workloads/googleslides/uiauto/build.sh b/wlauto/workloads/googleslides/uiauto/build.sh new file mode 100755 index 00000000..58407ee5 --- /dev/null +++ b/wlauto/workloads/googleslides/uiauto/build.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# CD into build dir if possible - allows building from any directory +script_path='.' +if `readlink -f $0 &>/dev/null`; then + script_path=`readlink -f $0 2>/dev/null` +fi +script_dir=`dirname $script_path` +cd $script_dir + +# Ensure build.xml exists before starting +if [[ ! -f build.xml ]]; then + echo 'Ant build.xml file not found! Check that you are in the right directory.' + exit 9 +fi + +# Copy base classes from wlauto dist +class_dir=bin/classes/com/arm/wlauto/uiauto +base_classes=`python -c "import os, wlauto; print os.path.join(os.path.dirname(wlauto.__file__), 'common', 'android', '*.class')"` +mkdir -p $class_dir +cp $base_classes $class_dir + +# Build and return appropriate exit code if failed +ant build +exit_code=$? +if [[ $exit_code -ne 0 ]]; then + echo "ERROR: 'ant build' exited with code $exit_code" + exit $exit_code +fi + +# If successful move JAR file to workload folder (remove previous) +package=com.arm.wlauto.uiauto.googleslides.jar +rm -f ../$package +if [[ -f bin/$package ]]; then + cp bin/$package .. +else + echo 'ERROR: UiAutomator JAR could not be found!' + exit 9 +fi diff --git a/wlauto/workloads/googleslides/uiauto/build.xml b/wlauto/workloads/googleslides/uiauto/build.xml new file mode 100644 index 00000000..259eaa6e --- /dev/null +++ b/wlauto/workloads/googleslides/uiauto/build.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wlauto/workloads/googleslides/uiauto/project.properties b/wlauto/workloads/googleslides/uiauto/project.properties new file mode 100644 index 00000000..ce39f2d0 --- /dev/null +++ b/wlauto/workloads/googleslides/uiauto/project.properties @@ -0,0 +1,14 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system edit +# "ant.properties", and override values to adapt the script to your +# project structure. +# +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): +#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt + +# Project target. +target=android-18 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 new file mode 100644 index 00000000..1e10758c --- /dev/null +++ b/wlauto/workloads/googleslides/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java @@ -0,0 +1,155 @@ +package com.arm.wlauto.uiauto.googleslides; + +import java.io.File; +import java.util.LinkedHashMap; +import java.util.Map; + +import android.app.Activity; +import android.content.Context; +import android.net.wifi.WifiManager; +import android.os.Bundle; +import android.util.Log; +import android.view.KeyEvent; + +// Import the uiautomator libraries +import com.android.uiautomator.core.UiObject; +import com.android.uiautomator.core.UiObjectNotFoundException; +import com.android.uiautomator.core.UiScrollable; +import com.android.uiautomator.core.UiSelector; +import com.android.uiautomator.testrunner.UiAutomatorTestCase; + +import com.arm.wlauto.uiauto.UxPerfUiAutomation; + +public class UiAutomation extends UxPerfUiAutomation { + + public static String TAG = "googleslides"; + public static final String PACKAGE = "com.google.android.apps.docs.editors.slides"; + public static final String PACKAGE_ID = PACKAGE + ":id/"; + + public static final String CLASS_TEXT_VIEW = "android.widget.TextView"; + public static final String CLASS_IMAGE_VIEW = "android.widget.ImageView"; + public static final String CLASS_BUTTON = "android.widget.Button"; + public static final String CLASS_IMAGE_BUTTON = "android.widget.ImageButton"; + public static final String CLASS_TABLE_ROW = "android.widget.TableRow"; + + public Bundle parameters; + private Map results = new LinkedHashMap(); + private boolean dumpsysEnabled; + private String outputDir; + + public static final int DOCTYPE_TEMPLATE = 1; + public static final int DOCTYPE_PPT = 2; + public static final int DOCTYPE_SLIDES = 3; + + public void runUiAutomation() throws Exception { + parameters = getParams(); + parseParams(parameters); + skipWelcomeScreen(); + enablePowerpointCompat(); + if (false) { // TODO currently unused + openFromStorage(); + } + createNewDoc(DOCTYPE_TEMPLATE); + setWifiStatus(false); + tapDisplayNormalised(0.99, 0.99); + sleep(5); + if (false) { // TODO currently unused + writeResultsToFile(results, parameters.getString("results_file")); + } + } + + public void parseParams(Bundle parameters) throws Exception { + dumpsysEnabled = Boolean.parseBoolean(parameters.getString("dumpsys_enabled")); + outputDir = parameters.getString("output_dir", "/sdcard/wa-working"); + } + + private void skipWelcomeScreen() throws Exception { + UiObject skipButton = getUiObjectByText("Skip", CLASS_BUTTON); + skipButton.clickAndWaitForNewWindow(); + sleep(1); + } + + private void enablePowerpointCompat() throws Exception { + uiDeviceEdgeSwipeFromLeft(10); + UiObject settings = getUiObjectByText("Settings", CLASS_TEXT_VIEW); + settings.clickAndWaitForNewWindow(); + UiObject checkboxRow = getUiObjectByText("Create PowerPoint", CLASS_TEXT_VIEW); + checkboxRow.click(); + getUiDevice().pressBack(); + sleep(1); + } + + private void openFromStorage() throws Exception { + // UiObject newButton = getUiObjectByResourceId(PACKAGE_ID + "menu_open_with_picker", CLASS_TEXT_VIEW); + UiObject openButton = getUiObjectByDescription("Open presentation", CLASS_TEXT_VIEW); + openButton.click(); + openButton = getUiObjectByText("Device storage", CLASS_TEXT_VIEW); + openButton.clickAndWaitForNewWindow(); + getUiDevice().pressBack(); + sleep(1); + } + + private void createNewDoc(int docType) throws Exception { + // UiObject newButton = getUiObjectByResourceId(PACKAGE_ID + "fab_base_button", CLASS_IMAGE_BUTTON); + UiObject newButton = getUiObjectByDescription("New presentation", CLASS_IMAGE_BUTTON); + newButton.click(); + + UiObject newPowerpoint = getUiObjectByDescription("New PowerPoint", CLASS_IMAGE_BUTTON); + UiObject newSlidesFile = getUiObjectByDescription("New Slides", CLASS_IMAGE_BUTTON); + UiObject fromTemplate = getUiObjectByDescription("Choose template", CLASS_IMAGE_BUTTON); + // UiObject newPowerpoint = getUiObjectByText("New PowerPoint", CLASS_TEXT_VIEW); + // UiObject newSlidesFile = getUiObjectByText("New Slides", CLASS_TEXT_VIEW); + // UiObject fromTemplate = getUiObjectByText("Choose template", CLASS_TEXT_VIEW); + + switch (docType) { + case DOCTYPE_TEMPLATE: + fromTemplate.clickAndWaitForNewWindow(); + break; + case DOCTYPE_PPT: + newPowerpoint.clickAndWaitForNewWindow(); + break; + case DOCTYPE_SLIDES: + default: + newSlidesFile.clickAndWaitForNewWindow(); + break; + } + sleep(1); + getUiDevice().pressBack(); + } + + public void uiDeviceEdgeSwipeFromLeft(int steps) { + int height = getDisplayHeight(); + int width = getDisplayWidth(); + getUiDevice().swipe(0, height/2, width/2, height/2, steps); + } + + public void tapDisplayNormalised(double percentX, double percentY) { + double x = Math.max(0, Math.min(1, percentX)); + double y = Math.max(0, Math.min(1, percentY)); + int tapX = (int) Math.floor(x * getDisplayWidth()); + int tapY = (int) Math.floor(y * getDisplayHeight()); + getUiDevice().click(tapX, tapY); + } + + public void setWifiStatus(boolean flag) throws Exception { + // To enable, check for "UninitializedState" + String checkFor = flag ? "UninitializedState" : "ConnectedState"; + String adbCommand = + "dumpsys wifi | grep curState=" + checkFor + ";" + + "exit_code=$?;" + + "if [ $exit_code = 0 ]; then" + + " am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings;" + + " input keyevent 20;" + + " input keyevent 23;" + + " sleep 1;" + + " input keyevent 4;" + + "fi"; + // runShellCommand(adbCommand); + runShellCommand("dumpsys wifi | grep curState=ConnectedState"); + sleep(1); + } + + public void runShellCommand(String command) throws Exception { + Process proc = Runtime.getRuntime().exec(command); + } +} From f2ff559805487b72cd5e815aa37a4a0e42301df7 Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Thu, 12 May 2016 15:46:05 +0100 Subject: [PATCH 02/25] Update google slides workload - support for pushing local PPT files to device for testing --- wlauto/workloads/googleslides/__init__.py | 69 ++++++++++---- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 10747 -> 11084 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 84 +++++++++++++----- 3 files changed, 114 insertions(+), 39 deletions(-) diff --git a/wlauto/workloads/googleslides/__init__.py b/wlauto/workloads/googleslides/__init__.py index 7c04549a..205f9e78 100644 --- a/wlauto/workloads/googleslides/__init__.py +++ b/wlauto/workloads/googleslides/__init__.py @@ -13,16 +13,17 @@ # limitations under the License. # -import os.path as op +import os +import os.path as path import re -import time - from wlauto import AndroidUiAutoBenchmark, Parameter def not_implemented(workload, text): workload.logger.info('## ++ NOT IMPLEMENTED ++ ##\n## {}\n## -- NOT IMPLEMENTED -- ##'.format(text)) +def log_method(workload, name): + workload.logger.info('===== {}() ======'.format(name)) class GoogleSlides(AndroidUiAutoBenchmark): @@ -30,10 +31,12 @@ class GoogleSlides(AndroidUiAutoBenchmark): package = 'com.google.android.apps.docs.editors.slides' description = 'Creates a Google Slides presentation with some commonly used features' activity = '' - # com.google.android.apps.docs.editors.slides/com.google.android.apps.docs.app.DocListActivity - # com.google.android.apps.docs.editors.slides/com.google.android.apps.docs.welcome.warmwelcome.TrackingWelcomeActivity - instrumentation_log = '{}_instrumentation.log'.format(name) + # Views for FPS instrumentation + view = [ + "com.google.android.apps.docs.editors.slides/com.google.android.apps.docs.app.DocListActivity", + "com.google.android.apps.docs.editors.slides/com.google.android.apps.docs.welcome.warmwelcome.TrackingWelcomeActivity", + ] parameters = [ Parameter('dumpsys_enabled', kind=bool, default=True, @@ -41,42 +44,78 @@ class GoogleSlides(AndroidUiAutoBenchmark): If ``True``, dumpsys captures will be carried out during the test run. The output is piped to log files which are then pulled from the phone. '''), + Parameter('local_files', kind=bool, default=True, + description=''' + If ``True``, the workload will push PowerPoint files to be used for testing on + the device. Otherwise, the files will be created from template inside the app. + '''), ] + instrumentation_log = '{}_instrumentation.log'.format(name) + file_prefix = 'wa_test_' + local_dir = '.' # self.dependencies_directory + device_dir = '/sdcard/Download' # self.device.working_directory + def __init__(self, device, **kwargs): super(GoogleSlides, self).__init__(device, **kwargs) - self.output_file = op.join(self.device.working_directory, self.instrumentation_log) + self.output_file = path.join(self.device.working_directory, self.instrumentation_log) self.run_timeout = 60 def validate(self): - self.logger.info('===== validate() ======') + log_method(self, 'validate') super(GoogleSlides, self).validate() self.uiauto_params['dumpsys_enabled'] = self.dumpsys_enabled self.uiauto_params['output_dir'] = self.device.working_directory self.uiauto_params['results_file'] = self.output_file + def initialize(self, context): + log_method(self, 'initialize') + super(GoogleSlides, self).initialize(context) + if self.local_files: + # push local PPT files + for entry in os.listdir(self.local_dir): + wa_file = self.file_prefix + entry + if entry.endswith(".pptx"): + self.device.push_file(path.join(self.local_dir, entry), + path.join(self.device_dir, wa_file), + timeout=60) + # Force a re-index of the mediaserver cache to pick up new files + self.device.execute('am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard') + def setup(self, context): - self.logger.info('===== setup() ======') + log_method(self, 'setup') super(GoogleSlides, self).setup(context) def run(self, context): - self.logger.info('===== run() ======') + log_method(self, 'run') super(GoogleSlides, self).run(context) def update_result(self, context): - self.logger.info('===== update_result() ======') + log_method(self, 'update_result') super(GoogleSlides, self).update_result(context) if self.dumpsys_enabled: not_implemented(self, 'get_metrics(context)') def teardown(self, context): - self.logger.info('===== teardown() ======') + log_method(self, 'teardown') super(GoogleSlides, self).teardown(context) not_implemented(self, 'pull_logs(context)') + def finalize(self, context): + log_method(self, 'finalize') + super(GoogleSlides, self).finalize(context) + if self.local_files: + # delete pushed PPT files + for entry in os.listdir(self.local_dir): + wa_file = self.file_prefix + entry + if entry.endswith(".pptx"): + self.device.delete_file(path.join(self.device_dir, wa_file)) + # Force a re-index of the mediaserver cache to pick up new files + self.device.execute('am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard') + def get_metrics(self, context): self.device.pull_file(self.output_file, context.output_directory) - metrics_file = op.join(context.output_directory, self.instrumentation_log) + metrics_file = path.join(context.output_directory, self.instrumentation_log) with open(metrics_file, 'r') as wfh: regex = re.compile(r'(\w+)\s+(\d+)\s+(\d+)\s+(\d+)') for line in wfh: @@ -90,5 +129,5 @@ class GoogleSlides(AndroidUiAutoBenchmark): wd = self.device.working_directory for entry in self.device.listdir(wd): if entry.startswith(self.name) and entry.endswith('.log'): - self.device.pull_file(op.join(wd, entry), context.output_directory) - self.device.delete_file(op.join(wd, entry)) + self.device.pull_file(path.join(wd, entry), context.output_directory) + self.device.delete_file(path.join(wd, entry)) diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index 3a2191510093674f3c8e1ca7ce0071bdaeebb687..456cac32ee9157b5d1db6a4faf92c31137a38a4b 100644 GIT binary patch delta 10836 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 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 1e10758c..b9d5b8b8 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 @@ -1,3 +1,18 @@ +/* Copyright 2014-2016 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.arm.wlauto.uiauto.googleslides; import java.io.File; @@ -22,7 +37,7 @@ import com.arm.wlauto.uiauto.UxPerfUiAutomation; public class UiAutomation extends UxPerfUiAutomation { - public static String TAG = "googleslides"; + public static final String TAG = "googleslides"; public static final String PACKAGE = "com.google.android.apps.docs.editors.slides"; public static final String PACKAGE_ID = PACKAGE + ":id/"; @@ -32,37 +47,47 @@ public class UiAutomation extends UxPerfUiAutomation { public static final String CLASS_IMAGE_BUTTON = "android.widget.ImageButton"; public static final String CLASS_TABLE_ROW = "android.widget.TableRow"; - public Bundle parameters; - private Map results = new LinkedHashMap(); - private boolean dumpsysEnabled; - private String outputDir; - public static final int DOCTYPE_TEMPLATE = 1; public static final int DOCTYPE_PPT = 2; public static final int DOCTYPE_SLIDES = 3; + private Map results = new LinkedHashMap(); + + private Bundle parameters; + private boolean dumpsysEnabled; + private String outputDir; + private String documentName; + private boolean useLocalFiles; + + private static final String[] DEFAULT_DOCS = { "wa_test_Slides_Album.pptx", "wa_test_Slides_Pitch.pptx" }; + + public void parseParams(Bundle parameters) throws Exception { + dumpsysEnabled = Boolean.parseBoolean(parameters.getString("dumpsys_enabled")); + outputDir = parameters.getString("output_dir", "/sdcard/wa-working"); + documentName = parameters.getString("local_files", DEFAULT_DOCS[0]); + useLocalFiles = true; + } + public void runUiAutomation() throws Exception { parameters = getParams(); parseParams(parameters); skipWelcomeScreen(); enablePowerpointCompat(); - if (false) { // TODO currently unused - openFromStorage(); + if (useLocalFiles) { // TODO currently unused + openFromStorage(documentName); + } else { + createNewDoc(DOCTYPE_TEMPLATE); } - createNewDoc(DOCTYPE_TEMPLATE); setWifiStatus(false); tapDisplayNormalised(0.99, 0.99); sleep(5); + getUiDevice().pressBack(); + if (false) { // TODO currently unused writeResultsToFile(results, parameters.getString("results_file")); } } - public void parseParams(Bundle parameters) throws Exception { - dumpsysEnabled = Boolean.parseBoolean(parameters.getString("dumpsys_enabled")); - outputDir = parameters.getString("output_dir", "/sdcard/wa-working"); - } - private void skipWelcomeScreen() throws Exception { UiObject skipButton = getUiObjectByText("Skip", CLASS_BUTTON); skipButton.clickAndWaitForNewWindow(); @@ -79,12 +104,18 @@ public class UiAutomation extends UxPerfUiAutomation { sleep(1); } - private void openFromStorage() throws Exception { + private void openFromStorage(String document) throws Exception { // UiObject newButton = getUiObjectByResourceId(PACKAGE_ID + "menu_open_with_picker", CLASS_TEXT_VIEW); UiObject openButton = getUiObjectByDescription("Open presentation", CLASS_TEXT_VIEW); openButton.click(); openButton = getUiObjectByText("Device storage", CLASS_TEXT_VIEW); openButton.clickAndWaitForNewWindow(); + + UiObject selectDoc = getUiObjectByText(document, CLASS_TEXT_VIEW); + selectDoc.click(); + openButton = getUiObjectByText("Open", CLASS_BUTTON); + openButton.clickAndWaitForNewWindow(); + getUiDevice().pressBack(); sleep(1); } @@ -93,28 +124,33 @@ public class UiAutomation extends UxPerfUiAutomation { // UiObject newButton = getUiObjectByResourceId(PACKAGE_ID + "fab_base_button", CLASS_IMAGE_BUTTON); UiObject newButton = getUiObjectByDescription("New presentation", CLASS_IMAGE_BUTTON); newButton.click(); + // UiObject fromTemplate = getUiObjectByDescription("Choose template", CLASS_IMAGE_BUTTON); + UiObject fromTemplate = getUiObjectByText("Choose template", CLASS_TEXT_VIEW); - UiObject newPowerpoint = getUiObjectByDescription("New PowerPoint", CLASS_IMAGE_BUTTON); - UiObject newSlidesFile = getUiObjectByDescription("New Slides", CLASS_IMAGE_BUTTON); - UiObject fromTemplate = getUiObjectByDescription("Choose template", CLASS_IMAGE_BUTTON); - // UiObject newPowerpoint = getUiObjectByText("New PowerPoint", CLASS_TEXT_VIEW); - // UiObject newSlidesFile = getUiObjectByText("New Slides", CLASS_TEXT_VIEW); - // UiObject fromTemplate = getUiObjectByText("Choose template", CLASS_TEXT_VIEW); + // UiObject newPowerpoint = getUiObjectByDescription("New PowerPoint", CLASS_IMAGE_BUTTON); + // UiObject newSlidesFile = getUiObjectByDescription("New Slides", CLASS_IMAGE_BUTTON); + UiObject newPowerpoint = getUiObjectByText("New PowerPoint", CLASS_TEXT_VIEW); + UiObject newSlidesFile = getUiObjectByText("New Slides", CLASS_TEXT_VIEW); switch (docType) { case DOCTYPE_TEMPLATE: + String[] templateNames = { "Lesson plan", "Book report", " Field trip", "Science project" }; fromTemplate.clickAndWaitForNewWindow(); + // UiObject template = getUiObjectByText(templateNames[1], CLASS_TEXT_VIEW); + UiObject template = new UiObject(new UiSelector().resourceId(PACKAGE_ID + "template_item").instance(2)); + template.clickAndWaitForNewWindow(); break; + case DOCTYPE_PPT: newPowerpoint.clickAndWaitForNewWindow(); break; + case DOCTYPE_SLIDES: default: newSlidesFile.clickAndWaitForNewWindow(); break; } sleep(1); - getUiDevice().pressBack(); } public void uiDeviceEdgeSwipeFromLeft(int steps) { @@ -144,8 +180,8 @@ public class UiAutomation extends UxPerfUiAutomation { + " sleep 1;" + " input keyevent 4;" + "fi"; - // runShellCommand(adbCommand); - runShellCommand("dumpsys wifi | grep curState=ConnectedState"); + runShellCommand(adbCommand); + // runShellCommand("dumpsys wifi | grep curState=ConnectedState"); sleep(1); } From b096c11ec9d7f116969de6fd963115566bddee7c Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Tue, 17 May 2016 14:06:15 +0100 Subject: [PATCH 03/25] Add to google slides workloads - support for creating new PPT - parameterised local files - added helper functions --- wlauto/workloads/googleslides/__init__.py | 24 +-- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 11084 -> 12040 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 148 +++++++++++++----- 3 files changed, 125 insertions(+), 47 deletions(-) diff --git a/wlauto/workloads/googleslides/__init__.py b/wlauto/workloads/googleslides/__init__.py index 205f9e78..183606bb 100644 --- a/wlauto/workloads/googleslides/__init__.py +++ b/wlauto/workloads/googleslides/__init__.py @@ -17,6 +17,7 @@ import os import os.path as path import re from wlauto import AndroidUiAutoBenchmark, Parameter +from wlauto.utils.types import list_of_strings def not_implemented(workload, text): @@ -34,8 +35,9 @@ class GoogleSlides(AndroidUiAutoBenchmark): # Views for FPS instrumentation view = [ - "com.google.android.apps.docs.editors.slides/com.google.android.apps.docs.app.DocListActivity", - "com.google.android.apps.docs.editors.slides/com.google.android.apps.docs.welcome.warmwelcome.TrackingWelcomeActivity", + package + '/com.google.android.apps.docs.app.DocListActivity', + package + '/com.google.android.apps.docs.welcome.warmwelcome.TrackingWelcomeActivity', + package + '/com.google.android.apps.docs.app.NewMainProxyActivity', ] parameters = [ @@ -44,7 +46,8 @@ class GoogleSlides(AndroidUiAutoBenchmark): If ``True``, dumpsys captures will be carried out during the test run. The output is piped to log files which are then pulled from the phone. '''), - Parameter('local_files', kind=bool, default=True, + # Parameter('local_files', kind=list_of_strings, default=['Slides_Album.pptx', 'Slides_Pitch.pptx'], + Parameter('local_files', kind=list_of_strings, description=''' If ``True``, the workload will push PowerPoint files to be used for testing on the device. Otherwise, the files will be created from template inside the app. @@ -59,7 +62,7 @@ class GoogleSlides(AndroidUiAutoBenchmark): def __init__(self, device, **kwargs): super(GoogleSlides, self).__init__(device, **kwargs) self.output_file = path.join(self.device.working_directory, self.instrumentation_log) - self.run_timeout = 60 + self.run_timeout = 120 def validate(self): log_method(self, 'validate') @@ -67,6 +70,8 @@ class GoogleSlides(AndroidUiAutoBenchmark): self.uiauto_params['dumpsys_enabled'] = self.dumpsys_enabled self.uiauto_params['output_dir'] = self.device.working_directory self.uiauto_params['results_file'] = self.output_file + if self.local_files: + self.uiauto_params['local_files'] = '::'.join(self.local_files) def initialize(self, context): log_method(self, 'initialize') @@ -75,12 +80,12 @@ class GoogleSlides(AndroidUiAutoBenchmark): # push local PPT files for entry in os.listdir(self.local_dir): wa_file = self.file_prefix + entry - if entry.endswith(".pptx"): + if entry.endswith('.pptx'): self.device.push_file(path.join(self.local_dir, entry), path.join(self.device_dir, wa_file), timeout=60) # Force a re-index of the mediaserver cache to pick up new files - self.device.execute('am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard') + # self.device.execute('am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard') def setup(self, context): log_method(self, 'setup') @@ -93,8 +98,7 @@ class GoogleSlides(AndroidUiAutoBenchmark): def update_result(self, context): log_method(self, 'update_result') super(GoogleSlides, self).update_result(context) - if self.dumpsys_enabled: - not_implemented(self, 'get_metrics(context)') + not_implemented(self, 'get_metrics(context)') def teardown(self, context): log_method(self, 'teardown') @@ -108,10 +112,10 @@ class GoogleSlides(AndroidUiAutoBenchmark): # delete pushed PPT files for entry in os.listdir(self.local_dir): wa_file = self.file_prefix + entry - if entry.endswith(".pptx"): + if entry.endswith('.pptx'): self.device.delete_file(path.join(self.device_dir, wa_file)) # Force a re-index of the mediaserver cache to pick up new files - self.device.execute('am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard') + # self.device.execute('am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard') def get_metrics(self, context): self.device.pull_file(self.output_file, context.output_directory) diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index 456cac32ee9157b5d1db6a4faf92c31137a38a4b..848b50b9dbc5418316196e9978fc599cd3c9be76 100644 GIT binary patch delta 11799 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 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 b9d5b8b8..0c93057c 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 @@ -23,6 +23,7 @@ import android.app.Activity; import android.content.Context; import android.net.wifi.WifiManager; import android.os.Bundle; +import android.os.SystemClock; import android.util.Log; import android.view.KeyEvent; @@ -51,21 +52,21 @@ public class UiAutomation extends UxPerfUiAutomation { public static final int DOCTYPE_PPT = 2; public static final int DOCTYPE_SLIDES = 3; - private Map results = new LinkedHashMap(); + protected Map results = new LinkedHashMap(); - private Bundle parameters; - private boolean dumpsysEnabled; - private String outputDir; - private String documentName; - private boolean useLocalFiles; - - private static final String[] DEFAULT_DOCS = { "wa_test_Slides_Album.pptx", "wa_test_Slides_Pitch.pptx" }; + protected Bundle parameters; + protected boolean dumpsysEnabled; + protected String outputDir; + protected String[] documents; + protected boolean useLocalFiles; + protected String resultsFile; public void parseParams(Bundle parameters) throws Exception { dumpsysEnabled = Boolean.parseBoolean(parameters.getString("dumpsys_enabled")); - outputDir = parameters.getString("output_dir", "/sdcard/wa-working"); - documentName = parameters.getString("local_files", DEFAULT_DOCS[0]); - useLocalFiles = true; + outputDir = parameters.getString("output_dir"); + resultsFile = parameters.getString("results_file"); + documents = parameters.getString("local_files", "::").split("::"); + useLocalFiles = documents.length != 0; } public void runUiAutomation() throws Exception { @@ -73,28 +74,31 @@ public class UiAutomation extends UxPerfUiAutomation { parseParams(parameters); skipWelcomeScreen(); enablePowerpointCompat(); - if (useLocalFiles) { // TODO currently unused - openFromStorage(documentName); + if (useLocalFiles) { + openFromStorage(documents[0]); } else { - createNewDoc(DOCTYPE_TEMPLATE); + // createNewDoc(DOCTYPE_TEMPLATE); + createNewDoc(DOCTYPE_PPT); } - setWifiStatus(false); - tapDisplayNormalised(0.99, 0.99); + + // toggleWifiState(false); + // tapDisplayNormalised(0.99, 0.99); // dismiss help overlay sleep(5); getUiDevice().pressBack(); + deleteDocument(); if (false) { // TODO currently unused writeResultsToFile(results, parameters.getString("results_file")); } } - private void skipWelcomeScreen() throws Exception { + protected void skipWelcomeScreen() throws Exception { UiObject skipButton = getUiObjectByText("Skip", CLASS_BUTTON); skipButton.clickAndWaitForNewWindow(); sleep(1); } - private void enablePowerpointCompat() throws Exception { + protected void enablePowerpointCompat() throws Exception { uiDeviceEdgeSwipeFromLeft(10); UiObject settings = getUiObjectByText("Settings", CLASS_TEXT_VIEW); settings.clickAndWaitForNewWindow(); @@ -104,7 +108,7 @@ public class UiAutomation extends UxPerfUiAutomation { sleep(1); } - private void openFromStorage(String document) throws Exception { + protected void openFromStorage(String document) throws Exception { // UiObject newButton = getUiObjectByResourceId(PACKAGE_ID + "menu_open_with_picker", CLASS_TEXT_VIEW); UiObject openButton = getUiObjectByDescription("Open presentation", CLASS_TEXT_VIEW); openButton.click(); @@ -120,11 +124,9 @@ public class UiAutomation extends UxPerfUiAutomation { sleep(1); } - private void createNewDoc(int docType) throws Exception { - // UiObject newButton = getUiObjectByResourceId(PACKAGE_ID + "fab_base_button", CLASS_IMAGE_BUTTON); + protected void createNewDoc(int docType) throws Exception { UiObject newButton = getUiObjectByDescription("New presentation", CLASS_IMAGE_BUTTON); newButton.click(); - // UiObject fromTemplate = getUiObjectByDescription("Choose template", CLASS_IMAGE_BUTTON); UiObject fromTemplate = getUiObjectByText("Choose template", CLASS_TEXT_VIEW); // UiObject newPowerpoint = getUiObjectByDescription("New PowerPoint", CLASS_IMAGE_BUTTON); @@ -143,6 +145,22 @@ public class UiAutomation extends UxPerfUiAutomation { case DOCTYPE_PPT: newPowerpoint.clickAndWaitForNewWindow(); + enterTextInSlide("Title", "WORKLOAD AUTOMATION"); + enterTextInSlide("Subtitle", "Measuring perfomance of different productivity apps on Android OS"); + UiObject view = getViewByDesc("Insert slide"); + view.clickAndWaitForNewWindow(); + view = getViewByText("Title and Content"); + view.clickAndWaitForNewWindow(); + enterTextInSlide("title", "INTRODUCTION"); + enterTextInSlide("Text placeholder", "Welcome to Documentation for Workload Automation"); + view = getViewByDesc("Undo"); + view.click(); + sleep(1); + enterTextInSlide("Text placeholder", "Workload Automation (WA) is a framework for running workloads on real hardware devices. " + + "WA supports a number of output formats as well as additional instrumentation " + + "(such as Streamline traces). A number of workloads are included with the framework."); + view = getViewByDesc("Done"); + view.clickAndWaitForNewWindow(); break; case DOCTYPE_SLIDES: @@ -153,6 +171,54 @@ public class UiAutomation extends UxPerfUiAutomation { sleep(1); } + public UiObject enterTextInSlide(String viewName, String textToEnter) throws Exception { + UiObject view = getViewByDesc(viewName); + view.click(); + SystemClock.sleep(100); + view.click(); // double click + view.setText(textToEnter); + getUiDevice().pressBack(); + return view; + } + + public void deleteDocument() throws Exception { + UiObject moreOptions = getUiObjectByResourceId(PACKAGE_ID + "more_actions_button", CLASS_IMAGE_BUTTON); + moreOptions.click(); + UiObject deleteButton = getUiObjectByText("Remove", CLASS_TEXT_VIEW); + deleteButton.click(); + try { + deleteButton = getUiObjectByText("Remove", CLASS_BUTTON); + } catch (UiObjectNotFoundException e) { + deleteButton = getUiObjectByText("Ok", CLASS_BUTTON); + } + deleteButton.clickAndWaitForNewWindow(); + sleep(1); + } + + public UiObject getViewByText(String text) throws Exception { + UiObject object = new UiObject(new UiSelector().textContains(text)); + if (!object.waitForExists(waitTimeout)) { + throw new UiObjectNotFoundException("Could not find view with text: " + text); + }; + return object; + } + + public UiObject getViewByDesc(String desc) throws Exception { + UiObject object = new UiObject(new UiSelector().descriptionContains(desc)); + if (!object.waitForExists(waitTimeout)) { + throw new UiObjectNotFoundException("Could not find view with description: " + desc); + }; + return object; + } + + public UiObject getViewById(String id) throws Exception { + UiObject object = new UiObject(new UiSelector().resourceId(id)); + if (!object.waitForExists(waitTimeout)) { + throw new UiObjectNotFoundException("Could not find view with resource ID: " + id); + }; + return object; + } + public void uiDeviceEdgeSwipeFromLeft(int steps) { int height = getDisplayHeight(); int width = getDisplayWidth(); @@ -167,25 +233,33 @@ public class UiAutomation extends UxPerfUiAutomation { getUiDevice().click(tapX, tapY); } - public void setWifiStatus(boolean flag) throws Exception { + public void toggleWifiState(boolean flag) throws Exception { + int exitValue = -1; // To enable, check for "UninitializedState" - String checkFor = flag ? "UninitializedState" : "ConnectedState"; - String adbCommand = - "dumpsys wifi | grep curState=" + checkFor + ";" - + "exit_code=$?;" - + "if [ $exit_code = 0 ]; then" - + " am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings;" - + " input keyevent 20;" - + " input keyevent 23;" - + " sleep 1;" - + " input keyevent 4;" - + "fi"; - runShellCommand(adbCommand); - // runShellCommand("dumpsys wifi | grep curState=ConnectedState"); + // String checkFor = flag ? "UninitializedState" : "ConnectedState"; + // exitValue = runShellCommand("dumpsys wifi | grep curState=" + checkFor); + // if (0 == exitValue) { // toggle state + String statusString = flag ? "ConnectedState" : "UninitializedState"; + exitValue = runShellCommand("dumpsys wifi | grep curState=" + statusString); + if (0 != exitValue) { // not in the expected so toggle it + String[] adbCommands = { + "am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings;", + "input keyevent 20;", + "input keyevent 23;", + "sleep 1;", + "input keyevent 4;", + }; + for (String command : adbCommands) { + exitValue = runShellCommand(command); + } + } sleep(1); } - public void runShellCommand(String command) throws Exception { + public int runShellCommand(String command) throws Exception { Process proc = Runtime.getRuntime().exec(command); + Log.d(TAG, String.format("Command:\n%s\nExit value:%d\n", command, proc.exitValue())); + proc.waitFor(); + return proc.exitValue(); } } From 9c2b83881ffa2ad4f8dddcb061d31fa085db5c36 Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Tue, 17 May 2016 19:44:27 +0100 Subject: [PATCH 04/25] Add save document function --- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 12040 -> 12997 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 59 +++++++++++++----- 2 files changed, 43 insertions(+), 16 deletions(-) diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index 848b50b9dbc5418316196e9978fc599cd3c9be76..0bd0e88b197e680287d83a386af9001bd3e913b0 100644 GIT binary patch delta 12777 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≀RJb=s#JCZq7ohZ3gG)~@+m|Z)c0>FX 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 results = new LinkedHashMap(); @@ -77,15 +79,13 @@ public class UiAutomation extends UxPerfUiAutomation { if (useLocalFiles) { openFromStorage(documents[0]); } else { - // createNewDoc(DOCTYPE_TEMPLATE); - createNewDoc(DOCTYPE_PPT); + // createNewDoc(DOCTYPE_TEMPLATE, DOC_FILENAME); + createNewDoc(DOCTYPE_PPT, DOC_FILENAME); } // toggleWifiState(false); // tapDisplayNormalised(0.99, 0.99); // dismiss help overlay - sleep(5); - getUiDevice().pressBack(); - deleteDocument(); + deleteDocument(DOC_FILENAME); if (false) { // TODO currently unused writeResultsToFile(results, parameters.getString("results_file")); @@ -124,7 +124,7 @@ public class UiAutomation extends UxPerfUiAutomation { sleep(1); } - protected void createNewDoc(int docType) throws Exception { + protected void createNewDoc(int docType, String docName) throws Exception { UiObject newButton = getUiObjectByDescription("New presentation", CLASS_IMAGE_BUTTON); newButton.click(); UiObject fromTemplate = getUiObjectByText("Choose template", CLASS_TEXT_VIEW); @@ -133,6 +133,7 @@ public class UiAutomation extends UxPerfUiAutomation { // UiObject newSlidesFile = getUiObjectByDescription("New Slides", CLASS_IMAGE_BUTTON); UiObject newPowerpoint = getUiObjectByText("New PowerPoint", CLASS_TEXT_VIEW); UiObject newSlidesFile = getUiObjectByText("New Slides", CLASS_TEXT_VIEW); + UiObject view; switch (docType) { case DOCTYPE_TEMPLATE: @@ -147,20 +148,18 @@ public class UiAutomation extends UxPerfUiAutomation { newPowerpoint.clickAndWaitForNewWindow(); enterTextInSlide("Title", "WORKLOAD AUTOMATION"); enterTextInSlide("Subtitle", "Measuring perfomance of different productivity apps on Android OS"); - UiObject view = getViewByDesc("Insert slide"); - view.clickAndWaitForNewWindow(); - view = getViewByText("Title and Content"); - view.clickAndWaitForNewWindow(); + saveDocument(docName); + insertSlide("Title and Content"); enterTextInSlide("title", "INTRODUCTION"); enterTextInSlide("Text placeholder", "Welcome to Documentation for Workload Automation"); view = getViewByDesc("Undo"); view.click(); - sleep(1); enterTextInSlide("Text placeholder", "Workload Automation (WA) is a framework for running workloads on real hardware devices. " + "WA supports a number of output formats as well as additional instrumentation " + "(such as Streamline traces). A number of workloads are included with the framework."); - view = getViewByDesc("Done"); - view.clickAndWaitForNewWindow(); + // view = getViewByDesc("Done"); + // view = getViewByDesc("Navigate up"); + // view.clickAndWaitForNewWindow(); break; case DOCTYPE_SLIDES: @@ -169,6 +168,33 @@ public class UiAutomation extends UxPerfUiAutomation { break; } sleep(1); + getUiDevice().pressBack(); + } + + public void insertSlide(String slideLayout) throws Exception { + UiObject view = getViewByDesc("Insert slide"); + view.clickAndWaitForNewWindow(); + view = getViewByText(slideLayout); + view.clickAndWaitForNewWindow(); + } + + public void saveDocument(String docName) throws Exception { + UiObject saveButton = getViewByText("SAVE"); + saveButton.click(); + saveButton = getViewByText("Save on Device"); + saveButton.click(); + UiObject filename = getViewById(PACKAGE_ID + "file_name_edit_text"); + filename.clearTextField(); + filename.setText(docName); + saveButton = getUiObjectByText("Save", CLASS_BUTTON); + saveButton.click(); + // Overwrite if prompted + UiObject overwriteView = new UiObject(new UiSelector().textContains("already exists")); + if (overwriteView.waitForExists(1000)) { + saveButton = getViewByText("Overwrite"); + saveButton.click(); + } + sleep(1); } public UiObject enterTextInSlide(String viewName, String textToEnter) throws Exception { @@ -178,12 +204,13 @@ public class UiAutomation extends UxPerfUiAutomation { view.click(); // double click view.setText(textToEnter); getUiDevice().pressBack(); + sleep(1); return view; } - public void deleteDocument() throws Exception { - UiObject moreOptions = getUiObjectByResourceId(PACKAGE_ID + "more_actions_button", CLASS_IMAGE_BUTTON); - moreOptions.click(); + public void deleteDocument(String docName) throws Exception { + UiObject doc = getViewByText(docName); + doc.longClick(); UiObject deleteButton = getUiObjectByText("Remove", CLASS_TEXT_VIEW); deleteButton.click(); try { From 7f9a16ba756ae07162836a44108623c04c902fe5 Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Wed, 18 May 2016 16:07:15 +0100 Subject: [PATCH 05/25] More Slides actions - Insert photo, shape, text formatting - Helper functions --- wlauto/workloads/googleslides/__init__.py | 3 +- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 12997 -> 13862 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 135 +++++++++++++++--- 3 files changed, 120 insertions(+), 18 deletions(-) diff --git a/wlauto/workloads/googleslides/__init__.py b/wlauto/workloads/googleslides/__init__.py index 183606bb..6b55bda5 100644 --- a/wlauto/workloads/googleslides/__init__.py +++ b/wlauto/workloads/googleslides/__init__.py @@ -62,7 +62,7 @@ class GoogleSlides(AndroidUiAutoBenchmark): def __init__(self, device, **kwargs): super(GoogleSlides, self).__init__(device, **kwargs) self.output_file = path.join(self.device.working_directory, self.instrumentation_log) - self.run_timeout = 120 + self.run_timeout = 300 def validate(self): log_method(self, 'validate') @@ -104,6 +104,7 @@ class GoogleSlides(AndroidUiAutoBenchmark): log_method(self, 'teardown') super(GoogleSlides, self).teardown(context) not_implemented(self, 'pull_logs(context)') + self.device.execute('am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard') def finalize(self, context): log_method(self, 'finalize') diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index 0bd0e88b197e680287d83a386af9001bd3e913b0..2e83b06c088aa7e944503789f72d72c1dbb5a720 100644 GIT binary patch delta 13652 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≀RJb=s#JCZq7ohZ3gG)~@+kclT`*uV86*J=LYw0?}_^Sai4&TG! z+n9gIq(2*_*E)%AGE7b%#r?9dr>02<%#v!u|3I}7o7jy1jQ9ogBjI?(WC1x(mB{{+ zs>ki8L%f9lS=J-R&AQJp=oZ6~cfeeEK2-8u)A=W3iYUl+IKFJ0bgqb)nNOM}umxW; z9e-HSw;PTo)40-bh*>_2sRLu}ab{N2OiXCQUq$A=>)kDT<6GdUJ>3rC1S&qs~$3v#K1;sh5hlZ-R3=Kt0*DF}pM*ju$ zk`R|DgL*Lv#E_k9c$Z&X-DsRKaT3qMY=7!T;0v+!0AHPW-f_=WkXG(^N@ zZK-DNAA~p`rTvGt=i_|zo)AAC$$4E!W0S`Dh7dQiaaScZ@+|tIA?ME@xJ}C=rns6b zUyd4T)g0Kr|C9X_=te_)q$b*V=0Y(cx0)K+5TGrMmu@$9PoxJ`?;@sg1qz5%qkoFq zP$Y`_#1!wL`pEJ|I*nuzU*WoWz&>AYG{hYk zgHqG@nqfAY=AGDsigV|RK%q&$5iMIxG-^qMvAYUWUcf-)RJqJ*`cUmJ808;vF8AxE z`3@NY@se4RXN)&~C8l|NuN#w8aDUv&*Nx&^jfqH|;3$q1XBW2=`&3jEyNn4kP~tNt zsesoG%vJ@Kq?Ix|y_Azt3MV-PQp(e$D$=Few3JHva(YsGdI9&UhB!+KN{UO0N(xKz zm8i4WS^Rkj?=H?$40np*D?Y8*t(YD#_ethPuy@<+G^V%s_2M^*-z@%Z@qh0ehQoA- z;zPxMFaBUjqu}3#5(lmM7w&W1Q6WF4yxtPm?GrXCk?_QPan3%+eU(PW;YyM5b|sA4 zc$Zjm_CCku3zmvU7YOkhaKl0&9tBKX(`q(VQo4`X`9OA%Mhd8)RhvI0I3g iv6G}VKMqlyu}Dfl-&Gkg002N}lkqh#2Kg}n0001|Xc;B| 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 982a5147..ebd0737f 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,26 @@ public class UiAutomation extends UxPerfUiAutomation { public static final String DOC_FILENAME = "UX Perf Slides"; // public static final String DOC_FILENAME = "Untitled Presentation"; + public static final int BY_ID = 1; + public static final int BY_TEXT = 2; + public static final int BY_DESC = 3; + + public static final String DOCUMENTATION_WORKLOADS = + "class Workload(Extension):\n\tname = None\n\tdef init_resources(self, context):\n\t\tpass\n" + + "\tdef validate(self):\n\t\tpass\n\tdef initialize(self, context):\n\t\tpass\n" + + "\tdef setup(self, context):\n\t\tpass\n\tdef setup(self, context):\n\t\tpass\n" + + "\tdef run(self, context):\n\t\tpass\n\tdef update_result(self, context):\n\t\tpass\n" + + "\tdef teardown(self, context):\n\t\tpass\n\tdef finalize(self, context):\n\t\tpass\n"; + + public static final String DOCUMENTATION_AGENDAS_1 = "An agenda specifies what is to be done during a Workload Automation run, " + + "including which workloads will be run, with what configuration, which instruments and result processors will be enabled, etc. " + + "Agenda syntax is designed to be both succinct and expressive. Agendas are specified using YAML notation."; + + public static final String DOCUMENTATION_AGENDAS_2 = + "Use agendas for:\n\tSpecifying which workloads to run\n\t\t- Multiple iterations\n\t\t- Configuring workloads\n\t" + + "\t- IDs and Labels\n\tResult Processors and Instrumentation\n\t\t- Result Processors\n\t\t- Instrumentation\n\t" + + "\t- Disabling result processors and instrumentation\n\tOther Configuration (via config.py)\n"; + protected Map results = new LinkedHashMap(); protected Bundle parameters; @@ -127,17 +147,11 @@ public class UiAutomation extends UxPerfUiAutomation { protected void createNewDoc(int docType, String docName) throws Exception { UiObject newButton = getUiObjectByDescription("New presentation", CLASS_IMAGE_BUTTON); newButton.click(); - UiObject fromTemplate = getUiObjectByText("Choose template", CLASS_TEXT_VIEW); - - // UiObject newPowerpoint = getUiObjectByDescription("New PowerPoint", CLASS_IMAGE_BUTTON); - // UiObject newSlidesFile = getUiObjectByDescription("New Slides", CLASS_IMAGE_BUTTON); - UiObject newPowerpoint = getUiObjectByText("New PowerPoint", CLASS_TEXT_VIEW); - UiObject newSlidesFile = getUiObjectByText("New Slides", CLASS_TEXT_VIEW); UiObject view; - switch (docType) { case DOCTYPE_TEMPLATE: String[] templateNames = { "Lesson plan", "Book report", " Field trip", "Science project" }; + UiObject fromTemplate = getUiObjectByText("Choose template", CLASS_TEXT_VIEW); fromTemplate.clickAndWaitForNewWindow(); // UiObject template = getUiObjectByText(templateNames[1], CLASS_TEXT_VIEW); UiObject template = new UiObject(new UiSelector().resourceId(PACKAGE_ID + "template_item").instance(2)); @@ -145,18 +159,63 @@ public class UiAutomation extends UxPerfUiAutomation { break; case DOCTYPE_PPT: + // UiObject newPowerpoint = getUiObjectByDescription("New PowerPoint", CLASS_IMAGE_BUTTON); + UiObject newPowerpoint = getUiObjectByText("New PowerPoint", CLASS_TEXT_VIEW); newPowerpoint.clickAndWaitForNewWindow(); enterTextInSlide("Title", "WORKLOAD AUTOMATION"); enterTextInSlide("Subtitle", "Measuring perfomance of different productivity apps on Android OS"); saveDocument(docName); +/* insertSlide("Title and Content"); - enterTextInSlide("title", "INTRODUCTION"); + enterTextInSlide("title", "Introduction"); enterTextInSlide("Text placeholder", "Welcome to Documentation for Workload Automation"); view = getViewByDesc("Undo"); view.click(); enterTextInSlide("Text placeholder", "Workload Automation (WA) is a framework for running workloads on real hardware devices. " + "WA supports a number of output formats as well as additional instrumentation " + "(such as Streamline traces). A number of workloads are included with the framework."); + + insertSlide("Title and Content"); + enterTextInSlide("title", "Extensions - Workloads"); + enterTextInSlide("Text placeholder", DOCUMENTATION_WORKLOADS); + clickView(BY_DESC, "Text placeholder"); + clickView(BY_DESC, "Format"); + clickView(BY_TEXT, "Droid Sans"); + clickView(BY_TEXT, "Droid Sans Mono"); + clickView(BY_ID, PACKAGE_ID + "palette_back_button"); + view = getViewByDesc("Decrease text"); + repeatClickView(view, 20); + getUiDevice().pressBack(); + + insertSlide("Title and Content"); + enterTextInSlide("title", "Agendas - 1"); + enterTextInSlide("Text placeholder", DOCUMENTATION_AGENDAS_1); + + insertSlide("Title and Content"); + enterTextInSlide("title", "Agendas - 2"); + enterTextInSlide("Text placeholder", DOCUMENTATION_AGENDAS_2); +*/ + + // get first image in gallery and insert + insertSlide("Title Only"); + clickView(BY_DESC, "Insert"); + clickView(BY_TEXT, "Image", true); + clickView(BY_TEXT, "Recent"); + clickView(BY_ID, "com.android.documentsui:id/date", true); + + // last slide + insertSlide("Title Slide"); + // insert "?" shape + clickView(BY_DESC, "Insert"); + clickView(BY_TEXT, "Shape"); + clickView(BY_TEXT, "Buttons"); + clickView(BY_DESC, "actionButtonHelp"); + UiObject resize = getViewByDesc("Bottom-left resize"); + UiObject shape = getViewByDesc("actionButtonHelp"); + UiObject subtitle = getViewByDesc("subTitle"); + resize.dragTo(subtitle, 40); + shape.dragTo(subtitle, 40); + enterTextInSlide("title", "THE END. QUESTIONS?"); // view = getViewByDesc("Done"); // view = getViewByDesc("Navigate up"); // view.clickAndWaitForNewWindow(); @@ -164,6 +223,8 @@ public class UiAutomation extends UxPerfUiAutomation { case DOCTYPE_SLIDES: default: + // UiObject newSlidesFile = getUiObjectByDescription("New Slides", CLASS_IMAGE_BUTTON); + UiObject newSlidesFile = getUiObjectByText("New Slides", CLASS_TEXT_VIEW); newSlidesFile.clickAndWaitForNewWindow(); break; } @@ -179,20 +240,22 @@ public class UiAutomation extends UxPerfUiAutomation { } public void saveDocument(String docName) throws Exception { - UiObject saveButton = getViewByText("SAVE"); - saveButton.click(); - saveButton = getViewByText("Save on Device"); - saveButton.click(); + clickView(BY_TEXT, "SAVE"); + clickView(BY_TEXT, "Device"); + // Allow SD card access if requested + UiObject permissionView = new UiObject(new UiSelector().textContains("Allow Slides")); + if (permissionView.waitForExists(1000)) { + clickView(BY_TEXT, "Allow"); + } UiObject filename = getViewById(PACKAGE_ID + "file_name_edit_text"); filename.clearTextField(); filename.setText(docName); - saveButton = getUiObjectByText("Save", CLASS_BUTTON); + UiObject saveButton = getUiObjectByText("Save", CLASS_BUTTON); saveButton.click(); // Overwrite if prompted UiObject overwriteView = new UiObject(new UiSelector().textContains("already exists")); if (overwriteView.waitForExists(1000)) { - saveButton = getViewByText("Overwrite"); - saveButton.click(); + clickView(BY_TEXT, "Overwrite"); } sleep(1); } @@ -200,11 +263,11 @@ public class UiAutomation extends UxPerfUiAutomation { public UiObject enterTextInSlide(String viewName, String textToEnter) throws Exception { UiObject view = getViewByDesc(viewName); view.click(); - SystemClock.sleep(100); + sleepMicro(100); view.click(); // double click view.setText(textToEnter); getUiDevice().pressBack(); - sleep(1); + sleepMicro(200); return view; } @@ -222,6 +285,44 @@ public class UiAutomation extends UxPerfUiAutomation { sleep(1); } + public void sleepMicro(int microseconds) { + SystemClock.sleep(microseconds); + } + + public void repeatClickView(UiObject view, int repeat) throws Exception { + if (repeat < 1 || !view.isClickable()) return; + while (repeat-- > 0) { + view.click(); + sleepMicro(10); // in order to register as separate + } + } + + public UiObject clickView(int criteria, String matching) throws Exception { + return clickView(criteria, matching, false); + } + + public UiObject clickView(int criteria, String matching, boolean wait) throws Exception { + UiObject view; + switch (criteria) { + case BY_ID: + view = getViewById(matching); + break; + case BY_DESC: + view = getViewByDesc(matching); + break; + case BY_TEXT: + default: + view = getViewByText(matching); + break; + } + if (wait) { + view.clickAndWaitForNewWindow(); + } else { + view.click(); + } + return view; + } + public UiObject getViewByText(String text) throws Exception { UiObject object = new UiObject(new UiSelector().textContains(text)); if (!object.waitForExists(waitTimeout)) { From ec095d4176658e27e2a7c0c8db82b4d3ba54a053 Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Thu, 19 May 2016 10:01:07 +0100 Subject: [PATCH 06/25] Minor updates and some cleanup --- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 13862 -> 14222 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 17 ++++------------- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index 2e83b06c088aa7e944503789f72d72c1dbb5a720..74c13ac285876739d66371ab5f25676b1209c510 100644 GIT binary patch delta 13992 zcmV;ZHdo1}Y>saYP)h>@3IG5I002`?vylxb15!@2kvNGCQ%CB`}0NJ5zBC-}iMOmZ> zTA&~z0tyJSi7bkOelA53Q3?X0g8YBy-aC^?nj(D5zv=Itd(S<0J9j(hzL}&iFp^od zU=cn0!gX{1@{4nG?*5uLYCYNT)7^jm)qk7st$uXz3o)W75shqE=q3Hn0(*azGPJO;b~ybSyaIINCn7BCxF2($pl10i4-I2*Vc*aO@LJbwwi z0=y4o)Dx8hYk?SWIdC(u2e=)$6L=8#3GiFspFlwa(J{a>U=`2-Yy<{?7;qZ!1>hdw z8Q`bD>%iN9qmjr96ai(xG@u+f3YZ711loX3pc~i-dpEb^zA{&j8jMqB`JYU@!1HAh(&Q76<_60=EE< z0lxHsEyNN?jpkf2&Gq4#L1}*`<0o(GAPk%eoC{nH+z8wcJP*7Iya$+{!8iib zfZ4zTUL%1K=6pdEi&TYrs2zc_L9ZPzD?hR07q&8sIo!GY|l_1Ai9**8(>J-vYi1{1A8= z_%*N}_zUnM;PMmY0Y$)6U=FYdSPnD;>wqo55O5ms1>jm>4{$f|ec*B6Ip7b#hk$o0 z^Z?8Qs)0J79qk6Ff!_hI0q+53ALckv02~I)0%imAff}F**a*acbAjE!ZNP)T zv%ssszku8T(F|ZIPzQ7aA>b6?EZ`#Ga^M=^24D|xC-4K{1>iTp>%iXuXFtXjuz{n1 zDxd*a4a_EGZ{R2<92JCZfUxul%at~>9RgrFOWOp~gnuxkgdrfPj?i5~QwdcNilPBv z5C{S%0o#BOFa(5w2q}AKI{@>C62LI91K7#-5ikmz44eX-3VaSY4LAch6F3Vv8#o6z z7dQ{t1)L9D09*)M1Y8V!9=HVf0&pqtMc^{v3gBws8sJ*sI^fH|SAeeqKLcI^4ghZf zZv%g0+kXsr7kCdihSWbB%B$4jiWN$ahK@Jra25ECI=pm+(zB^$T6K68_&8?Cq4^wk zrG+zf7{{2j2iHLUI34apxJ!q*uJt;+RF|2f^LFU)30gi!%X8S17A{B&7o~-Zbr{DA z!5pPNgg5GN6ya_iK2_H{Q`gIRkKi%WZ9AIBXMcriPo-`Tj#8SFrib}yeP57P&Vsb| zEab7&@{7{s7pKWDPSeR^t&?QG=77Y=Q-1;`9IfT zo)0hSFqi)e9lj0WU+OTAzST)J{hrXnp|l@?x_7G9Mulh(F1E63W?xpJ&u z$ESstruFf}v~sRU(?cjtKCyC4{#1nb>+tz$c`se5)^U>_mp|z+kHzac%wzFq9o`N3 zH*}cC;!PdC1^mD2Fzfj*I?OsrhR;dk-+!CNPtK(^x(ys|P7AM13%BTSmyUB@Cw7gy z5zeF4B#77P8o6J1@YAm8*EGEYG#{y%*l4_v=l!MtwV9F@$Th;WUDK~?dWWV@ffj;x z2&P5UDXBr%N?J@e==gJzmeQXD?+GD#QHG)<>#YHK<}({e38N7K2QR_XM4 zn$FjBfu;*Jy{V*CEcm{cWJqQORC1H7C-k8pBwe` z9Z(Cc$|F7p3~~uYGc*lrnq%ztHrTn!c>-a~g_ffo4;kY=2)4+NY?8 zvV@{XNSa4Gb^H!Z_iOs9q~-Ki&|IBASL-zo@m#silC)l?d!W}#1k-$ZzNewzq({-A5Y1%Dm2Av?Oo3=`tL%o{zX&R7p89gNF9NE5n=<5|p=hCl) zs`uAA{Vh%3*7R?hzANbxdVf#Tzw3M-O4>j!*^fn(A?adG>&Pu>y{6riE%zIxmx2^k z`YF)*DS!m)rvR2E>!*-vWO^Y^);zgisC-2_UlCg&2Gh+_zF4Oh>-1t+9?J#OLMc}a zOO@qHaBAntedQQhEcX!yt=DverY8!O{-oSj)HpFcOvamOm86YSD}U)~s*`jLMJ27H z?UFW8Ow#%El%xyjX-%J(bRoSUsnUO`)_z0AP4FuxpLjiPm$qD6wKlAncrnfXUz-CTqC zQApV=*fv%3>uB=Hc{N+-pN)Js3%2`Jypj%+>2qj`q;qv%>qTQuc7>~tjUd}y2AhrzukqT=k2 zFc8^UNE72PT!04tvbC>m!F>h zaio7yrx#6<|0Se1Nqv{uV(h^Ts*HxyCj2t3#JleEdUW7hJ?J_B=iH3gBjl_4Ay z_AEvyQ-659Ed~k2wZ^#RV_b8LJD<6^*xxGt4ZH>HXS+$+D20+*(uU09R*0(EqN-9< z%~ifRx2==!P) z2{O3VpeDBy6cPqzwkdxwXZzVMgpXad7d7M}O@BzeozSn^Jq4w2x9`9+8}0U_)&`?j z%WP%)(en$b$LXk=W)}6Va>}--I>Y_yE@C@9 zEX(qV(?!_+A!^OVNn*+J68&oahpS2{;L3!>m=6uG>?7ngW|p_2wU1&nvqjXdK+Ypc z^?!-mdq%&y_XvAd@My7bZ17%@Og}G`zH-v^i~G4%oL-Cgb{Wn_jN6=vT_-7b*&*bz zv|NVP{cb(h<(LiSA_qD;3i4rlHu=&1uzfV=ML!DBkFIr2^!W&AEmIsTN+6Fu8%L0L z=FA1H~Lt9s2mlOk2~$q<~+Ezo+r=`pOIu>E5?m$Dr`XQm7X5Dt5uKuWeFT6GJ}a)fO!EQ(As&&(lj zLB)qW52y1S6!T_VdJMb+s=X8DVwD@3&Xs$PTBlP7l5=)BT8tV!HB3dgYK`nk24YU6 z&w||Hx;$sv++L0tq>&5M(A0d{G=Gh~^L47Jxz@{;Wr*Q~GoRGnkSu%te<)j0<7LAz z_RbiqX?d!qWciboz3OAjepv`(Vu_l{*6ywUxU$`#*at-!CR6vzZntsPHII+(x@PZ{Q7l~HC^tTd z^c_;#aFm+|OTXlB6mqKRD7Pj}eS=dihik8RG~t{kd!Fq3&Ho?zo^0RbeNDD+^1dBP zZI6w#%EaET=v*GkosTBipk z2;D`Q8A~(X`^f8EYWR@)J(QQsw=AO=wbYT%{V;jmGp|u6@U^nOpMRmgBQuh9RXoXO zz1lAq4U!z=0y^FZS9M`0&qZAAS<462yQAkic`xNt!4iDZ&y**9xllW#!1?eKxij)< zANKgTk62+@jZL7&mK-yY66H75F*uMABx>(Kc(Qwpm@$=U^Llk+xwS zqN-L@)r+b|QMFoBHM_JOJ36S|KY5$Hi;}i%0nXp2U}#d?Pk~`n+sLGO~srm={tOHaJ=tO1U)^0 zo}DQ5ja4c+Pbv=dU7|VPRvhTNNcs+Iq03^e%Mz{2BJDdArs?jXL+I|Yl6-=uesM z&tbYhKHZh{*x$8ma_{U}HI=#;b<^m6yJyuD?Kkni4+fRKy6h?PZX?MT!6bj` zIKDH*pMN%vpA}R#Y^qMA=hB!jmmgGjAyLn<=+hM0({Ib3Zuk6L(#@;vNqoE+x?fyI zX;9fp<9!03Q7HWa-m!hghs1m9j4|J!Zbr&CSSm7fycF?@zj6C`SG7>yktq9qo-dXc zC(=TB8nxlPdl08k*nWs!LVJIJwVLfJca(#_hkss08*oOt)fovJJd@AJJ@SnFqC5q0 zb~u+hk3jx!!UFfXPZ8TaPhq69-ORa?D*l>dx;(D#?jNJ)najzS^-~J3dWrT_FSYm% z;Wo64@5jQP8%TK>51^i~=YBjh-Amn-sC_n-XR0$T6Zvc8nRXxAqNTFJ_TxJK1SGhP zcYmUdN4j&|T=Qi09O+)_P+SKs74s!m5KC7)n1eI&F3h`%cakB=zbnPxGfC+Aw2-^v zG1S~$@kowYaV~n_U2&Ey;WAz;g=EY5ol8eZugi;iml3axsq($4iG6>qr1|n);Soq5 zmGL6^Squ~F`W#6e@-r7Ea%P@Bdr3mf{(piHv#$WI1+E8f0&W%bZE^bSeS)9&h&!<7 ztF_#7l6r^lUF<#FTj(|UUcSI6riC*OBX8}@{5H(FxuVSwrq9^M)N0ER4xiD=Vdr+w z)5_|qijvEnOEdkG%O~Y3-f-*ti5(}A?621fi4b$Wr z!x}JWE>LTrO0I#ZTmvL)en8#?<%sTH%v}p}*YT{JyY)pC{81D+cF=J_ruMJzJ4t<3 z!MplktxhNJag%D*J*HKk@olEAlz(>ZxIBwzZa-AMZ;u;|iq}ZqEpS_2_&?UOdon$v zy$(_~EVtpnNop_m(R{(aydif&euJBdwU`C|l_`GMPM{CDl=RF0`DyZ24U;g(Y)j`h zlJA{;Lgg($UpOyYbxQ@G^D~fkc`A)>3p|!jT$$p8tF~iwbETbP$urOQ-+w97F|N#2 zF^q;PQ;kv8Hud?ha#$Ksdyr?Khd-~iRk)-TYQZaRfag71*u&$`C-BT&_~B1`gk~eTJB>x zQ}l5rQ}l5b)Bi>vc?>W7q<@4I|a&o=Xw%hlxSF2)kIJP4hTfwpUI>xK} z70S*I+uxu^sp7t{=VrNT$L?`o-==gJ^@I^GhrJT@Jj*tjXQ`C4q&-3O_BQ1odZDph zG{ekBFCBW^KiH-|cYik9n8M>~U%@wdwAAvTXC-=!FPFTE_rmsND)d&^!)v~RKlG>X z5_3q|V&0S;gE0(|d|&Ew-$=g9e`8KwO4ntwFI$W}vvZDkxWF_%hd~WPb?RKYyfR&k?u!I(fTNj1gDq ze@vy1FJ<|-Qux-8W8PzZnLk9zc{;o*89vIFxhySQoeY=xGE0RD``n9DEhuoqI;`4F z7rVorFF=p5y*xRv3nsS0JFXSQhiGfTIH?y>vB$I&w{%Tf>sFKZFdqNw?&H{BbO z$rPXa@k8XkKYuMeHBA@qQ?j2^lKnJ&?)Q^n%jbSk=&+-}T>T)MT-EP&FAL!P5 z%fj}TAv<0_x#Vr0d377?U|(jO+A>{kZuMa*g!YgMp*7!?A)k9@`kc};x!eg$-K{Kj z=sdGb@Ee0YsKtA9*gi&v*iOGn$~&>*U^K|NT`YKSQh)c~H;2^cT6v`ecI9dnLO(>1#Y5;&vw(c& zk>f0%b!nE**!z-Xea@jny$|~2^;LX|`brN`-`r18-%+2SzU2F$qleTxZl7qDW8|ge zT;f?cKNZVO8-wa0^$y8rd{fVfOVj3r&saKPrhk-3uHtkX$vxU<+zL50KgZ+_HKUU6 zkTwpf&j=@NLNm=KJi%TB{^cqDW_vN>`_kgaB7Umy@x5OaEHHk5#$o$M^1foTy^y+r z8L%#$FBV zVt-Y|-+;F=w9dacq}I8q(icb{$ZPuqVpZppAu8U<)_>!1=a8~{iZfm_y+`=0eR9t}$?{oCbg10G zOt#caw%|V%$=TeE{hMcVot(*MxihV$mJ9n;VJd%#VC!J5oPkApkJt-|dr^j(HESK& zrqVUvJEzz2uW@zM$~w+W)p47y1G>fRTC43DrL$Lt)MsCO;`=0TSx`@bk=kGLIe$li zo{v11e;QJEac5R-w_W7XpG{P@=G%Im6vIF&%Q&!d`>OBK?pLxhwy(OEcI?hF#_|81 z;#*zWz=q3mUU*{Ib8(W}l;Zk%y})*K^4m(M$fcwoS`=2FVfL1I zE$`b)-St>&ho`+c^*O6V>WwMrqJOkEr(ydVIvzIpQe!rG*U#*P|L6FC+R!PVBQ8K) z-ot&)glKb;!@J1md`yKJea>MSn&DW~ol8xEEH0@OCB0->qT)TD`8-uT$Qm4xddk%A z23x}FJp%VI13l#agSxnH85n=Bc-e3oFPkpoWy@)ZE0b>kuSkCQM*q8B$A5*6^Zol? z@b1<87gHfY+YX}hK!ns#b>oTmKUiHAzn=f;_KYr0<3XD77t zl?mrhF%GCFMm_MrN z=QKT2)3Y=^TT{M!s!3}@@_$R!{3)R|W$HUYEVoP3^EJId(+f4dNYl$SyS&em)>Iuv%1<>URdu>#Ybf>k34cRUL)UHSyc{0$ zif4DH5`)(Q1GeAZ7>R8Q zMf`pCSWoTPaQGNI814-X_p#8#8y;BRKxL_#61xYdJaZpvz8wvLZ2Zm#^jAL}J zU^t$L4G%%{aevz%?z3Zo_;4s;M`MxRKs+9ajg=M%`?rPyeaF~=MDHBCR`+2PLpH)~ zNAH3I;Xt46#MTI^jSu(sqL~RIAzzj)^>GmsaxOO-O)~76>Dy*UEP@EdD3|snj1G#p5k=Z*0nZnS=TYf zK#P(RgONx)U?&1YQJz-htB(u~K>^D$507Uyjsz3-4u5Dku#9J9Zha&i#-t7ObtPD~ zv_3M7g@1(J+x#h;>GS;RJ~WG8!7lY``O{p`*TgQ)lCr&dzSiO-8y}n=w}8 zNyfVy+d5loyBnzlob_#u?cKHA%^mGqpwIS(+JCMs^A43Te`3PMj&&`q9kmTu(@5CT z)ZE(GUfb44Rzt_ecFJi8U=Q(2wT~po*$~(f>A_HsUCbSA24z z#(xRscS%!o`|8GZTe>^e*RR>Krna?d%f{x0?lt6Wio`HoDSve!o*0e=x^N=K7R)t{A{MuR?Jn_$J~LKKZ-pfK39%@HI*Ek zvJTp;CSNKc5}#W)91Qi%+R(VJ3&U1T1>@7geW5^gS{-0^jmEK7>O+yJ_C%v~Q;qx=a3JGP!A8@%+B3ARTPO%XJ?aet&Y zAlFwl9rd4bb_GJn8Hs&dC5Zs# z<*NGRxw?Zxf!LwP^xz!TH180y1AmdoKqw%We0=WsEak0z{?Lx#Hq5u=(K)vf21107 z)cTM=4i!zCM5dW%p-!JMNqSpgXsZ?oKxFD9B3(H4{j5;l2o6r}9*jkHB5PJF+Y@0M zhhi8T0H4)!gP3c>{r!Phpl@Bk-^Y47IAvojnBbJ$R7z8jH<7||@uXByihtW2jt(cf z5;zuys_C%F*vUFQslGYB+Z31k@V)_FbE8!^+GaRBjJJZoHl=Au$rc% zaoQtY!@YyjmX`-0kN3pXwtqlkFp^C6rX?r$*7TNiDl3vF#z9PZPE6G7y5VpF>t%e& z7_1;SzU&}gs*G{s@;n)@OgRbJd`*eUqNP)<3B5mrY4^t>IFc9R~9@r5G zrKa8ZBv76*wQaB$m6H`kv(aKKTszWl_XXv?6P8Ypw5fIk6Qj028jai7ziQQiZg+H% ztG%{+{kmEhQ0?nsMt|kD!-P&VmpvS3pC{$k7Pm)Gygu>993LtLKQeYQr=^%3>$~Yl zwYFfM_rX4weqzLq5BcGj^}|e!L<7pFBco#*Ssl?pnDY5KzH)cRjzDZDZ)fD{tgUZ> zsZE(Wz>bxpv$?%~4Y^at968oCuU^wlPFQ&;h3QaaM}VxZ+J6m=`C2XICT4KA7ZPen{nY^#*w_WG!;*DgR(MKLb-Cff0z4qifI~<)XI*qhJqjO#~Am z81P-gv3`GVpb7prMvctw+SOFhy{6HIn=r>d4n9762VE=4(+$I)50~D+V1zdXI)bN4 zpN+|4@AL<`8h@!RjDIhjVfGW0XEjYvsc}*~bQ|Fp!GU+kNz8;>lqreb5e|(~mI_PP zp7K?MJzY3;307F{dU!({n(N^gZEWsrl%O-h2kbkg8TavU# zdFZ9X#zrYzw37AGC1;PD2Rf1TQK)n*0p1H5l}fSJqkm82#S+6J3;IKFh_&l^gRvg& zlV3aL(801ycbA-pqm$h+aGk^9Ot-tzZW|6If>Bf#Oz4Rim;8Et-ypLmGs=|a26frc z>fag&fwfLuI&_X*I&f-p>S{t3Dsvtrsmhx~vLP6U4!G`vuQa&y;KV!~iNQcD)o8U4 zD|Q6^`hVVJPIUCBOsM>zO->Dx*g)n6_{GKsI8_^(CvIKTW#*GwjcCeB{Hh&D8zMXti(zZ z|9=A?YSE!Gf4sA^lrKo)i8!tE583gAKbEj7{kC?4=LF@>I7bybr>(ZR z-L4E{g$>O~O2qY%Fn7*Q9D#E-;*mThV1LskrEnAu1QK&})xHUAc~_#-N+(O(5De_3 zk_jo@yl1Y9Op<`JLgvVX5zy)H-6n5h5XN2!8kZJe?$&Xh47s){-52P$dEefWyvmDL#D4>! z{$qHD;`59%xT7dciSEGm-iNJS3Qb5G+x|bc2n@z>^nWOUjpbw0hojucEoztkSjj{H zJ5glk#~0Th41a9D$Sw8V4#i?1_`Y9R1e7ZyJl4_!B1dm1*t?BNC4tqq5#~WtBnHbs z8wNQtC3!e=xroYnf~*)YN#X&To_{{Q`}Ecw9}X@H_RZz4(`*({&V5Rb%}o}L&k11X z#Gy4u`TaEaQwVbnRQD+}^uwFp!t-tmr)`lJs-L!us6T`?8`!cHi)G7JwGeAQWf{o} z^er$ehOl_lrUR|>aU2_}mD?0$@BsURe4XDbFRU>>I3B^5j(gCLK~}B9oun3(hAOf>LW9xpDE*XbvlD*AZY3 zlrkj2{!Grm_F;c0j_gU#jI6*&0D9y5@&?@_Z(3w^|44JVKSE_`yb0#Mo0B&1+Y+*P zT2f|z>Z*q_ILz~uoLKY0_#k9(Xpy5o6p6&ZR2S_IX)PlsTL(CgpnvG>{#azFJNbUb zHK5K{^60?WOMW+i90f2ck!iG^yB$~)2o4M;sAwX8BfDu_T9T~=^Ts$zB#Rlz zA#x+qr23JIVA?g6lw%W@Jydcc(h?Yz^2(Rx9wg-aVqWrP0taL48YV_56A^v2A`_CA z)Re&yKBHw;WdcZvrzo<97~g#JTe*&V%FC27-EGD^p6C2&Sa-wg_3K~A8(iMeFl}LjbI;T@e!ArcWIH- zyi4Ovn0F9oJ9b-OG_Zp&0_Im$AIw`&P5Bde3#++Welep~NqqzQmz+wIFK~jau6Kb5|GYnG$UJ2B4tqPKaSZ!oR88${(0D*!!m>DGde*xz-{oCJh7KH`3T;AJD#VqP$~&LfQ1{M= z-0T7|ZDms~Qig(YHo$bd*otlrqaY4+plj}E>Wah_4Sx^F-niw7w0_LIklsG0%NN?2v9Y!1 zQf3s^zYg%-IA!aI8jn0!WL<-B%(NXZ8R?D#WybwGlBZ!dhf`-^W*jyW`YuO)jBqG{=Lr5z!FM%x)_5r($@=mL4SRZ4J@Z-9;%e;9>ZR97Dx>C9t z&yrH!aV({~@nZZAlJdr}pw@yUV*}2DPQ8H?9>nC$1jVVNQhDoKT#7YTLs62I$}8C! z!$G}GdxpdP7{!y}z$P!7hr^Sup`77(pnsJQm?n9?IOL~M$R$ZfKRIOp1IC{Sp$vXX z+rr}OQF856UJ&KzK%;W@^L14DQgVrAGE4hL861|}EE&>6DhpW;yCk%l{iXa=v^}CT zI^>--T`r6d%s(S3_!j>jSEPPTKCh9_FU#lY#?8jXhAVg9h)EZl*}FthJ`EdpniF{! z2;2Sqhgb%PC2g^F29&_REO~-Af-D1-9hBeJJo-$SkTZLts|1y?T2FvF=%;iDj zXti;X$r`=tIZ^1LrQ%h|t-**ex5uRKo4LD2O!1nTT|@0!SP$@Aa&4lyYNE_l6J;)k z|01l{&7T;13|3@MWo1ic4S&5W9L&4XlqvwXrLwY;s(7kZsS>JG2~`}P$NYJUKTq-J zad?4v9r{C&v>egk2(4vq6F=(saV&G`Xr8DK)1|Db1EVJWOJwgliB2)-F~iEa)>v_s zaOF-jtsfaPr<-)1Vec|CZZ#Lxw3sd^vBzPV4kWeQ>>yJh6&iH127hb5>2L~+gp;N@ z96VU2`Ji!()4IBHdF2X+X>6bBAcy4?PKVRU!&no1PIwBEd4y1zoEF5J#!G@DtfY|B z@+DJ+Fpay7W7-^s5Kd#fh~aR`;!IA`605;Yk2irBD9Rz{r=c<;(?ll9OtlB$R4p`M zoNYX2xYhm` zVKgWA;e94uW|m*=AglwE(`b{;(=tg|f^xNb~j z*UFl*U9^vv@W*9+`H)%9FbsOsu=4LRS6vI0JZd_=XwDFYd6sp*vGN)bG&A2YOR*O` zWm;I#j~iC2Y3wsBag+yRYGJH19GNwABqp?RL^a)L7+*Ec=2fxBFgbKCbkNXd(%Dva zxH7uu#VR?yB&VdW#G|63 z#A!^Cfl`k#O$D-(f!V6S(zH^JO)q5trEroZkW!l_RhKRm)KV&GZ+g;6=>y*0b~Fw*bCmi)+phNi0Od zYYW6#XIL*SG~5Rk3ilO@FtZMGiet|_!+*MW(K4}rkr3xE7UB_LKX49eyKRXnUI2Y$ zsSx{)72?KaLR?=h#6!TnHA4IbIDa|hfrnNIaotKG-Ur^P72-g>5SKOx@ob|IZvZbe zfd}ke&24qM~Evn zLm$A!CqQ>6U|oI25)XY=h}~O|=YK>YJ~+|q5=G@@;y?Z@#Kai;IhXtY)YkK$`K_p_ zS6FZKVnl+%+IJFa-R2Vew_yY@O&%FS+rz?oEsVBDfGAqI9eHBN8xz(e2}8V-Kztaj z+<{Tvnfg7=B8?{hz9WCvB>6WU`THu#zw^l7l}Y}sNB(X~^6x!5Y3y%4no}P2{aF64 znXuL0V(Kh|jICt&cV-KZ`a3%Ow}=c|)ysb)($w<&dz39({Vo&!Jg1ZHRI~#&K8;6a%{Cqd(;!Mp{ z&s9&a=~dHHUET4{We(`73b1e}P*6xvP_n@dN$9k&G9Q9B3gbh_>h-O-_;Er(6*wnN z69JRSqyI)JZIh4gvOSPJO1{st$d3N0oj2`|OHteN@_S@YktNNz#eymEf>KiF`eUY}Z@YImkSYL4V! zz-KJN73n-JSuy@k>i7HYJ>-2XMB_X*$Q)QnYu3b8V%+hJ^=aw#YNzPV{5w4zpocsh2$8v48}g#ssMipJqP&| zRv6O&$^gv(*#LG8h8V#K@f_|PniPr@niMezLlFIi&X_KP0M-;nBHW9VAxqDN5?7ZTutsKA8F1LJRqeMn?TM#w3bWMlAxDE=q-DTF)N zO*m30Bd84+K_y9?V5vSr6N)-mUf4FgHdvqk9?&m@$7`voppHW{Ldds>x9t1Q`cy(T zVF5&x?5HwWgvJ`S~zNG%RUDatUBTf*p6Uf6B<^u0771(CCmVVHrxl? z3rx`_^LS|ZK1~x+Raj1_^$$4wF7Pg&eUN;bVNXsaixf?W6EXjTO$n~-^Vsq!z}AIh zgw=+w4)H3$IYjjOa1?R?3b2HlgPa3vfMft82>tL6YXQbT_&UTsSfa1{1I$6NPOw() z3{4_b50nAo%clpn3(5<|3;Yiwjf2Zk9TBHash_^OK(!IHq5GiuU_9Vl&|h$~1_|Au zQiiOCcn4z!8=R64_Mv?oj^P27D~hy)e2Opy_dyGU9_TfcHDq87^99Za;eq7By3ZS1 z4cSGo?vpM|6Rcq$o{2yrlrUlrq5+Bl{2EdKY8$E#@dN4w#)WWVeG)Ac95iYsvL;ka zh+YBg64EJDLF1Qz-TdN=Vi~Df;Q2Xrr^!uKJ?=2=2 zz91>W#>1vVEr>GBpyZ&PLV3Y-2CKjx!05mj!#Y9tz^VC#zui3`UC$rkk1a34n>S;*ptZvfbhPyc{V zsz{2^AE==J#~;EAsV%!L?k(~yo<5>rdxm{xsx z$Syu#Flk^F#yg;FH?K1$*EGgp*Y z7D~g##n%hOt%Sb(;Edpm5E0m6`_5A#TBmgL5+)r#PC&YdJ*VDa*@pOz zMaPf3S+N@fKNK@1WG#Ez)LD;LBhvLn;d$zNKng|%#oDg{1D$G&XU{A?euy23Q3cq& zNig!&cKfBt#Z=Fy3#0KB`8v4@%V}|&3#s+cC8M@gadF(&8j9wmrT*M6qxx=Q_AKN` z%pG*YDpCVMog4d>2>iU&PPg%8E~l>{CLLF? zeXHUO>P`nV7bo9I-TSxRB_rEk@{cdFkVI++1mi_OrsvN%`~jr>z4O~KSV8iUm?fiY z!51m~0Z7~VCl_Z(@8XdVl@x%J>E*iV!W~JZW`O1EODsk&kVid$vxID268?c>$0Mt$ z`y2a*WP4j7NddSng*N(aizz-PvV|6GenGmKAI69%0< zGKY6s`2~?44?I71_xxS>FZdprw=V+a6Sx%HDWC`ZlFQuoCh69Y0VUh*X4~!kCf|js zYri`C003v(HM8>jZCJ9R+-pNXS%$qIjt!~$JNh4}J>T9@8OO4cN4GOp$N3u+CFi*t z;Tf12y+2Kf$CO-$G0E}e;~p&d*d4eaF#72T zR!IR4K#CS2>15>y9@X zk0&zD*Wxl@?#5CsVBQqU82QMGk-VIhpxiQ~Dc~ZEl(2TphAaH?UV;F{je= zPeqt=BiSQmUIm)5)YYx`8?$ZUlupGpuJ{#Gd#^+K)vo80Pp&ZOKbz7$eA)KPI?2uS zXX!LWmhUgF?B``%+1$1(bed0?;GUwPDBIdto>>?Rk9uVu}3wAfWd?_%Ut%DDb~El-LnR-}3%fEc07dPZn6X)S)s|U=F>< zTsX)6rP#Wr(!g0m*;~@gX++!ZCg*Mwzac`zWyn;S?M&s@lXm#1U3BmbS$m#ZiO1fr zfm!6&(NXeL`Sq=^ck{-k)BNpb3E1i1B}A@jp9$1SnJb|pzariXEWY52mG`ae1SyLN z|BlU=(<;EbQ`*c>N+Qhc6KOGhZ;6Y)0w% z0{QN^tWDSYNoX_)xEys0Vir$0P~cBf{?DPcw%j#Yxg4CFCob~Ip|#2{y>Bi^XD%zd z>eYd6Kd`67avr(^O(-Z~X~?ly10E!IWBmOUUuz2GuYOn&k(iD+1@3ppO}A(y;a0&L zff>D;1V5V!Emp@eu|IcHlvhYCp8pwE+cuWvMCM`)Pq8470>%i&EJZt~341k!myNuy zz9oQm`9ac}HaKsqq&M>Br-z@3;-d&cgy~EMMupE?<`v(oLy6Ae4UA!s-&?5cdzdnd zp!}PJtcX&1f{6T+glw-~IX+40%R$oHMV~AXc3z(H#y@AgctpkDty?Yv<8+#2_=+0DANSW< z;BD|%e}veEyacO7+v5GlGiw6=dPQU^OE(3MHjhxt-r=N=XNXmYNwd_YSVR0p7^;tM z=O!RVZfaun^9s?vCGt%CfhH|dRf1VRSlyYyU$c{@=qC3claE#L`rG`938!6F%?Q@5 z2*oWg0MFGJt8YhO-yl;{EcPxq--zqq=L4(v>jnOs6`rFWILT4XGjFN*{HvF|GdWRr zbWDXOi{0d)+)gss@lfqrMDLqo3l9#SIVopfgST2AErX+&Jz1ZPRg73QF`sqvF-~i1 zxy-u1|d z{HUIJ(18}0Z)VmtF+s19HtbHOW|xoUNi8_YqxQOBnxmju(e*p+cfltI#bVKK%ir-( z+Vq6V7*uDDxeV9dA5$G&-pl6{lQOCxF~b$kQ}1eli^Rn}(eL0VgBii;{8j(?b=2ST zfKd{)wuMmHF=NiiTJ*O}D&s=26Ky^g9}hG><^a;YvO(X8@lB$r>lY>D*Y8|V?J?Pxe~|uQzVQ8Hg;4 zpKlV>O3`?m9bb6?--DI4rgP1Q3?##Fm!^DUy9Cge7jpadggm4dpd7|90q!>c;EDpC^*YN zPU>&CJ0Md8SB*w_##0^O<<$H+bcm6WoFOwIq@tjj?gFN2Tader~jE6nq73{+OX3T`xJ%Vs|({Ad{=p5_npf?X_i3A!4ydrpvb>d0}`Kq z;A)R{wy^aBVYeAp=&Dud?lR4V`YnH|SL>Fv@0{r>-BHPt!dLdqq%DcWt{r!-6>=ru zM@9o_FZRUk>4EB+AxM-~6()!2+2!)@Qx%??)&;{;<;QgUzi&6d&JB!E-;1 z+c*~mnYJv7wMUAzQ!J-5Bp&;)&U0CPTptvlzxChTn9kqYo@GV6cmN@FRR{X+B z^DJr*)2ziyQ!;WK&U2{t<_;O^`#PLHIsE8P#yA-_mkwTK-DgxKUTP4YwACcmt;))F zPuXc35PVB^58v?t`UN8e#0 zZSS1lXrFnk1n!&>nw}UO-?`-o5}Jael3N;Zxe>3}63(HV-QRdu3=(4u#8ytHi{rwf zeNu^DgZOy5M@Ao~TGI0Q_&2q0yf{viCgJHfhc0u*FG*^F2AOA!@EMTM;c}(=rfzAn z`|lmmO{r}6&<_zl=dFus7{A!TIM=~A-y~0XDD&a-MMSRUF;M1YS&?8EHwUq|sJpk&%H#koq8ua9T z!1m z5lRbDHwJ{4;0K`Fr|y;* zV61t1BNCl7b;ovqO%HGl-#m328e$e7WR25h-hPtO5mMsOX7aow>7TSA*i4XmT}-@U z4+{1xdh5KHxM8}T6gz9I;MB;q%^K;I%(L|_VA7*!uoEiTO%VOQ>cg$l70kl+jLjw9Hpg`+0^`g_Eb_Yjl!oIk_S221Dm~eoQbsVpPOOP^7B=lmyPM>QL1;P!H54CHjBNl;E;tzLnJgYZMT#KDs?#=I>0 zo(k~!*BVJJENMfn@IgANIVn4m4BloQ?xndq$<`aaZvvJbGHLDf@w2LyRcvDroqQ$w z@KQFL+iSF&Yusz??KEwm0@cV>ND%U^|LdK{L!-X$%zSxe%Gf(;v+(H6S%oJdh^OdZ zdFETQ=0v|kyZpxP#VaOR-|_rSa>t1(1Ytp_O~)?ICaCvmA`yhgu#k>DZ)3i>6V%^R zn8jniFW;xDtZirOABJ z5QXi?bOIyxSBFn`tGZ>u!uuz#Ym2{y0iENP3eM{P>{)}aoW%tYYV40zIT`aL`If)A zzE3ZcA-*E#4=pP+p3t7Z(_I^A7%+Sa`X1OcL6;?E^9_ze2({-Kqb#oi5YV8=JS!5l zU;eF6n@Dv39t#GBo8!kv(G@pr10%cjaDR^18!9`%5AUCR{(XKxD9!ERwk!Paw+HWG!dD{{f6JNa{H&EzV|uW`T;7)_sopD0)1SXqWHcrnZsux+Ut3>~ z-K`tZ-YjJ2J2IWGY%0eS@^FvXdStK0Hly^6)eCuwf{d;Ku(SFxGh1XT6Q1lc+h6AB z7Xy=-drK6no+v(FXp#{NV=uw0i7{XGG7?e3u9-1ZzR5j3C6rXj8Ws?A({@Y+CU>+5 z;(;|YeD>H~Yd|f4W0?|-E~U=V`kUn zxy~*JeHf#_9en)9_tNsmS@U>F7k)P8Q>`M)ut`ry`a9H`^`BS4HnB}_tkvJ_BSQA|m_uIUBf5=d<#`dlK+x2VJ zJTbc%6t6hM1OU8y=5?1Et6)hRI1g$DRC!&$h996*%W(~wa`8Bx^3Q# z&&M`NQz7qf%qrHy^0^-F`~Hm@US9_%s>xn=h{h&Mg4$-z$BO+}3d0q@cg*K`t|{gZ zy6_)mbh}T`qxJZtq22ber~4l(b)8l|TL6wa5cTgvi#IuKUmTU;;-t*21y?1o|=)>FQO7iV-U) z;jih5%$)P415*jJ3H>idO!yZX{c#_lyY;q%8sy%BVmf+lvpHiM1s^HpO(!HKh(C@)KQa?ms zXZ7k;x!QkEXi=FV6oPMBgJa9brpya*#9m!EfGT>sF0E->*8BcekLjBgz~C<`JU!S* zBxHy};sSv!!V=J&??^qsUdKFg2TE8z)qRJlA8Q=_1a`JOx#TtPdJGEwp`UM3qvn4~%t+Zfe=7b5_P}-kl@2kYcw~6? zVY>Ay*BoljbSnk>!Gc2bglCV*y-n0++{;n8;Dlb;ITyMs7&1i8z&pv&YI7jw3|fH3 zMpzLnVu6mKAY^&$ZGq!e@$7MKir_c$ig@d`$n2)pGc z6Q6xY@H9B&-IRd9LmVc(g&PNYw%^Qd`TWb8v;W!Z{VxgTnB8K(Qg{@VedVpqOsl=A zZ@N-y+ggS=+;qLqcD7cr>bv;4J#uIyw+fs`IsjRC$r#!L6ozvlE`L4zAD@|Pv2P7C z?qe3b4KjOWK<^(}G7qKcnVZJ!D-uPoQCXrK7S!u<%V>ppZ)07j{4#5Mzxc8PyC+|z z-jXA!Y@=UCRM|#VN0!;=i#Kjczh`dbl`w7mR5fH&rtZyodvu5KL1qLzo@)hz{9U?1 zMus*$g7CDhsn;cbR}n{@B!BE7_{!o3VeY$L??u zB~KFzo^%^OfWCPZiu_Txq^DEr*3p`QT~DL*tSZ~AG7wj8l3jISW#y6P?UX`9>V#X^ z-a)WO=ZUDw449XHw|lte`S@^@X|+5k=We2$v6{_6#;?XgP*Bzr#P1!MBJ^5Q_{UbL zKE$^0p$}+UPnuC>=XRuJlyjst^^UavM2ti=P=DAomDlDdv$|_4key1b_eO?#M0#Gg zyDE*VK^DI%#NO$>@|2x^9-%yzmseMIU-h0vIX22D;v_^6>^zktOKU6Re>c;n>7uOi z7h`ag%bRsYrs#XD<+!Y-hP0;&B{4dUPGY&9nmHha+peuyNbIddiM^_{oUEIhPo}mNR<=6jsxEu;xqd{64t8;ahhR;Z_Om37< z=JjEYRA(V#d4m7_ia|#cg&t=wr(q|G7?88qp=GyV+4arP$B&U_<2u`zq8!It9E;YTk0%r)C}Q8L;hTup))oLOJb}ipbz>xR9BL^X~ffIG)1O- z8mW$1wMkyUT6G*2Fx$3CmJ}kmy|wtao20dAwAfr#SH1Y` z&w3+&zCWVOb`Ey>>vc{FI{x14*-Z9!dW5YGHdPQk3E%27NjF+2?+}l$okAc4&XVt! zP$+j4HG8(+h=ZN2SV7#H66_k1iUy~tIlC2u9hDEmm-_VBW_!7&#Ol(*`k2^sYIgl> z-j(?VWVMoF;zp?}{mf}G9+96FZSWlQq^S4WH-i$Px}#Aje9~H)9u{N#6$R1XE5me) zio9rvk8)djObuyL^`#z*K}A3}RwsQ82CKk5C2R4?*ZMpXt^Z_8(WnNJqSJMaaVH)A zco`(^jCX%NVaNM@7&UkneO^bHo$zI;$FtMnVlIJt2~UB0Xl5^Bn^eE{J3aro2>7&# zVuTiE5h$Sh!wfiMXv|ksaYoQUQ|`Q zQ0&(fEe|IOjz#_8W_mfCtJKnzS|Afz#Huch#sgl~balz9Ye;xqp0sMm67s4U1Wkq$ zgvw<0D~f!F6VGA>pT4#j>_tV-ev{YtlSne$CdqW3g4UT0HWwU1G&ZD64UVQJlPZg{ zE>zCt*}BWDMWXusz2=1BZf-9U<0JU>nt_M))YM$LaxLzU6_j|eKi0@rk+ zxzKU-v~9g}3gfmRFJ5u^6DAEG6;ImS=Y6FT6V0_GdPUctMWGU-QYfb?S?Ic_`6c%5V*9Q_BI|+Fz1qtM97g>kJa48 zwYC6dWe+(;OP=)rd0qe7Lo$U=CA)Og z__ak7JDAdff`ba6Psqsj5p1GK%9c-F4BN&SMem}FTg8q)uk&9F!#*V~8B(XAN{% zqq9Y8!xWOZNn+NBJ9(Y^xy>nEAE7r-v1o_VUjlkyGlNl`9amw9`9N z6>k?0wc*x_4Ywa``POaP4v{Rao)ZWI+3N7N52K)CP&1wya~+Get_X~-YJ(QKYY`AM z^?4>L*0?`+*h)K64>x=7AF%q<(RsTE=%Z;Jft>$p6`Ea`Qe6Znvcyx zdxfu&C^>rCk7V#)jda)A-exmj_3cQ|DI%J6I=FfM`{n$_**fq#y{v^9j_`P8)kNN( zpU4EJ|HnC+n4N*OO6I-PKiby3t9XxI4pye*&v9@-yTG$VsKE_J+Z{o!gnr7l1stBw zfogz$#jsPDaV!>PW3?3**t^EI&SYu2Svd?cc^7aXpZzDLWU-&K-Yc@-pkf|fx(9KJ z-k*HzI_nn=h?b7D0{x?s#H15^W7&UeEpOH=L*Y-W5Dwl_cj7TfxmEIXQRn9LK2b0Svv8N;kcy!e`e$xy8W z5ekqJxVnhC=>9^a7xgn}BXf@dUo_kI&xVHSM<=N%_S3Tlfwhjb*+@+1*a#I6@SU-kp@Za!erFB9J#^ z!+l+5gVE(^yWV#t<<(1Y!KS%m%sX7->B;PTD{q&*@RY)fjZ4r>DC=Z9kMLxhtHwDQ zlh^!YTd^jRqnVU6)jlw0Z{SaVarmxJ$D+dhSfkOS&d`%mD&!$YTgh9;zxqZ(t`Fc^ z4Lkk$W$#aMR5(xJgA#2JPDWj&RJw(OQ&H9AJ8UN~Th9)(h4k#1TM${A136D~v8OMS zG8`=2WP|J@D7P0QJksJz!Y|~@MxOYML-A-|+r6uM=tGQ2cJw*YWtss-r1oa~h}esa-7%W<$SCdnSwRGXbUIV`yIY;B)f z)kzT3IV=Zyxz*P4^F}ZU`Q>T{G&S9t`t#t%$sO&Wn;4$bA}@h0;uVPvNDA{vu6m$M z8G)IwCOx;-_=cX*PAvk>J+RV7eEuFBx4O1U?|P%Ty+bC0|H7f^Pj1gpU0{P14VS7Q zZ?~>eQUbQ6dCe|H>P*r2clYE@jZKWZTq>=~Qj%k%@9d@W1VKP3tzy)9fBZtsx;#pp z9MSTua1#>R(9G7mDvZEpWEm#98%1kH+<^pDiWhBsP8!eL(`Da;) z3S>h!p<|c?h2UxWQ&V*bM{^J$U@UoF8F|VE1tmH|^Ow1CkaqXB-26AqE`L zMo4`AVp-L2De7yR^v{J7TRHKt^wdbej3##>uiETZZ+vgZUuR6dGqCifNj4V*<;=24 zF?g5AVkwgxHAPPTkKzCYvE(*=8;#r|_Yb9tv*7$9ZfI%?A@x!4U}xqnT{Vjnrru$2 z6Ipt3E`7V0;Ub8a1lTNsK-6M{wdIyLja*BG1V`>zy|%;@zoqbeAtRlW&Evt&Q89um z{rBPq+O}Q)Pm4Q!)hZ#9o$}9yJZalXp)AZYiAu1+T^)M&Wt@GtIbx}lwlk4av{Q_l z9HDcp+|h2yZ9t?lbDnx?JCkR#C;{<4pET*OMVBHnc3zi}Zh#3pX7Eq!plbyAm=%%R z5P5VXT=diiUIMxYU+dk5uqSu2F`~3na^ut7dBCtaQDj`GqW^K*>K&oL+G2i5fBg&k zDT<3NhCXUM(Kc-oqZO~joMqvOg^j7H~E;4tJoQ%Ff$=P(4uVnrw<%wvmi>?M&1I_a6 z{Zkc|;W(aM&DYp)`kS_isJQ*6+cdH1e-d}Bq|Ag0NAU7Ck=eItQ)r5&@bioQ<&cgh z+rte@<}?0eXWjIF@@G1QE+|eTC@no*TJ|9saN|Yf-HirmIxg_B0Ec8 zFn9^eZPtI3e(6?K&Ttmu*riaIt!Dh{fXM$Pl1pD^-X}KHbz#|A=IaV&Myv-}Fgs46 zAuzR_Ik`PQo0%2d9@;ZLSZ+o5i0$T`6zS5xYy)Fsnmr9Na~>Gt%U&GH_?Id0SiF3) z7tIWHJtBa@(q;$9l`u14Up0K?sHYID_?a`jjqU}97gjSCtogSEF)1#J>o>|3u^kv* z;+vbkE%Mp6@5xXQiPcx{(Ezz22g*Ml`#@$cr9#c8{vv9@j0!p|zW|EM zD&L4tqPZl&M^i~mUDs{NuXS^RFFD$B8zmhSU%k~05h`n~D9u-LBxD)f46p?#C*bei z_Tm&q6NMKDw~{^GGJLO-S4P~E`87HSCzI7f)EG-UXU$$vVu#|)#A+Tf%!T43FuFtj zBmT2D2{%}oqQSReU=YovE>Soj4+hdsV+-px%3dXA9X}7M^y7P;^F$WO7)tO-Aa{mO z|CIJ!YXi&RjWEbPb6<@>A;gMsixRw~mPN!s4o5om`8ZRHVbRB&r$K69yiuy`QO2`< z3m09tMhjWYO2!f*D|rj9PGR3l8+}DHlqt6V zp+{)fit|Yh=B9iZEko@#$YsGzSbIHuk(GvZM zwZMTgpQ(x3GH#|{h(O!-E}}|trBoCyHG19`o$aSM-`}o%CQ?q>9Ob^sT-{7-6RW>9 zp`5OB_}nX!%k@g>3)Rz9N4I?^^2;Bt{{u)P@qcWJ0<_8L6ojN@%@dA$GE5@MCd?$$ zIJd$b!Cbdbq$x%?%g-$!TZDDfHn%Ar?Hrb__7tVX``89LYT#8u_jw|=dO~VpvJ78- zZO<#qiIU6sfLh}VF5yibLUr%?9a3yqBz5Pypl+FOHQVZLhr`qrAH!N%y?gS{HRgni zHX%~dq2mjj{(Q(Dmbm3r+m{VqJ#6A_w=lulf)x5N+clF3Cr=`ApV-;25vvq29DH&L zzYutYHjvB;Xo1$8{D`q1iso6g91Emj8qKQtm$hvJ7q#dy{lPIM`&G02+xMSpcs6k% z*|NEm)Ta9YDQcZh4uzxue0!JP!n5L2xydb|Dnwq>5{~94Oh>WC-_HI{Hb!~rG^60T zRdi;dZU><1^aS0Nv}`6YV-_6YN~)cP280gSD4z#L0!sYjjNKDT9y6?bfoS*g+lopl zwLCG^aea;p(hlkjZv>Z(hcx}SwWBcju|H1rzZo_pU|eIr)%}_#l?zQL|sNT^Y*qhl@GY+hlgJdteYma3uofgtv@eM4sr!(UX>BLr}k)mFz zQ24iB(rTS?OacVUneCGULxt0dJGs=mwvFh;o|u%9+q|IX)U5UR%l_15YeERo^1{Ht z(0rBB_Vxu0Pvj#RL~z*@6eu7fB*NXuw z$-XWiZ>{B=Vi11`PC(I8cjpRJ{t>DU@4>IrA?Oe-!5$pVQ$g44yovZsJ=Yv@S?kLM z?C7MLa1>N4;hcokxmDLo8n}5T8gL53&E2IK>rd~)El)f zzSd7}z=SYERORPvkw5{i$7p#~<-6x1Qn2(%*zTLfYi7e^{A0d;ivO zxK?f3^o>%p{sc_3Bb6={K*VLeggeZ@fI#OwXODg6WZ5GHV`h=7yJX!=iH_7NwbM>A zwYd&1f`&=;Sj|=D!i~N}o=2uLiwiS^fce^!{rirym1`c`pNE*t^zHXfwr}tX+OO-h z9g~@1^HH@$>r#ADH29BNn*aI6MzO1&@=#Zcw%}xzqA)5mSi1Vr>8qm9w8N7{a7 zr3&Fqsq!6cLbmpP(3?8wuK4)>;o~N-Ff&f+6rF$do;@HBuu{u2^U**9)S5=BGYL%c zSh9pn@{j63na~+W*v!R;aYZ~aZ`wE7v#ZRZd{XdI3IDxz9==ft*HdaRE`NRSZ#L^~ z-a75B4ZQ}-^!~2<3-%8W4VP^L0z-Jsf1gBzM?lWQ`|o$e6|0d+UHgyx4Xs)9s4-Zu zcWk$I2E~aHf-t&zm;N)>huKgkpAr=N(Hgv%f$S=l_Q_fY)fLHykhhDt3s<}gMzBf! z$FqG{Tc`4mgOE^k@iq8>8Z1E*h@DflcW-mZYDaeOTOM0S4Tkdfz76VSV87YsTCd5M z$ro)5w-UhDEqA&837_Z91pb7#x?0mlf) zEcdp5cbq}L5Y_=f5Odv=+MmHQQ&(>RKjfTc^1skqtnXjFdc#31C{g*|fB(MW6w;VL z{Kz+8H#VUR^WY2}{@WQ;0%nG-$n#(^a!;|X^LDWD1H^x11h=yONXR3+i0+@mz9a+i z%(P=)0^*+mlap^VFWU1>T5adYSY|-JOYUOA-JSoSp((l3Mm#s<(@xh9mvxdq6=+au zO`H*UPze|)iy>{~q;V7&U75k(BXc&@80IRjTaO=};iopMcOkUAHb7&1FWL6XI{%yS z_v_XZLC&lD6UE*qWlEq|R`(b(p-YumpNjV0W3sISNQAv(#F$q4Jwn#A^zwknU*qb% z!yy1-?W+3O?q-rg2l1mo Date: Thu, 19 May 2016 13:25:58 +0100 Subject: [PATCH 07/25] Simplify main test methods --- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 14222 -> 14224 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index 74c13ac285876739d66371ab5f25676b1209c510..6b4921aa79befee27d4f6af01e84c06a24ce2e3e 100644 GIT binary patch delta 13994 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 OlUg@02EsM~0001dCprcI 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 97ee851e..4b06d928 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 @@ -97,15 +97,13 @@ public class UiAutomation extends UxPerfUiAutomation { skipWelcomeScreen(); enablePowerpointCompat(); if (useLocalFiles) { - openFromStorage(documents[0]); + testEditFileFromStorage(documents[0]); } else { // createNewDoc(DOCTYPE_TEMPLATE, DOC_FILENAME); - createNewDoc(DOCTYPE_PPT, DOC_FILENAME); + testEditNewSlidesDoc(DOCTYPE_PPT, DOC_FILENAME); } - // toggleWifiState(false); // tapDisplayNormalised(0.99, 0.99); // dismiss help overlay - deleteDocument(DOC_FILENAME); if (false) { // TODO currently unused writeResultsToFile(results, parameters.getString("results_file")); @@ -128,7 +126,7 @@ public class UiAutomation extends UxPerfUiAutomation { sleep(1); } - protected void openFromStorage(String document) throws Exception { + protected void testEditFileFromStorage(String document) throws Exception { // UiObject newButton = getUiObjectByResourceId(PACKAGE_ID + "menu_open_with_picker", CLASS_TEXT_VIEW); UiObject openButton = getUiObjectByDescription("Open presentation", CLASS_TEXT_VIEW); openButton.click(); @@ -142,9 +140,10 @@ public class UiAutomation extends UxPerfUiAutomation { getUiDevice().pressBack(); sleep(1); + deleteDocument(document); } - protected void createNewDoc(int docType, String docName) throws Exception { + protected void testEditNewSlidesDoc(int docType, String docName) throws Exception { UiObject newButton = getUiObjectByDescription("New presentation", CLASS_IMAGE_BUTTON); newButton.click(); UiObject view; @@ -221,6 +220,7 @@ public class UiAutomation extends UxPerfUiAutomation { } sleep(1); getUiDevice().pressBack(); + deleteDocument(docName); } public void insertSlide(String slideLayout) throws Exception { From fbc9fe226cd2613f15e6a2e70c976b67d3a9349f Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Thu, 19 May 2016 14:12:37 +0100 Subject: [PATCH 08/25] Simplify test methods --- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 14224 -> 13877 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 135 +++++++----------- 2 files changed, 55 insertions(+), 80 deletions(-) diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index 6b4921aa79befee27d4f6af01e84c06a24ce2e3e..acbb97e64890a22e57208d40af973ebda948d30f 100644 GIT binary patch delta 13649 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 delta 13995 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 R008iEk~S{}#5Mo`002E}P$&QZ 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 4b06d928..a8b67e6b 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 @@ -48,16 +48,12 @@ public class UiAutomation extends UxPerfUiAutomation { public static final String CLASS_IMAGE_BUTTON = "android.widget.ImageButton"; public static final String CLASS_TABLE_ROW = "android.widget.TableRow"; - public static final int DOCTYPE_TEMPLATE = 1; - public static final int DOCTYPE_PPT = 2; - public static final int DOCTYPE_SLIDES = 3; - public static final String DOC_FILENAME = "UX Perf Slides"; - // public static final String DOC_FILENAME = "Untitled Presentation"; - public static final int BY_ID = 1; public static final int BY_TEXT = 2; public static final int BY_DESC = 3; + public static final String DOC_FILENAME = "UX Perf Slides"; + public static final String DOCUMENTATION_WORKLOADS = "class Workload(Extension):\n\tname = None\n\tdef init_resources(self, context):\n\t\tpass\n" + "\tdef validate(self):\n\t\tpass\n\tdef initialize(self, context):\n\t\tpass\n" @@ -99,11 +95,8 @@ public class UiAutomation extends UxPerfUiAutomation { if (useLocalFiles) { testEditFileFromStorage(documents[0]); } else { - // createNewDoc(DOCTYPE_TEMPLATE, DOC_FILENAME); - testEditNewSlidesDoc(DOCTYPE_PPT, DOC_FILENAME); + testEditNewSlidesDoc(DOC_FILENAME); } - // toggleWifiState(false); - // tapDisplayNormalised(0.99, 0.99); // dismiss help overlay if (false) { // TODO currently unused writeResultsToFile(results, parameters.getString("results_file")); @@ -127,7 +120,6 @@ public class UiAutomation extends UxPerfUiAutomation { } protected void testEditFileFromStorage(String document) throws Exception { - // UiObject newButton = getUiObjectByResourceId(PACKAGE_ID + "menu_open_with_picker", CLASS_TEXT_VIEW); UiObject openButton = getUiObjectByDescription("Open presentation", CLASS_TEXT_VIEW); openButton.click(); openButton = getUiObjectByText("Device storage", CLASS_TEXT_VIEW); @@ -138,86 +130,69 @@ public class UiAutomation extends UxPerfUiAutomation { openButton = getUiObjectByText("Open", CLASS_BUTTON); openButton.clickAndWaitForNewWindow(); - getUiDevice().pressBack(); sleep(1); + getUiDevice().pressBack(); deleteDocument(document); } - protected void testEditNewSlidesDoc(int docType, String docName) throws Exception { - UiObject newButton = getUiObjectByDescription("New presentation", CLASS_IMAGE_BUTTON); - newButton.click(); - UiObject view; - switch (docType) { - case DOCTYPE_TEMPLATE: - String[] templateNames = { "Lesson plan", "Book report", " Field trip", "Science project" }; - UiObject fromTemplate = getUiObjectByText("Choose template", CLASS_TEXT_VIEW); - fromTemplate.clickAndWaitForNewWindow(); - // UiObject template = getUiObjectByText(templateNames[1], CLASS_TEXT_VIEW); - UiObject template = new UiObject(new UiSelector().resourceId(PACKAGE_ID + "template_item").instance(2)); - template.clickAndWaitForNewWindow(); - break; + protected void testEditNewSlidesDoc(String docName) throws Exception { + // create new file + clickView(BY_DESC, "New presentation"); + clickView(BY_TEXT, "New PowerPoint", true); + // first slide + enterTextInSlide("Title", "WORKLOAD AUTOMATION"); + enterTextInSlide("Subtitle", "Measuring perfomance of different productivity apps on Android OS"); + saveDocument(docName); - case DOCTYPE_SLIDES: - case DOCTYPE_PPT: - default: - UiObject newPowerpoint = getUiObjectByText("New PowerPoint", CLASS_TEXT_VIEW); - newPowerpoint.clickAndWaitForNewWindow(); - // first slide - enterTextInSlide("Title", "WORKLOAD AUTOMATION"); - enterTextInSlide("Subtitle", "Measuring perfomance of different productivity apps on Android OS"); - saveDocument(docName); + insertSlide("Title and Content"); + enterTextInSlide("title", "Introduction"); + enterTextInSlide("Text placeholder", "Welcome to Documentation for Workload Automation"); + clickView(BY_DESC, "Undo"); + enterTextInSlide("Text placeholder", "Workload Automation (WA) is a framework for running workloads on real hardware devices. " + + "WA supports a number of output formats as well as additional instrumentation " + + "(such as Streamline traces). A number of workloads are included with the framework."); - insertSlide("Title and Content"); - enterTextInSlide("title", "Introduction"); - enterTextInSlide("Text placeholder", "Welcome to Documentation for Workload Automation"); - view = getViewByDesc("Undo"); - view.click(); - enterTextInSlide("Text placeholder", "Workload Automation (WA) is a framework for running workloads on real hardware devices. " - + "WA supports a number of output formats as well as additional instrumentation " - + "(such as Streamline traces). A number of workloads are included with the framework."); + insertSlide("Title and Content"); + enterTextInSlide("title", "Extensions - Workloads"); + enterTextInSlide("Text placeholder", DOCUMENTATION_WORKLOADS); + clickView(BY_DESC, "Text placeholder"); + clickView(BY_DESC, "Format"); + clickView(BY_TEXT, "Droid Sans"); + clickView(BY_TEXT, "Droid Sans Mono"); + clickView(BY_ID, PACKAGE_ID + "palette_back_button"); + UiObject decreaseFont = getViewByDesc("Decrease text"); + repeatClickView(decreaseFont, 20); + getUiDevice().pressBack(); - insertSlide("Title and Content"); - enterTextInSlide("title", "Extensions - Workloads"); - enterTextInSlide("Text placeholder", DOCUMENTATION_WORKLOADS); - clickView(BY_DESC, "Text placeholder"); - clickView(BY_DESC, "Format"); - clickView(BY_TEXT, "Droid Sans"); - clickView(BY_TEXT, "Droid Sans Mono"); - clickView(BY_ID, PACKAGE_ID + "palette_back_button"); - view = getViewByDesc("Decrease text"); - repeatClickView(view, 20); - getUiDevice().pressBack(); + insertSlide("Title and Content"); + enterTextInSlide("title", "Agendas - 1"); + enterTextInSlide("Text placeholder", DOCUMENTATION_AGENDAS_1); - insertSlide("Title and Content"); - enterTextInSlide("title", "Agendas - 1"); - enterTextInSlide("Text placeholder", DOCUMENTATION_AGENDAS_1); + insertSlide("Title and Content"); + enterTextInSlide("title", "Agendas - 2"); + enterTextInSlide("Text placeholder", DOCUMENTATION_AGENDAS_2); - insertSlide("Title and Content"); - enterTextInSlide("title", "Agendas - 2"); - enterTextInSlide("Text placeholder", DOCUMENTATION_AGENDAS_2); + // get first image in gallery and insert + insertSlide("Title Only"); + clickView(BY_DESC, "Insert"); + clickView(BY_TEXT, "Image", true); + clickView(BY_TEXT, "Recent"); + clickView(BY_ID, "com.android.documentsui:id/date", true); - // get first image in gallery and insert - insertSlide("Title Only"); - clickView(BY_DESC, "Insert"); - clickView(BY_TEXT, "Image", true); - clickView(BY_TEXT, "Recent"); - clickView(BY_ID, "com.android.documentsui:id/date", true); + // last slide + insertSlide("Title Slide"); + // insert "?" shape + clickView(BY_DESC, "Insert"); + clickView(BY_TEXT, "Shape"); + clickView(BY_TEXT, "Buttons"); + clickView(BY_DESC, "actionButtonHelp"); + UiObject resize = getViewByDesc("Bottom-left resize"); + UiObject shape = getViewByDesc("actionButtonHelp"); + UiObject subtitle = getViewByDesc("subTitle"); + resize.dragTo(subtitle, 40); + shape.dragTo(subtitle, 40); + enterTextInSlide("title", "THE END. QUESTIONS?"); - // last slide - insertSlide("Title Slide"); - // insert "?" shape - clickView(BY_DESC, "Insert"); - clickView(BY_TEXT, "Shape"); - clickView(BY_TEXT, "Buttons"); - clickView(BY_DESC, "actionButtonHelp"); - UiObject resize = getViewByDesc("Bottom-left resize"); - UiObject shape = getViewByDesc("actionButtonHelp"); - UiObject subtitle = getViewByDesc("subTitle"); - resize.dragTo(subtitle, 40); - shape.dragTo(subtitle, 40); - enterTextInSlide("title", "THE END. QUESTIONS?"); - break; - } sleep(1); getUiDevice().pressBack(); deleteDocument(docName); From ac07c359fc7d24ab3febc75f1058097cc9e1f688 Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Thu, 19 May 2016 16:55:21 +0100 Subject: [PATCH 09/25] Update test for file from storage - generalised clickView method - fix workload parameter names - delete file from previous run if they exist --- wlauto/workloads/googleslides/__init__.py | 20 ++--- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 13877 -> 13993 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 76 ++++++++++-------- 3 files changed, 54 insertions(+), 42 deletions(-) diff --git a/wlauto/workloads/googleslides/__init__.py b/wlauto/workloads/googleslides/__init__.py index 6b55bda5..8e0116bd 100644 --- a/wlauto/workloads/googleslides/__init__.py +++ b/wlauto/workloads/googleslides/__init__.py @@ -35,6 +35,7 @@ class GoogleSlides(AndroidUiAutoBenchmark): # Views for FPS instrumentation view = [ + package + '/com.qo.android.quickpoint.Quickpoint', package + '/com.google.android.apps.docs.app.DocListActivity', package + '/com.google.android.apps.docs.welcome.warmwelcome.TrackingWelcomeActivity', package + '/com.google.android.apps.docs.app.NewMainProxyActivity', @@ -46,18 +47,17 @@ class GoogleSlides(AndroidUiAutoBenchmark): If ``True``, dumpsys captures will be carried out during the test run. The output is piped to log files which are then pulled from the phone. '''), - # Parameter('local_files', kind=list_of_strings, default=['Slides_Album.pptx', 'Slides_Pitch.pptx'], Parameter('local_files', kind=list_of_strings, description=''' - If ``True``, the workload will push PowerPoint files to be used for testing on - the device. Otherwise, the files will be created from template inside the app. + If specified, the workload will push the PowerPoint files to be used for + testing on the device. Otherwise, a file will be created inside the app. '''), ] instrumentation_log = '{}_instrumentation.log'.format(name) file_prefix = 'wa_test_' + device_dir = '/sdcard/Download' local_dir = '.' # self.dependencies_directory - device_dir = '/sdcard/Download' # self.device.working_directory def __init__(self, device, **kwargs): super(GoogleSlides, self).__init__(device, **kwargs) @@ -71,7 +71,8 @@ class GoogleSlides(AndroidUiAutoBenchmark): self.uiauto_params['output_dir'] = self.device.working_directory self.uiauto_params['results_file'] = self.output_file if self.local_files: - self.uiauto_params['local_files'] = '::'.join(self.local_files) + wa_files = [self.wa_filename(f) for f in self.local_files] + self.uiauto_params['local_files'] = '::'.join(wa_files) def initialize(self, context): log_method(self, 'initialize') @@ -79,10 +80,9 @@ class GoogleSlides(AndroidUiAutoBenchmark): if self.local_files: # push local PPT files for entry in os.listdir(self.local_dir): - wa_file = self.file_prefix + entry if entry.endswith('.pptx'): self.device.push_file(path.join(self.local_dir, entry), - path.join(self.device_dir, wa_file), + path.join(self.device_dir, self.wa_filename(entry)), timeout=60) # Force a re-index of the mediaserver cache to pick up new files # self.device.execute('am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard') @@ -112,12 +112,14 @@ class GoogleSlides(AndroidUiAutoBenchmark): if self.local_files: # delete pushed PPT files for entry in os.listdir(self.local_dir): - wa_file = self.file_prefix + entry if entry.endswith('.pptx'): - self.device.delete_file(path.join(self.device_dir, wa_file)) + self.device.delete_file(path.join(self.device_dir, self.wa_filename(entry))) # Force a re-index of the mediaserver cache to pick up new files # self.device.execute('am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard') + def wa_filename(self, filename): + return self.file_prefix + filename + def get_metrics(self, context): self.device.pull_file(self.output_file, context.output_directory) metrics_file = path.join(context.output_directory, self.instrumentation_log) diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index acbb97e64890a22e57208d40af973ebda948d30f..93599f11d516eb83806649aeb327869280961f54 100644 GIT binary patch delta 13780 zcmY*=V{qop6K!l~V{fdDH@0otw(;Z_Y^;s3v2ASpPvnjU2E&_V(!{6+-#H;5U|b;}kRc!- z%pFYK-7Vd}Sy=kCfDlcxHCsO0w;v}J9u#O~lf%CmCqvO2CS8=s$~U#zYGrxI2eT^D zjB+Mt9#0f2B9AHQTKZbT!@|H=((7no6gWU3g&^oLAuuo~<3eI4N`CaZU*?QbDPnHD z3XeGhQ|(8&ojIL3?zFc40sXcIw|H~1(DvLy81=W@d2OC^%!9`q>0K`OQ`*35T=$Yz zAuA?oo&FBR`!*B;iukBL4@=lzm>IzeiPZcsU5UDoz!b$4w3iE*!fv9-HKeHM1d0=A zC&&w^K&UflQutgbBZv=}F2pYAF7!9(Ct??%Mg$~+#tNH(I03B%k;qV(95f$%8%z{T z27wMa4bcn#fu^%4@eDS|M_Pf&h73UWA@sp{g1)leQ3O{~WT7xY*#$3xrNGDzuu5=K zkhM?`kgvheV0dtuh!^uLl?j6iR0>p6(6b2a3`8|NUobWV%M3gUgsBP971s`m2_E1g zr!J@o69hRHvPJ!2u?SGbkRAok5on-cXNF=+M0of#_ZEk>9_<|3puL(iEWuFrdAlwjmx! zWA0G|;JXmIVBXOFue>{gJK{UoBGnXfkQ*YTtk5ek)%L?((8JKbf|*4yA|cj;)q^%?71RLi-_XCwe2{n`y3o4N1E4a7%_l@iRge}SPJ-_g|_ZiIJ<}m076@543?Rt1aY z!|9-AL!3cOLHsWYst5TE!UqBH!TrYxHRG477vw5fRfM^oa0TKi2!j{ z-iEgufA=Ag_>jaCSU*9CygTv_VDik8D5TQy^l3 z?D7#;5bmI9AX_EFo%X{<{|CL9-zVa#UIY=6*2C_>E(v(VFtg z3PaC}voiKk{V>Jo5Gzj#5c&63@1O%skXa#Mf<(y?e#kt3b8)1Dk_g6Ug>isxZBm9l zgHVD}g6n|`AmM@K!QnyWA>o1M!RA5cAzFdWhR#OLhR;SffG|KXfH6QigZlekckeSc69fyGYv#wJNO6&Kw_P2^0Kh&Iuf{TUx81 zF4%uSjkq2pi;rh|Q(xO=4dXC_+BavM7v5TSesKbfPgawcu-lcs7yS)c!s>0Q6{il1 zZ=-tKIRi&D*Uz$VFq3;oMNlSWPhOM4s6C3eub%qUvW_GGWLN2Hf2%*VfWeon$yUSC zfK^`E@0sZq5zn&s6UrykP&<@0y{xi;YSKp`6+hFQSLCgL?ncC52YOAGuzEt0aUxaS;!9WHN%NcUS6l_9_OW$Ad6k@@T>hKp4f-}aMBwEd~*aP_0kKKJ~S zb`n7Pn9e$Ce{!C*Ho5I7@NK;{-sO`Os5{~jJ_a%{g?a+Dj)hpae-6|s?Ghy~sWp8& z9jI{SesZYj^LI}bklsjAztdB^gqZBJyOGWC3-XZ=1+j(S$TeJ!ETil4_xZT#iYcscTe@ z1&q`=ir#j9>81Wuf@y&a$9gaAX}$DMJv@33EF`w+3T-1^8KrU^QuAnhYHHjy=?jv- zT8w1oO=Z`Q)nwOg+Dg-9JAy9~n^SXV?qn77=I*RJx&fOPHXAt2@ej*FAo}npHSi^; z@>ntJLv9|Ain%~rq{*Y5$#L4DnByQYdY&-zGF(s@TS4%STb6sSGvx6X!}J3EygZ%a zKbV|`HMT{iibX3SmgE8$X~ta=sy6rMjp6`-aE|Ky}SXs^zlW(}1Bt+PUaB?7a{# zmh9*GR*L$Zo8%fF?>BEMw*#EYr9^*iWKV4>iWw`!<}?>rY`LDPYs#2`q^Tk@dA>Z- znLA8byqTgThF3hh|E=9=GS3%J*+qdbC%$wN=$~JYVf@6)KK17o@7e{pHF{~yq)W#= zI!Xz$tnBm@lbb(?Wt(h!gjk6FYo4)5O&}Q3xd2(kYyZB=HA})J0!_vIP!UZy#qj||$^2hODa6%>h)G)$h zHxyeAUgMG0b+T`dyZMC634b>8Wh3U3tm0xWoTk!znRiucdXqUTLxy?1rC#{9LZ*3o zLC2?1+m_k!rjXK!bgauKNYsXUG~MUepK`fmCkuPNaA(m6^i*Z_KIgZZ*r}8hV^?UF z31gh~ewXit#TTtrP)tPnrjN{Sn#>rGh%-KyIyjCg~TQg1?9%d+C|YD)qhmq5p+kve9;< z=+&I7B9B)Cm@#EZqzCtf*Be#Y=a!Mr zqN!=f9|CRCHwof_dMYJ?<|hD}55aTU>Dva|z59p$NUzM%(eX?2xPGbx`pMgy>(~*+ zXV6q0tI`M4J`qLgH~g{>z5VH#=P*8DTKZn-XU75{@fxXS_)`$}O!9*}vDaE z)YR+&2|a~|1$^ISi01SDqhgi zaiUZ^sDDtrn4-T%MNW=giX!Wt(aUuTt`xlhf`~27ExifTD0k~QD@3uwEmKx02p#A$ z{7RDJ)q6j+XkK&^)}&3ndDm8Bn@mF>8Ph()9XN9Mw0SIzHGWOsm$yaM%#BZj%Uh%J z-|_V(|C=-$eF@wwS_103eg@QX`uyarhd33IAT28Xjo1x>YRaVe&x>A;RMt*mV_WzR zDECgt_a~Uf9rl6C!?}Lr#(Ewfo&?Gw{0E;Ie{L~6qZI$1w&n5M^&=w|V=+7}u~`SI zk2>(H3Un;~lj6uHYqn0pdq-cBcGZogMBlS9-W$kB2wI#Qm@R~O!EaI(%S}ppR@`sM z$|*eom)NwL(a}ipQ`?Y5jM_KpGOZ&@%A%QW_fy8AB~Cx} zM_Q~4ENSKG@lU7sn&wIs+_XnF|2C+cz-!(r+sX;KFwak?h@O}>frOvRM+wyjLME76 zOH~`p+0O31JSfk6@a9Mo#DBG}+z0K1UX&#!|3OFx(o6Y6TH#40voam6l4#rRIE*6H zeNm&^IhY0E+44>ssMIi%0$)dQ}%^rJ}2g0)z2`fgI)sOV*Q6M^q{Xv_D! z$xB|;YBN&wD&p$5LAHechsOqhx_k|Enq_1`21mrgDn_0EBT%ldwijfI?_V0%tdVI$ zZ}jQox&0L8Nrv$szJ5_@W1GKSPx*zQ@fgjw^c?a!y$4pr`O(^~=Tf z1@ZPNfy$9=iQLgL;q*(N#+UDSrjo?r&yzBU9n5#Mac(3f&E?FXju<`z`x z2H*OJzzE6&cSY$2E~g9qY_R;VZ{PHlCY!N?_+r9deT0{rn!4yKb)Ge+cB7CHATq^^d#DreFjfxW6JgQgok)QA*xOD#l7cr(brd! zWt4ZS1XZd&09EORsdzE-zQ!o&(q_8tT6e51g!-wJC6OD{ph8;=e!t@IWxsJG^T4~t zZ|EO;TKF!tuiW&W)CDPb_a|Nz^!F#o%3RVCU-FQ4;4!@; z;zlKD_~+3?$f5@DTz3B^*ee$IN5;oL;F0ljUX(8L($3H7S!_jFbTXo>T@sl#HTPv}hSyq{0P zHShC zwAFKqNaA@D_*8StN#c3$3SXDQKyI8&>HSstzR7uf*+?xyBH*QxA|rbP7@v}Cf4<8* zZ+uQF-T>~>&%Kv-L+{&PbnY$BKflY6l-&hIeQZ?)gem44R2RXMuc!P{{B_f)QW^QZ z-QC8#2ObkRkZRMfRm78X$OTqX)q4l01t`m!Tm}&ESBEpx+UVoj=pUZ0P_T@84TAR8ourI6yq;xS$H^=^ zZ+d>8-ru8782|H-&k5HZ%yZ*k(yjVcDHwzaTgk64-8m1Jkuzw+iv#ab7V zPMi7(Ncstc$?oa;MP6%A4{=b~3SdjcS!`m6q6*G4!F}xu|M`ZNcrsRUfzvE&UY*#4Q2TOIC+U^CA_bOFWwhqd6l>){CJ+i;M2jI z9VtC>=OU{OZ}dG}q_u>Zz`IA)vqco`h9Z36=5jV~27V*4;w1hDdhU?-zT-`Nm&8`c zZ~kogZ0YS5+%?s2OO|vfw3`*+WdW2&vN#1Mke`A*9(AR|LkIM>x zKF~&t5NT#s<`{Fr@>F7lJh9wKKDAkH3X<9RTm-wT^j3_g_KRqC^35gfep_7sJ42K_ zGYE>=J4GnXHZ3=7);lHloBi*UM>*0}H<0x#Ci}@v{$|O5zj@=w>JNqI?&7GNzU@J> z;5QQX92Vf=zkwbhb+w4MXC!Rud8JICorlKCh-zSB^MA9ANw7EUCbd##yY|%)`oJd7 z?V?d&zA?!8Qg@$sBl(E!Ifr*SLj<{$L@Kv3Dch>LU2WC@p=so=l^s_Zf^?$laF=`4 ztL}kkYQ#utmL&Do_5Ge-iF3)xW7PXQ)$nOUG%8nFc=q(deCNC!oSqi*Da>{wPKZBL0LBOKyBmA$~0r6qrm@IMwKlq>?0sjNFmW5 z#UIR+S@$5)z5#984lmQ%rQ8E!86EFbZHR2YeC^)uWq%|8De8A&vbVuWVyt{qm8X1F zEwEClKI(qVIvuft1XYmizWUGri{wMq2_ZnO>dV*KmpXHAa!P!q?? zDfvOa8`;v+qOOqyhb5EqNU{t1HRCi^wzQ;&k{D@o5xzL?;NHz%kKF1FKBD_T+u7r- zHzpmU#;QSV*m$FMo5Yo%FsiRL?afmQ*byhn9V^Mi7r*Hj_4^n3Ex?!dQ~AUrw$go2 zYa+Z-eR8%W@ZMc+@QU+4FS0rj?$6jIt3OFblc>GbL2j8 zn!Q=yrDwKA@4E9rSo3W$g9_DYrw9B~oX_2?A>0QXiGHU$k3u8eiIAwU|=zc1n z=YOSFKF~Jh`*$T5k`qZ?KeP5+XO4KRMs$)?#W5dQbgdLy(tuDP*u1&9!WQ=LDg96^7sl%| z_nsAC6n`yC115w`W1`6fzc{Q*&fD=US1hlmF`oov+1A7RH^ZX$_rw~%+C&w>6tVnl z6(&6Lo!MeOC?SIxXDMj6DZ0a^{$!yBD0KoG(%{EgG&e3ooP-4BjN^J`t&(q!(d19I z7b)LQMLrcS^5lD^w;IEG^QcxC^J0@}#m8v34OgJ8fmyMtk*=6%rYAES_kz@d*RxU7 zwPlKz{_bG+heK7u5Y^oDQtgw+9z6&xBcy_89)T0D8%%N=8fa)fRPPM(SI_5ExE5&G`7*4EB z%23)G4$IXqGvBl=&)U)+T^6XoWFh$5|;39 z>Jjsg0Ky*J;Qobw9IW&2$~WTy01JW2Ha%_>A+I!PbRD6Qn^s%kxhQESTf@5B)r{Cq;8~<$4+~bM_pxeIrMMAl4>(HY9#Eh6rkO(Yc zuYUb_U#Wnm0-fZ)63wx!Sg;H{;TCFZk2vqtrsf^}ac7nqGlEIjqC9c+hdC!IZqt_N z!mhPe{@CLbgx|(j5snb-dk#P5?Hbvj^xlJO8p*C|H-lyz(O^X2Umi=YDi3E@Fp|98 zM_N0R<4Di=R-L&a@l4!TwvNSn`waLw8==H?U;7RI_4{P2+-h$$axUD`_oVlPW1c;g z$zgj$Dd*VSyIzspmAJEx2)q=?6xEP={J41q5#oHSXWz+ z*vWxA;$uN_Z?J1Llg`jj$4^AZ+v&rD(zK+qnWhzYiNt$m-mM(1#Ct{FTxM%rUG#o= z0O#h`wxwvK1HHoDgTcl)l&)dK59NCoF`HJRr^pvxJM0eO;0ybx1&*i=-H+EF0UpPL zMRLE)sBl=iIs2G@Zs58gV*|t&iY`aNjOn!h*~N0FYb!se-mE9Y@Z`2U#kQiI_)e9# z-lETnPt(;{V^>IH=`BW)YEf7FSQkd*}MZHt8 z*+NNEE^e=Q<7Lsje+(XQFr?jHO=iYuo*qQ0RSXzKX`_y4md;LTfaAC*Lveb>C5yqRc}h(&kGE@In#`6@nCz?NQam7 zGE&_O{otu*Cxx#?DbJ&L_~OGf{VK0!U(X$r+|$nFHiZ%8%p{6O19B&5t}8^nib}`l z7;S1TM!ino6So_JV*=bz5LED#$gM><`x9@NnA|=@Tshn1`DyEp-b(>=B|!_(W6gc%#=TNsjNf``evSwVfvKnZw~h6z=4&TX;@`^Gdb$ z9qYQ7qT(b*{*n5_9WA^#{35hqoV{*0UZLi+G%=5$380!x2f5n>hI||6o9ASny>n4a zkhxo&(dfO;|50(yt$4}=J$#41c}X}^e1nSF3nQ8pg z8D0DH9WXBT*5GRSh^*7c^;R_2UTkiy&0$ANSc`Zp|D2aeNz&yrCm|3yIa`Hvp1?cX z5?w{~^6~~B#r@=>B|f86l^U8Wp<lJobEi$MQQEeX#Lks!t-yL$6p zyL|pHXZMe&k`^RQ9`pb!VGIiDe>bY@L}v|@J%3fmts*E3oQydMqhl8ik^Q*g0|c8K z0OM-^c*Bz6dT90U6QJS0Zy-_Q1k!;+jI1~`Pw%2%Y`RU(Jh5X%AC5gfw$1q0)Dtu2 z=#sviL{(Y8&P-%#e(>&BZmnqQFB^%Yv7)xHZ>qKxgx(C-7V+wLt#|ELpbe5|l3d*n z`EY*Z2&E8&FyWWPW|dYxJk*}FkdV|c1N*8K;fIx}p01hvx~;VZPJ)(W0f% zOPG*+1)R}#Vxgh;YTF~mGPu8+ zgHE%CN|!429KOE0a@ouHJGa+0{PuPd}E ze2rD}c9axA!sf-GgjK?ompdIkP}qO^HBsdUo+kvCAG{CsJql`g5r3ghLq>9zN`f^&+o8Ox#L!(H>=#S>uh{|f&?@Hs-nerPOe~E3h93G1n??G?8{fSF_ndQ;6@f)p+mL6 zQ5;UAmE7RR6-CpSb#lT#Vq-_%R1utP@GDf9-?9+fS0#MLAxTcLdZ0Q~n5euSkufn& zeF^V6ykWS=(#?snd}k+{i`5Yphnih%w(*1l$hUs!=-@if=tmkO$-z5Ad}2si3#tc6 za~={^BmU@sXBbHyA&7nkpe+>(dXV@U5v6@}#lB5DuW)>!KSh%au(W@-8|(dHc6!L% z*e~CcZ6;5rMJASh8r}(Vd(@bT{nTjO#1k1+*^eQNdVZQ1XpK*yp2}1CkuHh4FT6<5UYcABur2@}tBp;&2`!nu-E>TEX{s@~rD&;IY$*;nC-#cVn)f2eu zCxwIVaeH6JPF(sTp5&?#eTrCTQ(Qg%{Zcr2v)$Y0eud+ECZS93bu@l2bP{Zm3tU43R5^D zgh!a2vl$?V;&`n1?E3t=kT~p1^674u!@7cd9jg?l`0dpvVO>&Rx=m#J=tvTB8ZmW1 zbwn3qMH_VzA|84zg%u)klxne`otZ}Ega8u&+6wCWOx8#OIwQux%juj*^bSa{uTt_^ z-3=c|St(Suh%M-zkIS#1U{YVmn=c8Ijt_$`;@1w!YF=+ViWjoK+}?bciK$Yw`*p@^ z36O^BC8d^QM{nGZXi2H$7ue(sjVOxZ=$A?Svk^6Yi!>y^ZjsCms3kSRDYR+lu3{$_ zD}L+*)mf(k++(T|X5T!uIB~fh#8gD*hh-ShNoQ{c3e)t;dAE*z{QOA1J&@ouy9!+M za0MKfb<8U6GjR4isgm)3ljTt<&^ za(a7f_vm;Fi#6`#flJ4dS!wkY!|)BMX#FqS_gaz@pvC{~W&?5Tx8#e)`oAGzD>rfc z8bW&I0*O;wYjRadrTKXl!;=ED{U2V-7BH>S4X~Mg$V!bFrDTIx;0GFw8(`2t@U_`z zR~mC|YhCbcS^n2S7QDEcJ-FJES36om<25=_Nqx`_TnNs>&i>}(^=YyYFRQGSL2K$J-WXfo2bnQP|6@tDSgn0DRJ(AN?uyx|1^ ze&QfEAW|8YFJxIRA#Tyk`SGQlz?PUP$O)#Nn66yMHrhzNsM+UYiE>VK=KN<>2I3=~ zB336C{)*^vbow8jgK`+@GK6_EhrH?*)E3WELOa&5Q=+vKo=v^(j@nZ3vbYwnofw~5tpJHK@1PI166%z3+xaMEcAMm|0 zw~0g~szOJdiR>|jeLY!GiI^1S9n+CrhkY)gHV#!-nYlb$H)F}S$)wyrGK{=c>FZ{l zVH$n9@+WM|HPK-dw^SUFn!4IaO?tG4+Le|S&GgpQ)~9V}2qd0Nzp7u#2hleeHXBsZWHEb{%( zI>k`dJ>|)U>dX?(;+ZU1;UjS1U9PYh*IAZrzZO}p)mxukV+u89Fup|InMl0_bcs$# zkDCoD_XJL6q|Lg@a_8hd}JVrloY4E0(FiPO*K8@ zyL-ms(Zc!*5PGjyT=aLaZW^LcVTPlt#LY*d*VaKi@lS@OWy8~xMICJ4+vJN}=yjxd zEi#y6*+Q6!bJ&J!TS zZ*?O_aqeuW6s~gRt`{K_m$dQV;_~vwVFL5_^X1y?oTzoAO=Qjw5J@Pntb?qUG2$m;+Al2iSiQyw^C*g4s|s} zTfBk3bW^H}Q?|8sHVxMB4efA816+kK-|2oekt}a#-#ixcZ325N$I4)!} zdsZsEMH(L0KYDa53t{6W2{5Qdj7tu-7fX`~g`PP)C;eH+y5p)4B31I3-r}qAMZ9)$ zjEx%4IJsveoTn*qi>-qfAeM1hn;RgSL&DEJXLw!q+s1YQ z?{CiF5$3j$0XbLfSjx$F;zL26k&?NLuEhQi0qytV){!&%_A5Qj{{4$DX>} zRBmKj9VHC&xw+y}>||L6=wHXa4s%42e$gGDQBE~1>wzu+9C9w^jHB~$&I5m5&B9Qp zx=Lp3A!UP2nGBNA^ECoSOw2D3_!A6FN>Dd%X8sIrVrVE;_75jgmdJ!OrDpfkh;NB} z8QjCf(d{uMI~%&(Xz`QCEgl%#`V(&A97#hnI^=U)k=+vC+e#jThg)(_lWRj4=4)iT zKX7<2{aO$TAV&~)2dmIQ75I^R%h2LcKU)nOLWy_2EI7(IO~wiwl|52-=O}~wP%qIN z!108n<<6YmvgmSZ2_V&Y>d`2P zBIk$&ZB^O?avJR~7&HB-IemKB}sHVNwmoAmh30Pd^LxuWf5XBLjxTI+gYl~ ze~q9xZi!9(?65K@kU`(}NXflZf=H#9z!$OrjOjF=cUEvxN>{#R+oTXgM?Bx4xQDgi zCD#%hY+dcZxduqNX z@KYcs0P}oK4c86sUDXTZ(Ys>lh*0>|N{_91!DaWL4+rgGbhdbmC9rDNa}3QK@2d7M zK>BwlKbQ&aI=>Q1u$lFwB2jHc+Hse_Q!1s%>iW5_q8_~|y~bv8B<@?0-BkMaTdAZ} zYrH%!>q<}7A8DJh8AL9!)vK_zS4>#jGF_ykZjZ4@zqU979b47kU-9cU$n6YOLN$S!<*YNQ8m5H7$LCsQZ z%a$Mj4@L4GF|stkG@Ec%hfd&OK_)5AmX4aQS-1O;wah4sc=kLnR#-Dh?{`jCD&VD* zT-{hCe`DXDGN{ZrCN=wkkz%%0-@`Q`_+M33_>B}5b3lJzL7%3xXoqN^Q*qRrrU^+G z1JAD$Ho69OBwqQ^7xDE|%7Q+x_taKu!4{Mc1s=}h>=T4V*aOe;sBc2@)jGo2bhLmH z3$3<7w_hSMBzftne`xnuCW6fhP4hpzv9@=rzpLl#dlOAgG15=iUR^_H7}ByA>$*}2RclJTq3;c{?X0S>6ot29|2zZe4Y&zG8t9!ky3gi2{Blf zB|MfRb?8QqD)o3AUD$o5Zpw&&Dk7C@neV{$wd zAg2u8)s}X1)OLllv@2DDo#W-JD8y-3o!2QYO89bE!fEK{Cud1*|3?x=%S|FFS*G=e zhiF6quT&F)__Ky*xwT0G)kz%l8fKDp7Cucws1nD>U@!kkWj-ZJQrA;kfrPF`NP=ZE zTweM-fVii4+g8dr{z>{-1C)<+iv}7|3)dy*mEmu*Pl+9O_tWH9S)E}$^Kx2jIK-#s zFvjAcVdYvya;S7Cet^thSEXLO%zbX!hptvR#W(tD<{VZVq|^;eN>MU~QV-2cJ82c! zj+M+wHz{K0tLK@umnPq|aSP2lj3cF0oPN7Hn>R<3E>?8MeY9xa0nJL!M2}xRy$$BK zpG2`)IUK4Q?CFwOc=I*e&ITo|GsEjR$(VKrb zns!?VnQqwBQ}A0)J7pWneqx}d85Sr&*zTRJHdSP&>$O)F00xUHQ*Q=o)0#K!azg3P z&%4ws=$dovRPX)GSta*xs*_~WO)2raVJ~!s6KQ_l5mBuiUXBIHC~MX_nVoS5=?L0O zU*`Qr=rZl*D#E+R722l^bXILTOa_!9Ect#e`ox4P1RLngjN(?m<@VFFVk>3sx?EXg z9wx-;@vNBu9$FDV&l3z_fY=LVFwy z(=Ig+F#!pZb8e}Bb6ohNmNN6A9u@bMaFZKuru+ZRKPTcDXSGDrsuf}gz)AAL42UXFa4<2=S~s-L?G=$%7QbQ%Jr_8nfr>bJOc{}f`T8V+kH zZAkk20?2^sEOZ2uU#00xXn3l7O#7}|#=h&kYbmedzNP+B_YhlW*tP<{3GOb_Q-iIk zw6KGYVySC{X%vCeL`7J;l54T%T%yj*&_6sgthKB{hlZ}1rtIF|Z?%cic7;VwTcByW zovkK>q-y1RlWBPW@<_&Cx+OJuaw%cyrnMXcmtq^mQ}fP51gX$RnI6nGMXp##%6~L7 z=+&~{LJw9zIXV5Qcj2rbP9J)tA{$DU)|Lk@wC^(*+Y(&8%STTV+=3R7+*0xv?E4hS zRK8M?uTLu4TwGdndR%>-UZ5U(tQ<@H%U|5&pnC}i#g0DC20O&paxCPfB>U8TLO5l> znZT@#B7KAF5Q>eyGb#Rv60+O=Exf^WRBx7KCq04YNy(%Q;8h zPV>t64EK_vC^n5hGt6UwC3=ljuE&)W0NST3b~jAt&2q<{8Ly+x=mZColUdTg9$BUe=NwPs92aaK#UL45P1MAdJiC7!pdcHcP$# z*pWVTuT=Ybk%YcI6_fYwtPYma0X}XoM2EW$4J*vJj|d-zR<0$2m)Yty$cLk3*1c=E z+Bpon840n!4rAt(TfA6U)trsV)$;U%QvEX2nRw4NPD5d(V@~mquJK(?zEae}KR`M& zu@4T$Q0RXh=mgtKBVXUBQ3$~bm1FF#$)!Nn8p9FP1ML|837BTesTgg`0Kzq=i)ao; z8x-EMI9!+JG|1D?wr;PdcE8t++|t8%PX|4$O>0!BPAX5kXu4|DRwYg5&AS0a>`s`Q((cr>h;{X#eK$bYcM4+u zj&yB6d)6QuNgHgR(DaX1*)a0;e~5JR)B_1h9-R`R*AmxZz@e#N>>F?LaNyKolga(0 z4WtjUPa6^QJ;Es^Qyi%0i>oV(RRg-)PD>z#*K05{K61UYNF*Zw{hy!j42CrvTWNlM zEh?hD@)yB4)6$4tfV*C%@ESn>2{?cKaE7|MG#dCc6#3{*c9xlEe1y#5ym5xf za=PdL@9kCdKdoNx6gEu0*112uWxBr?w|yr+KjKWQyq>qeaJC42Zg!{De0-pMbViW0 zo{)WR4iujz0?SP}`lHX=>~DaIJS5Z?=>KQWO7`aB{pZh0ZsZa{`~MAEN#9xEHo5+J Hv>^Tug#t75 delta 13664 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 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 a8b67e6b..47937f2c 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 @@ -52,6 +52,8 @@ public class UiAutomation extends UxPerfUiAutomation { public static final int BY_TEXT = 2; public static final int BY_DESC = 3; + public static final int ONE_SECOND_IN_MS = 1000; + public static final String DOC_FILENAME = "UX Perf Slides"; public static final String DOCUMENTATION_WORKLOADS = @@ -93,9 +95,9 @@ public class UiAutomation extends UxPerfUiAutomation { skipWelcomeScreen(); enablePowerpointCompat(); if (useLocalFiles) { - testEditFileFromStorage(documents[0]); + testSlideshowFromStorage(documents[0]); } else { - testEditNewSlidesDoc(DOC_FILENAME); + testEditNewSlidesDocument(DOC_FILENAME); } if (false) { // TODO currently unused @@ -104,38 +106,39 @@ public class UiAutomation extends UxPerfUiAutomation { } protected void skipWelcomeScreen() throws Exception { - UiObject skipButton = getUiObjectByText("Skip", CLASS_BUTTON); - skipButton.clickAndWaitForNewWindow(); + clickView(BY_TEXT, "Skip", true); sleep(1); } protected void enablePowerpointCompat() throws Exception { uiDeviceEdgeSwipeFromLeft(10); - UiObject settings = getUiObjectByText("Settings", CLASS_TEXT_VIEW); - settings.clickAndWaitForNewWindow(); - UiObject checkboxRow = getUiObjectByText("Create PowerPoint", CLASS_TEXT_VIEW); - checkboxRow.click(); + clickView(BY_TEXT, "Settings", true); + clickView(BY_TEXT, "Create PowerPoint"); getUiDevice().pressBack(); sleep(1); } - protected void testEditFileFromStorage(String document) throws Exception { - UiObject openButton = getUiObjectByDescription("Open presentation", CLASS_TEXT_VIEW); - openButton.click(); - openButton = getUiObjectByText("Device storage", CLASS_TEXT_VIEW); - openButton.clickAndWaitForNewWindow(); - - UiObject selectDoc = getUiObjectByText(document, CLASS_TEXT_VIEW); - selectDoc.click(); - openButton = getUiObjectByText("Open", CLASS_BUTTON); - openButton.clickAndWaitForNewWindow(); - - sleep(1); + protected void testSlideshowFromStorage(String document) throws Exception { + // Sometimes docs deleted in __init__.py falsely appear on the app's home + // For robustness, it's nice to remove these placeholders + // However, the test should not crash because of it, so a silent catch is used + UiObject docView = new UiObject(new UiSelector().textContains(document)); + if (docView.waitForExists(ONE_SECOND_IN_MS)) { + try { + deleteDocument(document); + } catch (Exception e) { + // do nothing + } + } + clickView(BY_DESC, "Open presentation"); + clickView(BY_TEXT, "Device storage", true); + clickView(BY_TEXT, document); + clickView(BY_TEXT, "Open", CLASS_BUTTON, true); + sleep(5); getUiDevice().pressBack(); - deleteDocument(document); } - protected void testEditNewSlidesDoc(String docName) throws Exception { + protected void testEditNewSlidesDocument(String docName) throws Exception { // create new file clickView(BY_DESC, "New presentation"); clickView(BY_TEXT, "New PowerPoint", true); @@ -210,17 +213,16 @@ public class UiAutomation extends UxPerfUiAutomation { clickView(BY_TEXT, "Device"); // Allow SD card access if requested UiObject permissionView = new UiObject(new UiSelector().textContains("Allow Slides")); - if (permissionView.waitForExists(1000)) { + if (permissionView.waitForExists(ONE_SECOND_IN_MS)) { clickView(BY_TEXT, "Allow"); } UiObject filename = getViewById(PACKAGE_ID + "file_name_edit_text"); filename.clearTextField(); filename.setText(docName); - UiObject saveButton = getUiObjectByText("Save", CLASS_BUTTON); - saveButton.click(); + clickView(BY_TEXT, "Save"); // Overwrite if prompted UiObject overwriteView = new UiObject(new UiSelector().textContains("already exists")); - if (overwriteView.waitForExists(1000)) { + if (overwriteView.waitForExists(ONE_SECOND_IN_MS)) { clickView(BY_TEXT, "Overwrite"); } sleep(1); @@ -240,8 +242,8 @@ public class UiAutomation extends UxPerfUiAutomation { public void deleteDocument(String docName) throws Exception { UiObject doc = getViewByText(docName); doc.longClick(); - UiObject deleteButton = getUiObjectByText("Remove", CLASS_TEXT_VIEW); - deleteButton.click(); + clickView(BY_TEXT, "Remove"); + UiObject deleteButton; try { deleteButton = getUiObjectByText("Remove", CLASS_BUTTON); } catch (UiObjectNotFoundException e) { @@ -259,26 +261,34 @@ public class UiAutomation extends UxPerfUiAutomation { if (repeat < 1 || !view.isClickable()) return; while (repeat-- > 0) { view.click(); - sleepMicro(10); // in order to register as separate + sleepMicro(100); // in order to register as separate click } } public UiObject clickView(int criteria, String matching) throws Exception { - return clickView(criteria, matching, false); + return clickView(criteria, matching, null, false); } public UiObject clickView(int criteria, String matching, boolean wait) throws Exception { + return clickView(criteria, matching, null, wait); + } + + public UiObject clickView(int criteria, String matching, String clazz) throws Exception { + return clickView(criteria, matching, clazz, false); + } + + public UiObject clickView(int criteria, String matching, String clazz, boolean wait) throws Exception { UiObject view; switch (criteria) { case BY_ID: - view = getViewById(matching); + view = clazz == null ? getViewById(matching) : getUiObjectByResourceId(matching, clazz); break; case BY_DESC: - view = getViewByDesc(matching); + view = clazz == null ? getViewByDesc(matching) : getUiObjectByDescription(matching, clazz); break; case BY_TEXT: default: - view = getViewByText(matching); + view = clazz == null ? getViewByText(matching) : getUiObjectByText(matching, clazz); break; } if (wait) { From 17440509391ab66b70f1ccdee0cdf1fb36e1dd08 Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Thu, 19 May 2016 18:23:28 +0100 Subject: [PATCH 10/25] Finalise slideshow test --- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 13993 -> 14116 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 10 ++++++++++ 2 files changed, 10 insertions(+) diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index 93599f11d516eb83806649aeb327869280961f54..93748443502976cd3ca0f6a1fbf4fc7a3de2a07b 100644 GIT binary patch delta 13904 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 delta 13780 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%0D2$^7N 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 I^Jqc*A6{}aLjV8( 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 47937f2c..b31dae21 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 @@ -135,6 +135,16 @@ public class UiAutomation extends UxPerfUiAutomation { clickView(BY_TEXT, document); clickView(BY_TEXT, "Open", CLASS_BUTTON, true); sleep(5); + clickView(BY_DESC, "Start slideshow", true); + + int centerY = getUiDevice().getDisplayHeight() / 2; + int centerX = getUiDevice().getDisplayWidth() / 2; + int slidesLeft = 10; + while (slidesLeft-- > 0) { + getUiDevice().swipe(centerX + centerX/2, centerY, centerX - centerX/2, centerY, 20); + sleep(2); + } + getUiDevice().pressBack(); getUiDevice().pressBack(); } From 354602fc73ff7d77d6179c70281bd17920f7ebaa Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Fri, 20 May 2016 10:11:37 +0100 Subject: [PATCH 11/25] Improve reliability - scroll to find document --- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 14116 -> 14292 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 14 +++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index 93748443502976cd3ca0f6a1fbf4fc7a3de2a07b..f0ff5ea5963a9eb936b4bc92275a7d64b7daef6e 100644 GIT binary patch delta 14086 zcmY*g1x%eyumx^$FD>p;pvB$Y-QC^Y?E{JwDemrGiaVDJ#ogVCySu*rdC5y&vdK!a zGka!Eb~3w}B8OQ=R3%x^2P7yc1Slw6<%W1v8W7IEjw=HAHR63_&->9y;QgJ&qzi3ryXm2~$WK)^zpZ7C{Nyw+HEZTj5yx6|=HCtwUb zI_BBwBn+r$(a4CI@=JP4zwsJJXE zXV74HKG+k`8N)+M_VHKL^DJTp)h3rBY z16Q#d2o_=W;9m$I2$brGw~_2%JwQ0n%^-B>31~;C7>xq*O(`QPC%PKY1DzAJ6U7DP z1=5A3Py^-|oCXX*knq3b>_Uhj=)nKtBr*ljf##t*A;g;^n--7*(yvfqfzF#Uo6MV< zkd2_vX+^ey9GhJKYy_)^`~rUgb@BCr=ioDuk0w3NG zC%;6~#({P~M38idXV8666>&644U`sQ1Iz%7DC7?W8Il_`Iwn>uL_dj|g@6LBY=r(# zocZQgNGGf-0+0qf3U3oM2XTg=8R1-TZ=!5UYTMbPntt^lxYY z<_!jTK_29aFT%B_z(XE6d1&Z+VPE?14TK8$2PltZ5jq;C^glo_ zhVTy1U{J@07qkcD3(U>4??eD-54tjlBM+X77#C&>QVv=A$4gYmD?}A?4H4L66jBfz zhTelh4#GF0s)0NB;1jqVBy2?O#N)*7#Cd^xLH>_~=nyPY9vCisE6`J*@ju?NY<}5P z*bLZghipSwArpa`fz3f6p*yG(VkIOski5{hNmM&nav>C&@WXQ8ACSdmsZ8=K zj441dpmpEoV;X&0ggvnkM8JhtfD=IWLwn$J`dS0eg~~O~+*ZOeHkNy(j zB!=Z~)&~zVL;*-a>O3#?$ubKiDcXg97{8-y1`%dV7;EZq$%fay$_k#l4>liNtROTW zUW6kwAJ;U>JVr0Ip$;5eOt|T{wv8$fS>U1VmxdzG^Z+w6J>opkr}3LM3GnXjhZiUz zoCi*iU)2{@8`}1u)hpF}_dx6je{S4n*!byYe5C$u=a@adHN2n)sP}%#`|$ zOeBE$7r=2(du~?@4~GES;e`lY1%FH{Rah)ZUlP!AV=oxpA522-k1ranubPWO&lQjX zXy^Td?`bBvxkX#?a_13gb_+{e>5 zMx{fk3#B`i7y;_x$J19FbCvEL8nJzj?rFF0056fn>$^et3h8?o+O<|k@t=X9_Y$=F zocFvx|5O?(AZr$fir$txnJ_dS+&Ovq>$I@bua^Ab`_1EKKutFYke=kbv(S@J;U(15}!mP?YDBZq&aKkCHd1&&yRAWU9(!2+i2^y1~8SABooK*Z_ISCEn zIWsSwu;)aQBX{N$IaJ$3b;KnO(wsKS^11P|qMZqCGxo;*--Sl+tNs?d|zg>UuY1W zQIKY}sxL}+>nQSe3ocn<<5vczcip;*lI#2p4oJtPi`nWU2gkQxJ!$S%P}y2Sw{#+qZv z9u}cRGw$F+o((rCFyra4vkF+M6zA}U+^bAd_Kl5J^TYWK$ePi{+y`LZ!5M1#&SB*f zU7{N*1E?)yu`9?$nRSF7HFRo|9qQ=N9`Y=c9oisCw}pjK>5FY7x-t73&QMeFM+Q)q zPXiJ2|20IN3wRR+?m6 zsSbwR@N((*PgQPOG^SOS$roeS5PMgNQLt1}c1P7Ozt-UF4IqdGU|`GD+`G z*XA`I)B+eM*B+B`MfC@6-IfIE<6nE*Lkj{XeXNQkY8d?}`(V#)6`m9)C4R+PSXm_+ zEz6h&zvgNuQ7_&rH>l5W$n#TXXBBN2!el|izX*jiY=CAf>qW_5O^VtJzmBKwi!7h2 zJrPM6R?Q%PNq*;xB|~#)KECOZ-gWgMn(iu|DFqI%X0AOcUhjGQpFTZ4$2**=T^7(z z3r5{M@^pGdUNK5M^=FsAA*@Y^J)ugGEF21C8x+g{Fj^NRz>k|$@*~10479%+=#}-< z;kj@INR@t$R!`L>z{2dT_gcJ~0U8ce{meABgo^dQ=x%-Ku-VJDBqf&YUstkk{iIIs z3Mh)rjdW1EbHhw1gI7qwf?OH0J;OBL-O+Y+#U9tvRU%x+dZqBA+|{-)la?p zpML4c5K|z~_O?lpo%qCr6+~w%(OFy242HzqI~C|l%*I#ub|oNsO-K3VAtPX z=vSDnOIMbI-ibT37gkX z>gjXok_E-|HwaX7)_Uhe%`)nk@~&V z)rDpLU0FDMJYj@5>x?clTYP)FBqduejQb1Dp&O7{@OifX7f5F%QdPVEC-yFf7 z^`~+jxv)*YbQb+M{<5>uo*cNr*3b#IpEaj}s4fJ0SY8(8>N3SK_y>p7T7t&U);x); zXt}JaVIYKX{t42)(;pgZ!mdQdnfwQItP`VTj>3;!Uc}>j+%(u@%{RDJxN4`_Y&exH z`GS9F)TXZyQPU<+U43(e3+1Hah85w90R4=I0NKb@#}|atz9< zOUvy9g4HLNibYrs_h#}|M~ml9xSpP+so7EKedgyxYWGX9vx>05xJboVy6}2>sUYvz z<<60=eh8j3ZvR3y=AD+6BKBvlVe7*%z0o_QD{hBgyLW7bzH2M(@pJSaSyv0PyTo6L z>=sR##PPn&jJ~F)_aAEVaf9z8+ZiKF{vt`1UrHC9$4`e9&hlyby{KV#qDhYlTh{gIS!QS%)lDGQ{>qT+TqU7HV<)9JSPSfXJ+ES^ydh*G0 zyBqxVUzV^PGLcc}KTmgB-?r2K_0Bleie#Rwf-));ir0);d#X*KXL>`-pkRJLQ(`2Yhh{m^CH} z!cW(q@SawC-}hjX!EH*xlFx20j=~9ot}tCZL%HlhU2J83i)PtUn&((av06B4o*?B3 zmjKm3Oa$MvWd60oCC0;fAKysUb;319hC=2tzv2i>m|SJj30S*Y|Nf04`|Ly>f~uTE zK7!dFC`61B9WRVW0c&Eub=DNXa6sCA)NWr)gV>n_(c(GrABIm&B&GgV=U7^m4w~hK zC@;K+%~qhhLAgfB9{7nZ{ws}ENdrnx;S-{9{C&*9cT}%U@ThX_%r%|Fa`sS`Y}tz< zcge{1(b*fOPma1Q_{5S%@112$N7wX{sAtVe8`bwZCsR6`1svshwG)7trf`<+T$m-kuN&UhxuK=3-=}PPEOb$nj2RN9%J}`l&_P8m!g! z5>I#%k8ZS{{LYS<@Zy{JqFaj48HYVg_fBSW#sKgQ&EUI4!2nZJ3jM5?neNcU-43Ygr&LQ_}$}aBOVTj54FU zSFiWAp+z6}%Yws!1`o?D-k69lu`q$f5PKNAQ3}0=ZJtbZP?;Wx()JD9fjEr0=AYJ% zy;r?$&Fx80n%o5_`kdr#2h;h3-%h2Eu4&gB;ceYHykpZfeH=x#Ox|2QoU;+ojTIH|l)gyAp*A@~^P-7_)%X&Nlq+XFuBMaru%<`=EiV zi0i~GCv}v<%x|xsWY4_E-m_VVu!gH*P1)4aZK9jblyco^`*Lvm!ou(l{!Td9<1ieC z>TrGL{JXvS%#- zU!^q`)`t*i6ZJRvJj_F<+7oJ6jI$JwNcFJ@Mt@t+Jm< zM0y(-<*={lgkCT{M5nOxM)?;RkKWj2t%=HI8&9B>giY8dG77?)-+lM1P_GRoTuJ`%YiE(1XnXFJrFG5t*~2Gzm;}YwA+eIfJ(icg$PM>a41+OL zJ__)8aMjS|mu>7al_7DnkUAuIYegV&MWe47|vc6=^_14}MaZ2S$3)iyEw`nU_AYWjy(C`&#HetQ4d2TQ{+$A^9%)B)#)EQ>RM~m-5p6^7k*la|a6jzcf!2pHonf-E#9ds0-yJS_Y4#oI6wn zbvE=~rF$k$1T%*5q-r^=SvU$WzTw|}J|U>7=ai45d1oEEKW1okY_YsD=)Jz0#u%EI z@sjO)g!Q8^+4#ZnZ~#5p>spRNeeYeTFh3$L^|#H%Yy}*~U3Nk|@yAw_aw5MfT^vw} zbXOvM>TXT(rQJ66MVlK*Kw0`t*iZmfN=#KaZgKPi00&C<=L1ELIg+JovLs*5i&c4J zCbD>qOPA7`W{S>Av2OXje>`CaL_VRtf4Y6W!njrUk9>-G_;5>gwy}X$?pY}?MKdrc z8=?KD-cFgN-pM#7{6-efnrhn}0Wud-)J615)B8ND3jj4Hn>}18a9fB6yoohcn z&iv97ai{Z66I74b8vo9lJHH##LBoNZmyP-xTsvZo+?kv+zdtv`XRPP(m6uvGmKw)O zu*qlPq#ZF7V1xg`sGp>You1$xZ2 ztM3^~4vlmRxpem$*|JM{`24X+Ke^4dmfU_X*gp3*7n?Kh*XU`xfNRkdNi^<}OVv*s z^o!2)_&srODoagupVnIv<>yHgmq*{_e6h>zsFMl z+p}-oZaw(Rv+FdTz%jGe;qRb#ah>xEZFI6bbt2>y&F!Rv`T!^*gBaG72_N|fLV4*W zNz&)sp+&_+bJllGY2dAQb>z#AN2D5EystNlTM|lk$Yg?Wzp=B88ShF&Wl7{=wq<=e(-(oCvI?Z z5-%OzlP$|!>Oo?h-e(TK`Pfjj%)b>ME5>*B3*_e3&%a0>+X7cP{Q4l{XTE5oYQMx$ zju+8U#HJ6$)h7+URt99hMPfTd^tePjjIX{rN6@*yN#X&Nj>(Fv$9KeSFOhQCII8J_f0k*pj`h2D%BXxqKuR&MDLt&8b?h zZ?m}9L+#~upz-1u^m3xGp?w5oB^`P?y7YppNk^ii^3 zC8VF}WRrkR*4*MNNi9Ru>3Q=*&lJwkxo6ZS6}%c1yFWtutIsGm>)-AO6imAgS?+Wd zMD-H90M?-mWQBLn+8AUa%V%$pm#0<07B6`t12(zMrYOl|JDs|@ls@(IP~r7;=QYfxyuYL5?n-&yrwkCfUZcXg#yR%ddgf4G zGkCL7_l|gqNzg9IpWY#u?yanOV;itus6MiK!bs z`H7huKl!e*L#hmeibL}ZgX+W283yHt>KOs*|2^|c%p9|I8q5%|$sf>Pu6>DNoVhe_ zknCUB4e# zNpvR|a&00jw~3N%rn-DY7gZ5$?w<7Kt{OLO)#12|$rEd?6$|*f6eoZX9_40`LObVH zT_S14!?>hz>S(j!j^~o50~G66P>IMLySHZwr5?M?+YH}VqpdB3fC=mTkEo||`ewPB zZ9Sce9Lv^7vR82Ma*ktBC)S9rVq*ZYy%;zu?bBFz4p;&V!n@cH6n|Uw{cD9tSMiYH zdMFY^zrER$W%hG?FacpjS|jzt__MUzIw*>+l&G3zGhB9z4Ev`$K6$4~byiDTc77PpNlIK} z!bP}$-u4L9&nDIuiwRSrsmokVSk%uq0!S4$nDBd=3}u!st@0STFi?6=*F@hid2yR1 z$?xt0*GLeznemas;O)CQxj(L8Mm{{Bswti>T6qN#q1=Z`JZoFsE7dp-uK$8n)?@m# z6t@(+r@}3vS+(nKS<1B z78jXvZqhNfzm-!Le|hD^No*`6bVsMtTvydqlY$$=$~xilY|pgadU*%%Zn&U)XAtz( zl$3y!Bf!E*v~YGOf(BWU47e1|`kTV4tL-Z}-90@$;xzkomI>xLsJ(LB3>0OrErwOI z&cf#G$5uEzN^q@05-!*!!osKecD2I?>N5s{Def2mE4G@feLV+LO2YmIlpD`{N$9T* z(a~W~t-zfSh7K)1p8@cd#I3g|NxvK7!0w}DZ%Bu`E5Oh!D1p}bGrIo?#zPis$AUz~ zfs%;>Cg`PK3rfC@Q_KV2gn+#J0wLlHOGd_^T~A?IdA+l$udAe|sHd#u0LMXLVR^o- z?rr`@YE`o@@=AiF329t>0ZTV6=ccT#+S07YQh*Vxyd&`+nb<-ugQAGW&(wroQS%LMRrc#GzuH|@x7+NG@t5cAR#vBHJ7cnJ z$(cu)h7AdR#6|=CFl(d)FU;>wS#?-dmsWvd$awVjW=#!^WRt=%DaL0(^;CrDy%K}J z%7`pwA+_;ZMSz;Sd=<6ntIyjnJPqCJ3zci_Po0h+$Z^%)5j56$1%6^7& z9c)@6e{MGZQs?p&-t>)T-m60;#-9E&QC1yh#V;yD7P61PZ#{l|l-r3@>-EJ@=Bnc0 z2)uik-c86$wd7KUq&5hSGH>AWa zTm7Ua`iA&{w>g)RK<|3!11~v+ExDD;wU(h!b&gKP`?-q=V`PYk-J#9lAn=V4AwNUv zWLt;rqY(%hAi$`U!>^Qz-dCdd0?_+Q>_($%R-h_aR`XeGPhn&egic43?te_!jFcVb1w>r3LS|7w@b z?90Wk6XUK|!@^*sbB9Xd+<6IpOZwH{J+vlTJ9x%LfUq9*?R%O*AqW(tl?RwYHYO^# zxy)VZxO!+?hmzQZ4g5o~wh+s$r5$9sczCASgZa%`QqVFZv&&`@<@nMPX_|$cMcyuq zc8{ch4*^D8OIkyAgjWM?Fuam~sSBJR4{2ozy{)VEE)JXu5-2H_y!xc^in*;%Qj}b?Jy%)J*zFT+3jW$VnIgyvH39_ikvQBdm#aB;(^Vz$F$_&p^_<9pnS3ne^ z@nUtH^xVe2GrD!c-VuB_XePt{W_1>vF=3KGjo6oz=x!vJZCSJ}s*yBOhWpHj;iPK? zJbU`D&ADM(qk_bW3RFY3-A>QNV+_*UO|XA>VP214oCRDc2UMv0BtJ&Vv)EXlQ7Wu; z^XsH%&8i?#QR8R-n6MASVKR`_EiqA4-YRVr`$p{{e)r3kd>iOWsfLx^Q&IKr-ehz3qZ~B31yIj4==4(r41j%KXxFJ$?CKR%V(_FiBc9`sMQ~z;&?Ab;f#vo=F(-gv zW?=mk-KA4SHx1LD>+OnJG`qn9IF#lPj)Zq*9hbKHDXL)mWwn4#`efY6DyvRii+GRL zQ2fCzN^~9J8=a@Btg5S`EJeSY>qwYIjAymM#_Hm)?fw$fO(NTC5g9$i9TLAVdKs@8 zzMCtk0SCGmJMqjNvaE?kzDbG*3bfCqADteA3lnJPzuZK0Xt`;52m=WFfU*Cl&h^ER znN&lPzWndI+Ufc(7BPzMl@RxsuzD8OZzp$ClTu8PN5K?6K{s<1JT+q>JbXPd;i!)je!b5FQ`n|Y zK!bA@x(okR+1`n=C3|6MD$>URvvy-uPs?^b9@V)$Ap{An7)#Y6#yKl)_0pD)1?YWh zIO4mR1Tj0@JI(N$-0)sEd^t_WpL1jgYUjI)su1Br*&gO=cB#WX|HnHKaX9p z_9Vz9O3$sf7b|!I&^>=z`jVw7An$JtpA!5__0e9p)Ty=Z)xSezKIDaIinz<}ciT5z z90c+B)h_)F`##LSQF6&Lt#26pzk#gZ8e0_3%LgP)+tX#55BB~j2DnKQ&iP+GjD1CA z!}T%yx9|T=DYlLI0;AQ+>T#l-rS@rszFABlfXWz0Q?gduTsQIKPx8BW1*as z6iCya)XAq$j(ND5nniv%Az_ik)(b^_0~1}jz#A_rPPW`&xi%|uoyXa>yBH7k5!jG= z*pb(SzM0)zc9XScj3jERO7>ucGk2bT_K>6`92`DDM_IH3H&Z!0Z0%kOSs6hSd|jXC z61DggN;{=r16;khpJLByC1;e z#6SV;x@c67+Ch<2@WIr%a!XfW!$e5iF(>SKF_R0dhRiq$ z)sMRDII(3}WP_2;iIl{7ONXprL*45KD<|)ot^{@=;96TK`##a-B&N>E&lsxzlkTF( zF1_+@DaIbY)otl0Q{c=UM^3;BmwjeO_G^Q=*ee;`Hl*oP>&r@0W#i$IYRU(n?NfG+ zRZ@F&^9!lRT4hp7^lf25I0+*7Ma;sN1}R^rPe}dJH;L_r8zjGlJ!10vL+}RGYkS9~ zu{ZKm0gq*Vp3g<%_*ke;x7X(SW?3wW27KuUtL6(5d;9=1 zL)h2Lz652yMHWjnSH4N^LPq0$5HArdW>&4WsiD2%{?3=MJn=js%s z4G?m2vI;4Y-*epij-8rfWZT{GNixEWm4cZj{YRBD{e(Ev>5=qsZQ^jLf(!XHK5pvO zk>4;sZaizGcSJKHVf5u+2eYg?jHv}G7Bc4rIXuF@zceh=d0UgD^omq#qiO0Jd^%|D z=W*nvmdZR6Qv!x_;~>{!^Mw)&;i73b6#$)fY9zVoS9y!8K`Xu=-fbC@Kf`T|=mzV1 zvjYmHtI2>4QSbwvN(M*pYtmS|s!K_+cmgZ^PfqI+;jFbOqM%C%gTN|dMFoFab4$t< z^<_-OuFd0Ev<}Wvw-*J0i-AoN=4`XLS#70E>r2SO$6M;w#hZH3cmcqQU}BFe9mpRf zG{4!vN3h08%?NiJep|q9g<5#_@i@X#062Hn0eEHH2nt7PtKfy$6 zekG()ih&sF`$Dr!e{B+27DMf~o!$GB+AV57|J7m(oElMWU~c?9BFb4hvH%Qg*UrMY z&~m~>X~92CXRPuR^i!Y{D=%Q6NiUbCM7vSvtUA9}&o(6!q%s!j^iW{3e{trbIq1^k zu*p%9;4{YQu+mw!E~aOK;^mBA=+?YXV}r$7BG`qY`*6KUK#0>)CnBk5u(>nf`JwR1 zt)eLYBhrTgD@3gJHtf?KC0<~{VmRfvb4+ktl~tBLV2KSr+9oc7%^WsCPUjTtwpX;9 zLqBs9lZve^md--%$2Q|nPi8^VNHdF!;blHTh{TI>=kGY`&l;JSpGyEPq7L|;VF+Fg zgkM9TSqZUA!!B$C)>Cbbg33~!ncAJIdVao_{Ez;VejAlPH>Y4CgCfU38^xG$E19bq z!3v(O8G=JfVy0>eG0Cp*FEG;E(;ovFI3Rrk0q33&=ou*RO^3yC? zMwD!w3cH+aO@cQSuPIyE&pJyszCcU?yn%t<&7aE15?fD`^fJNYCEtb?}m(X5&&YE0p5xY%yN9*&HIg zt<@q#&B*s{8M++}>kAWHb|itxqdmto<3IVO0`?RtT@1OJgZpz=-WAT-&P{)ZI~_-h zSmo~xnCWvRe(C~aLmjRmmm}ZPO7Z?BNt|`(>>j!1X6GFJ7CENT+2WFs@0&X1A{PUvs$FP#nz^sed;$jwi`+IrFd7+|0IWwbV<20pmT2flXKFP$HUOp zNfpFjY}!5ljL}X_hG+Nc0D9F+Bgs(AFl5$8{wlxkQttp%9=6T0>5N4a$n6_!C)E=& zNcKyVj--=CUddgy9Abz+mRyD$dJV9hvl5a|G=QzSu;-_Ab6bi$&A88pR9e)u6_g9I zqP(K}%LZB`kGkgE-XIMQY`<*BsJfVm7BXFROX&nzIYrO2dZGe?8rR!ad()O)1p*Q{btUU~oQGW@ zzUR_zk;1Wf8sp~u6^zK5XLK`9U}n!IX+x&H6Lwax1H&&{c6}w2-+x$$q-;8egiD0J zvK^SA&aa(0Aw`EIT5uEcX_Y+2DgSL?sMJ!foi@hjwd5Hz<_?|t>vqL751WgV6D&qd zruGFWg}r3QqUy%f5E-<7{8%oM*3T~?-u?%p$6D?aGogZZ){wN034P1qB|9lxq|4x= zby@TvTY3ab;;Ar~HZm%{Z}b4l!c$(_UZa#vHQFyMVru2s)`5pfu_HNVEY^1zI>=T> z2*$gO=18%6=Ry%HipFo~+iDT@Fvk?yJYF8a;DlLEH@Lt|+`b7pgTX5@}?1iXY{ z*c0t_!qV2m1P)QB`s3+>J2vEhB9J)FJi_3Lp>La(B@p48EF~wO=)fv_gmT{LE@5WD z`-WFre}HG~Z&e4;R3Z1(oJ&3_e)d8H^yXi~N81LN4t&Fsfy^Z*Jhk9t|0eCPNY?<} zv981`6}go~r$q_`+i#+wrhtUAiesi_rKUHYIJ!KvcHGHqZi-LN%G7~g-w{_6pCn(? zt=-t=fDld8AoM+EInyKUCjYQni)!C|Qks>}EsK1>(KVsgmH&q3x{fW|^hYMDwW1@- zsypvE`=M>#uYTG=z9>uMm_es2!wmp(bbLxwSr{8~$$4#V9oUl7w%*oOYv8ktVJOM` z+nU#4D?gWD>sLe;HHx*_G*=hqR=eG-y7Vvi25Hob^-lP^@j&K3axIvb-(+jp4kc!K ztEj39dE~TY$JG;DagBM_KBeNh4EvAikz4G{O>5ADSLm6X9<8Su{*DwOYU(Gp+OzpOL)wGcj;5{)J0l)aW(+(u5s!c!R8Eq1s`U zVY&#@x=7!tJJ7Fj6Z7*nrw9EleCs#!YUg&R=>x#x8naUIu!TKqfxod=`uOQdpVI)o zGeBYW>)dWzpHr?r38A2oMSeEm>q+Qpef;pV#5o08ooj+E55)S6Ig_zH~bpjB~#P>2pO7@czH*>EyO>K zd9!T9?4uepFJ$w2$_Akq@~nrTsihI0U)IbXb0)7yTJ5VkrP`9eab42K!FKD4hip^0=sNy}{IZEoez^u-Bha*FtJjGNCDWHDRTeSLl6eKS$W z$z_FuU!OjPOfX#0gnb(V2ERpq=KjnI8fBE-!&tPWUX1xPW15~)6J5~t`L*+aMEw2h zQ<;^{lLf`J4vgLU#u_2{kDNsyby-4vx(-Cu-(i zOOeRj3>=U&$mffw(POMo`_jNaPb6#82c{Bv!FrfiA-jVnfmvVxSo;!3AeER~DTSde zeytcd3rNl+PLkOef}l6V6J6+a88QYvs@@d{0jfyHI!!O0ya?YqU2i2M(G~)7&>FFK z*LNTpvDY8zG9@=P(ZyPX2_n!j%UmcNJD%FpaKTUdmhkVVTXA!*8Hvx(aW?=*f$mr= z$=RDA)!Czcumcd5Ykq>j85J^AT@y|Q3z2A&~fVLYRh<+3mm?VSkq!1(M}c};og zL;ZCP${s2f=9wdojE|#f0)bLs72`8H35efbOwc#v;mG3PLhIloSE1&Q`eqRlNX~X% z`!=2P$R!gBHG=aS#}2ph4^M@g7BOY(h=;{o@ig@E-1-*aJl0_Y`In<4s(%??OEC%i zE%NahlnuJs4{CU($h0rbDETFM7>djaB8DEML|z<}RZ)M!yttwTLPKxsf7Go15cS|3 z#+%ttm-geN7RCa26S}Yx9-iZ0Ium*~;&#p(DBofzf$$yn!1t7*L=`}B`lhVzvE8&s z!#h)k)byJu-rL%0PvM&d`a3`6AC23qja;@yzIU+2h(;G{D6rA+N8@yRLsGtt@bS5m xKXL-Nzj}vOl7)u(1p2>fwnR$~uK&u}5(_v4(f)ruTjDtfBOC(fznV6v{{c#+Suy|s delta 13909 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 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 b31dae21..423b4233 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 @@ -132,7 +132,19 @@ public class UiAutomation extends UxPerfUiAutomation { } clickView(BY_DESC, "Open presentation"); clickView(BY_TEXT, "Device storage", true); - clickView(BY_TEXT, document); + // Allow SD card access if requested + UiObject permissionView = new UiObject(new UiSelector().textContains("Allow Slides")); + if (permissionView.waitForExists(ONE_SECOND_IN_MS)) { + clickView(BY_TEXT, "Allow"); + } + try { + clickView(BY_TEXT, document); + } catch (UiObjectNotFoundException e) { + // Click failed, scroll down and retry + UiScrollable list = new UiScrollable(new UiSelector().className("android.widget.ListView")); + list.scrollIntoView(new UiSelector().textContains(document)); + clickView(BY_TEXT, document); + } clickView(BY_TEXT, "Open", CLASS_BUTTON, true); sleep(5); clickView(BY_DESC, "Start slideshow", true); From edf2cb0e5740bb599c90a3a664d256085484dbca Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Fri, 20 May 2016 13:45:08 +0100 Subject: [PATCH 12/25] Simplify parameters & improve reliability of slide show test --- wlauto/workloads/googleslides/__init__.py | 52 ++++---- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 14292 -> 13879 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 126 +++++++----------- 3 files changed, 77 insertions(+), 101 deletions(-) diff --git a/wlauto/workloads/googleslides/__init__.py b/wlauto/workloads/googleslides/__init__.py index 8e0116bd..67c0accb 100644 --- a/wlauto/workloads/googleslides/__init__.py +++ b/wlauto/workloads/googleslides/__init__.py @@ -47,21 +47,26 @@ class GoogleSlides(AndroidUiAutoBenchmark): If ``True``, dumpsys captures will be carried out during the test run. The output is piped to log files which are then pulled from the phone. '''), - Parameter('local_files', kind=list_of_strings, + Parameter('local_file', kind=str, description=''' - If specified, the workload will push the PowerPoint files to be used for + If specified, the workload will push the PowerPoint file to be used for testing on the device. Otherwise, a file will be created inside the app. '''), + Parameter('slide_count', kind=int, default=5, + description=''' + Number of slides in aforementioned local file. Determines number of + swipe actions when playing slide show. + '''), ] instrumentation_log = '{}_instrumentation.log'.format(name) - file_prefix = 'wa_test_' - device_dir = '/sdcard/Download' - local_dir = '.' # self.dependencies_directory def __init__(self, device, **kwargs): super(GoogleSlides, self).__init__(device, **kwargs) self.output_file = path.join(self.device.working_directory, self.instrumentation_log) + self.local_dir = self.dependencies_directory + self.device_dir = path.join(self.device.working_directory, '..', 'Download') # Android downloads folder + self.wa_test_file = 'wa_test_' + self.local_file self.run_timeout = 300 def validate(self): @@ -70,22 +75,22 @@ class GoogleSlides(AndroidUiAutoBenchmark): self.uiauto_params['dumpsys_enabled'] = self.dumpsys_enabled self.uiauto_params['output_dir'] = self.device.working_directory self.uiauto_params['results_file'] = self.output_file - if self.local_files: - wa_files = [self.wa_filename(f) for f in self.local_files] - self.uiauto_params['local_files'] = '::'.join(wa_files) + if self.local_file: + self.uiauto_params['local_file'] = self.wa_test_file + self.uiauto_params['slide_count'] = self.slide_count def initialize(self, context): log_method(self, 'initialize') super(GoogleSlides, self).initialize(context) - if self.local_files: - # push local PPT files + if self.local_file: + # push local PPT file for entry in os.listdir(self.local_dir): - if entry.endswith('.pptx'): - self.device.push_file(path.join(self.local_dir, entry), - path.join(self.device_dir, self.wa_filename(entry)), + if entry is self.local_file: + self.device.push_file(path.join(self.local_dir, self.local_file), + path.join(self.device_dir, self.wa_test_file), timeout=60) - # Force a re-index of the mediaserver cache to pick up new files - # self.device.execute('am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard') + self.logger.info(path.join(self.local_dir, self.local_file)) + self.logger.info(path.join(self.device_dir, self.wa_test_file)) def setup(self, context): log_method(self, 'setup') @@ -98,24 +103,21 @@ class GoogleSlides(AndroidUiAutoBenchmark): def update_result(self, context): log_method(self, 'update_result') super(GoogleSlides, self).update_result(context) - not_implemented(self, 'get_metrics(context)') + not_implemented(self, 'self.get_metrics(context)') def teardown(self, context): log_method(self, 'teardown') super(GoogleSlides, self).teardown(context) - not_implemented(self, 'pull_logs(context)') - self.device.execute('am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard') + not_implemented(self, 'self.pull_logs(context)') def finalize(self, context): log_method(self, 'finalize') super(GoogleSlides, self).finalize(context) - if self.local_files: - # delete pushed PPT files - for entry in os.listdir(self.local_dir): - if entry.endswith('.pptx'): - self.device.delete_file(path.join(self.device_dir, self.wa_filename(entry))) - # Force a re-index of the mediaserver cache to pick up new files - # self.device.execute('am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard') + if self.local_file: + # delete pushed PPT file + for entry in self.device.listdir(self.device_dir): + if entry is self.wa_test_file: + self.device.delete_file(path.join(self.device_dir, entry)) def wa_filename(self, filename): return self.file_prefix + filename diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index f0ff5ea5963a9eb936b4bc92275a7d64b7daef6e..d6231d4dc3c09ffcef792f664685e3c9a07e43d6 100644 GIT binary patch delta 13666 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 A`Tzg` delta 14082 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 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 423b4233..69dfb4c7 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 @@ -53,8 +53,9 @@ public class UiAutomation extends UxPerfUiAutomation { public static final int BY_DESC = 3; public static final int ONE_SECOND_IN_MS = 1000; + public static final int DEFAULT_SWIPE_STEPS = 20; - public static final String DOC_FILENAME = "UX Perf Slides"; + public static final String NEW_DOC_FILENAME = "UX Perf Slides"; public static final String DOCUMENTATION_WORKLOADS = "class Workload(Extension):\n\tname = None\n\tdef init_resources(self, context):\n\t\tpass\n" @@ -77,16 +78,18 @@ public class UiAutomation extends UxPerfUiAutomation { protected Bundle parameters; protected boolean dumpsysEnabled; protected String outputDir; - protected String[] documents; - protected boolean useLocalFiles; + protected String localFile; + protected int slideCount; + protected boolean useLocalFile; protected String resultsFile; public void parseParams(Bundle parameters) throws Exception { dumpsysEnabled = Boolean.parseBoolean(parameters.getString("dumpsys_enabled")); outputDir = parameters.getString("output_dir"); resultsFile = parameters.getString("results_file"); - documents = parameters.getString("local_files", "::").split("::"); - useLocalFiles = documents.length != 0; + localFile = parameters.getString("local_file", ""); + slideCount = Integer.parseInt(parameters.getString("slide_count")); + useLocalFile = localFile != null; } public void runUiAutomation() throws Exception { @@ -94,12 +97,11 @@ public class UiAutomation extends UxPerfUiAutomation { parseParams(parameters); skipWelcomeScreen(); enablePowerpointCompat(); - if (useLocalFiles) { - testSlideshowFromStorage(documents[0]); + if (useLocalFile) { + testSlideshowFromStorage(localFile); } else { - testEditNewSlidesDocument(DOC_FILENAME); + testEditNewSlidesDocument(NEW_DOC_FILENAME); } - if (false) { // TODO currently unused writeResultsToFile(results, parameters.getString("results_file")); } @@ -111,21 +113,21 @@ public class UiAutomation extends UxPerfUiAutomation { } protected void enablePowerpointCompat() throws Exception { - uiDeviceEdgeSwipeFromLeft(10); + uiDeviceSwipeHorizontal(0, getDisplayWidth()/2, getDisplayHeight()/2); clickView(BY_TEXT, "Settings", true); clickView(BY_TEXT, "Create PowerPoint"); getUiDevice().pressBack(); sleep(1); } - protected void testSlideshowFromStorage(String document) throws Exception { + protected void testSlideshowFromStorage(String docName) throws Exception { // Sometimes docs deleted in __init__.py falsely appear on the app's home // For robustness, it's nice to remove these placeholders // However, the test should not crash because of it, so a silent catch is used - UiObject docView = new UiObject(new UiSelector().textContains(document)); + UiObject docView = new UiObject(new UiSelector().textContains(docName)); if (docView.waitForExists(ONE_SECOND_IN_MS)) { try { - deleteDocument(document); + deleteDocument(docName); } catch (Exception e) { // do nothing } @@ -137,24 +139,32 @@ public class UiAutomation extends UxPerfUiAutomation { if (permissionView.waitForExists(ONE_SECOND_IN_MS)) { clickView(BY_TEXT, "Allow"); } - try { - clickView(BY_TEXT, document); - } catch (UiObjectNotFoundException e) { - // Click failed, scroll down and retry - UiScrollable list = new UiScrollable(new UiSelector().className("android.widget.ListView")); - list.scrollIntoView(new UiSelector().textContains(document)); - clickView(BY_TEXT, document); - } + // Scroll through document list if necessary + UiScrollable list = new UiScrollable(new UiSelector().className("android.widget.ListView")); + list.scrollIntoView(new UiSelector().textContains(docName)); + clickView(BY_TEXT, docName); clickView(BY_TEXT, "Open", CLASS_BUTTON, true); sleep(5); - clickView(BY_DESC, "Start slideshow", true); int centerY = getUiDevice().getDisplayHeight() / 2; int centerX = getUiDevice().getDisplayWidth() / 2; - int slidesLeft = 10; + int slidesLeft = slideCount - 1; + // scroll forward in edit mode while (slidesLeft-- > 0) { - getUiDevice().swipe(centerX + centerX/2, centerY, centerX - centerX/2, centerY, 20); - sleep(2); + uiDeviceSwipeHorizontal(centerX + centerX/2, centerX - centerX/2, centerY); + sleep(1); + } + sleep(1); + // scroll backward in edit mode + while (++slidesLeft < slideCount - 1) { + uiDeviceSwipeHorizontal(centerX - centerX/2, centerX + centerX/2, centerY); + sleep(1); + } + // scroll forward in slideshow mode + clickView(BY_DESC, "Start slideshow", true); + while (--slidesLeft > 0) { + uiDeviceSwipeHorizontal(centerX + centerX/2, centerX - centerX/2, centerY); + sleep(1); } getUiDevice().pressBack(); getUiDevice().pressBack(); @@ -230,6 +240,17 @@ public class UiAutomation extends UxPerfUiAutomation { view.clickAndWaitForNewWindow(); } + public UiObject enterTextInSlide(String viewName, String textToEnter) throws Exception { + UiObject view = getViewByDesc(viewName); + view.click(); + sleepMicro(100); + view.click(); // double click + view.setText(textToEnter); + getUiDevice().pressBack(); + sleepMicro(200); + return view; + } + public void saveDocument(String docName) throws Exception { clickView(BY_TEXT, "SAVE"); clickView(BY_TEXT, "Device"); @@ -250,17 +271,6 @@ public class UiAutomation extends UxPerfUiAutomation { sleep(1); } - public UiObject enterTextInSlide(String viewName, String textToEnter) throws Exception { - UiObject view = getViewByDesc(viewName); - view.click(); - sleepMicro(100); - view.click(); // double click - view.setText(textToEnter); - getUiDevice().pressBack(); - sleepMicro(200); - return view; - } - public void deleteDocument(String docName) throws Exception { UiObject doc = getViewByText(docName); doc.longClick(); @@ -345,47 +355,11 @@ public class UiAutomation extends UxPerfUiAutomation { return object; } - public void uiDeviceEdgeSwipeFromLeft(int steps) { - int height = getDisplayHeight(); - int width = getDisplayWidth(); - getUiDevice().swipe(0, height/2, width/2, height/2, steps); + public void uiDeviceSwipeHorizontal(int startX, int endX, int height) { + uiDeviceSwipeHorizontal(startX, endX, height, DEFAULT_SWIPE_STEPS); } - public void tapDisplayNormalised(double percentX, double percentY) { - double x = Math.max(0, Math.min(1, percentX)); - double y = Math.max(0, Math.min(1, percentY)); - int tapX = (int) Math.floor(x * getDisplayWidth()); - int tapY = (int) Math.floor(y * getDisplayHeight()); - getUiDevice().click(tapX, tapY); - } - - public void toggleWifiState(boolean flag) throws Exception { - int exitValue = -1; - // To enable, check for "UninitializedState" - // String checkFor = flag ? "UninitializedState" : "ConnectedState"; - // exitValue = runShellCommand("dumpsys wifi | grep curState=" + checkFor); - // if (0 == exitValue) { // toggle state - String statusString = flag ? "ConnectedState" : "UninitializedState"; - exitValue = runShellCommand("dumpsys wifi | grep curState=" + statusString); - if (0 != exitValue) { // not in the expected so toggle it - String[] adbCommands = { - "am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings;", - "input keyevent 20;", - "input keyevent 23;", - "sleep 1;", - "input keyevent 4;", - }; - for (String command : adbCommands) { - exitValue = runShellCommand(command); - } - } - sleep(1); - } - - public int runShellCommand(String command) throws Exception { - Process proc = Runtime.getRuntime().exec(command); - Log.d(TAG, String.format("Command:\n%s\nExit value:%d\n", command, proc.exitValue())); - proc.waitFor(); - return proc.exitValue(); + public void uiDeviceSwipeHorizontal(int startX, int endX, int height, int steps) { + getUiDevice().swipe(startX, height, endX, height, steps); } } From 39e96ed6707e83b6aa6eaf38ff8234c9a248c849 Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Fri, 20 May 2016 15:00:47 +0100 Subject: [PATCH 13/25] Extra instrumentation for Slides - Also: add benchmarking and dumpsys helper class/methods --- wlauto/workloads/googleslides/__init__.py | 25 +++--- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 13879 -> 14610 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 71 ++++++++++++++++-- 3 files changed, 78 insertions(+), 18 deletions(-) diff --git a/wlauto/workloads/googleslides/__init__.py b/wlauto/workloads/googleslides/__init__.py index 67c0accb..aa6ce12f 100644 --- a/wlauto/workloads/googleslides/__init__.py +++ b/wlauto/workloads/googleslides/__init__.py @@ -20,9 +20,6 @@ from wlauto import AndroidUiAutoBenchmark, Parameter from wlauto.utils.types import list_of_strings -def not_implemented(workload, text): - workload.logger.info('## ++ NOT IMPLEMENTED ++ ##\n## {}\n## -- NOT IMPLEMENTED -- ##'.format(text)) - def log_method(workload, name): workload.logger.info('===== {}() ======'.format(name)) @@ -63,11 +60,12 @@ class GoogleSlides(AndroidUiAutoBenchmark): def __init__(self, device, **kwargs): super(GoogleSlides, self).__init__(device, **kwargs) + self.run_timeout = 300 self.output_file = path.join(self.device.working_directory, self.instrumentation_log) self.local_dir = self.dependencies_directory - self.device_dir = path.join(self.device.working_directory, '..', 'Download') # Android downloads folder + # Android downloads folder + self.device_dir = path.join(self.device.working_directory, '..', 'Download') self.wa_test_file = 'wa_test_' + self.local_file - self.run_timeout = 300 def validate(self): log_method(self, 'validate') @@ -89,8 +87,6 @@ class GoogleSlides(AndroidUiAutoBenchmark): self.device.push_file(path.join(self.local_dir, self.local_file), path.join(self.device_dir, self.wa_test_file), timeout=60) - self.logger.info(path.join(self.local_dir, self.local_file)) - self.logger.info(path.join(self.device_dir, self.wa_test_file)) def setup(self, context): log_method(self, 'setup') @@ -103,12 +99,12 @@ class GoogleSlides(AndroidUiAutoBenchmark): def update_result(self, context): log_method(self, 'update_result') super(GoogleSlides, self).update_result(context) - not_implemented(self, 'self.get_metrics(context)') + self.get_metrics(context) def teardown(self, context): log_method(self, 'teardown') super(GoogleSlides, self).teardown(context) - not_implemented(self, 'self.pull_logs(context)') + self.pull_logs(context) def finalize(self, context): log_method(self, 'finalize') @@ -126,13 +122,16 @@ class GoogleSlides(AndroidUiAutoBenchmark): self.device.pull_file(self.output_file, context.output_directory) metrics_file = path.join(context.output_directory, self.instrumentation_log) with open(metrics_file, 'r') as wfh: - regex = re.compile(r'(\w+)\s+(\d+)\s+(\d+)\s+(\d+)') + regex = re.compile(r'(?P\w+)\s+(?P\d+)\s+(?P\d+)\s+(?P\d+)') for line in wfh: match = regex.search(line) if match: - context.result.add_metric((match.group(1) + '_start'), match.group(2)) - context.result.add_metric((match.group(1) + '_finish'), match.group(3)) - context.result.add_metric((match.group(1) + '_duration'), match.group(4)) + context.result.add_metric(match.group('key') + "_start", + match.group('value1'), units='ms') + context.result.add_metric(match.group('key') + "_finish", + match.group('value2'), units='ms') + context.result.add_metric(match.group('key') + "_duration", + match.group('value3'), units='ms') def pull_logs(self, context): wd = self.device.working_directory diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index d6231d4dc3c09ffcef792f664685e3c9a07e43d6..4d8ce0e3f04bd787dbe6aff9c9d1d511e88f6736 100644 GIT binary patch delta 14385 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 results = new LinkedHashMap(); protected Bundle parameters; @@ -81,17 +82,50 @@ public class UiAutomation extends UxPerfUiAutomation { protected String localFile; protected int slideCount; protected boolean useLocalFile; - protected String resultsFile; public void parseParams(Bundle parameters) throws Exception { dumpsysEnabled = Boolean.parseBoolean(parameters.getString("dumpsys_enabled")); outputDir = parameters.getString("output_dir"); - resultsFile = parameters.getString("results_file"); localFile = parameters.getString("local_file", ""); slideCount = Integer.parseInt(parameters.getString("slide_count")); useLocalFile = localFile != null; } + interface MeasurableAction { + public void perform() throws Exception; + } + + public class Benchmarker { + protected Map benchResults = new LinkedHashMap(); + + public Map getResults() { + return benchResults; + } + + public void measure(String tag, MeasurableAction action) throws Exception { + Timer timer = new Timer(); + timer.start(); + action.perform(); + timer.end(); + benchResults.put(tag, timer); + } + } + + public void startDumpsys(String viewName) throws Exception { + if (!dumpsysEnabled) + return; + initDumpsysSurfaceFlinger(PACKAGE, viewName); + initDumpsysGfxInfo(PACKAGE); + } + + public void endDumpsys(String viewName, String testTag) throws Exception { + if (!dumpsysEnabled) + return; + String dumpsysTag = TAG + "_" + testTag; + exitDumpsysSurfaceFlinger(PACKAGE, viewName, new File(outputDir, dumpsysTag + "_surfFlinger.log")); + exitDumpsysGfxInfo(PACKAGE, new File(outputDir, dumpsysTag + "_gfxInfo.log")); + } + public void runUiAutomation() throws Exception { parameters = getParams(); parseParams(parameters); @@ -102,21 +136,48 @@ public class UiAutomation extends UxPerfUiAutomation { } else { testEditNewSlidesDocument(NEW_DOC_FILENAME); } - if (false) { // TODO currently unused - writeResultsToFile(results, parameters.getString("results_file")); - } + results.putAll(bench.getResults()); + writeResultsToFile(results, parameters.getString("results_file")); } protected void skipWelcomeScreen() throws Exception { + String testTag = "skip_welcome"; + Timer timer = new Timer(); + timer.start(); clickView(BY_TEXT, "Skip", true); + timer.end(); + results.put(testTag, timer); +/* + bench.measure(testTag, new MeasurableAction() { + public void perform() throws Exception { + clickView(BY_TEXT, "Skip", true); + } + }); +*/ sleep(1); } protected void enablePowerpointCompat() throws Exception { + String testTag = "enable_ppt_compat"; + Timer timer = new Timer(); + timer.start(); uiDeviceSwipeHorizontal(0, getDisplayWidth()/2, getDisplayHeight()/2); clickView(BY_TEXT, "Settings", true); clickView(BY_TEXT, "Create PowerPoint"); getUiDevice().pressBack(); + timer.end(); + results.put(testTag, timer); +/* + bench.measure(testTag, new MeasurableAction() { + @Override + public void perform() throws Exception { + uiDeviceSwipeHorizontal(0, getDisplayWidth()/2, getDisplayHeight()/2); + clickView(BY_TEXT, "Settings", true); + clickView(BY_TEXT, "Create PowerPoint"); + getUiDevice().pressBack(); + } + }); +*/ sleep(1); } From 1e0a600934f6c3cc6eb6d70f64ab0a2b063a1f10 Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Fri, 20 May 2016 15:43:03 +0100 Subject: [PATCH 14/25] More instrumentation --- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 14610 -> 14330 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 74 ++---------------- 2 files changed, 7 insertions(+), 67 deletions(-) diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index 4d8ce0e3f04bd787dbe6aff9c9d1d511e88f6736..6e6b6b2457da245025271a5c9a18a0ecac51b985 100644 GIT binary patch delta 14103 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 delta 14385 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 r0Eu>!JU2N4h<1~AH$V=FcC<*RnzdYJHvj; results = new LinkedHashMap(); + protected Timer resultTimer; protected Bundle parameters; protected boolean dumpsysEnabled; @@ -91,41 +91,6 @@ public class UiAutomation extends UxPerfUiAutomation { useLocalFile = localFile != null; } - interface MeasurableAction { - public void perform() throws Exception; - } - - public class Benchmarker { - protected Map benchResults = new LinkedHashMap(); - - public Map getResults() { - return benchResults; - } - - public void measure(String tag, MeasurableAction action) throws Exception { - Timer timer = new Timer(); - timer.start(); - action.perform(); - timer.end(); - benchResults.put(tag, timer); - } - } - - public void startDumpsys(String viewName) throws Exception { - if (!dumpsysEnabled) - return; - initDumpsysSurfaceFlinger(PACKAGE, viewName); - initDumpsysGfxInfo(PACKAGE); - } - - public void endDumpsys(String viewName, String testTag) throws Exception { - if (!dumpsysEnabled) - return; - String dumpsysTag = TAG + "_" + testTag; - exitDumpsysSurfaceFlinger(PACKAGE, viewName, new File(outputDir, dumpsysTag + "_surfFlinger.log")); - exitDumpsysGfxInfo(PACKAGE, new File(outputDir, dumpsysTag + "_gfxInfo.log")); - } - public void runUiAutomation() throws Exception { parameters = getParams(); parseParams(parameters); @@ -136,48 +101,27 @@ public class UiAutomation extends UxPerfUiAutomation { } else { testEditNewSlidesDocument(NEW_DOC_FILENAME); } - results.putAll(bench.getResults()); writeResultsToFile(results, parameters.getString("results_file")); } protected void skipWelcomeScreen() throws Exception { - String testTag = "skip_welcome"; Timer timer = new Timer(); timer.start(); clickView(BY_TEXT, "Skip", true); timer.end(); - results.put(testTag, timer); -/* - bench.measure(testTag, new MeasurableAction() { - public void perform() throws Exception { - clickView(BY_TEXT, "Skip", true); - } - }); -*/ + results.put("skip_welcome", timer); sleep(1); } protected void enablePowerpointCompat() throws Exception { - String testTag = "enable_ppt_compat"; Timer timer = new Timer(); timer.start(); - uiDeviceSwipeHorizontal(0, getDisplayWidth()/2, getDisplayHeight()/2); + uiDeviceSwipeHorizontal(0, getDisplayWidth()/2, getDisplayHeight()/2, 10); clickView(BY_TEXT, "Settings", true); clickView(BY_TEXT, "Create PowerPoint"); getUiDevice().pressBack(); timer.end(); - results.put(testTag, timer); -/* - bench.measure(testTag, new MeasurableAction() { - @Override - public void perform() throws Exception { - uiDeviceSwipeHorizontal(0, getDisplayWidth()/2, getDisplayHeight()/2); - clickView(BY_TEXT, "Settings", true); - clickView(BY_TEXT, "Create PowerPoint"); - getUiDevice().pressBack(); - } - }); -*/ + results.put("enable_ppt_compat", timer); sleep(1); } @@ -304,11 +248,11 @@ public class UiAutomation extends UxPerfUiAutomation { public UiObject enterTextInSlide(String viewName, String textToEnter) throws Exception { UiObject view = getViewByDesc(viewName); view.click(); - sleepMicro(100); + SystemClock.sleep(100); view.click(); // double click view.setText(textToEnter); getUiDevice().pressBack(); - sleepMicro(200); + SystemClock.sleep(200); return view; } @@ -346,15 +290,11 @@ public class UiAutomation extends UxPerfUiAutomation { sleep(1); } - public void sleepMicro(int microseconds) { - SystemClock.sleep(microseconds); - } - public void repeatClickView(UiObject view, int repeat) throws Exception { if (repeat < 1 || !view.isClickable()) return; while (repeat-- > 0) { view.click(); - sleepMicro(100); // in order to register as separate click + SystemClock.sleep(100); // in order to register as separate click } } From b167e2dae697c932e8c9fe1860535b9ad634a742 Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Sat, 21 May 2016 14:39:56 +0100 Subject: [PATCH 15/25] More performance timings for UX actions - fix: localhost vs on-device slide name comparison - add: more activities for FPS instrumentation --- wlauto/workloads/googleslides/__init__.py | 12 ++- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 14330 -> 14619 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 96 ++++++++++++++---- 3 files changed, 85 insertions(+), 23 deletions(-) diff --git a/wlauto/workloads/googleslides/__init__.py b/wlauto/workloads/googleslides/__init__.py index aa6ce12f..dde98245 100644 --- a/wlauto/workloads/googleslides/__init__.py +++ b/wlauto/workloads/googleslides/__init__.py @@ -32,7 +32,11 @@ class GoogleSlides(AndroidUiAutoBenchmark): # Views for FPS instrumentation view = [ + package + '/com.google.android.apps.docs.quickoffice.filepicker.FilePickerActivity', + package + '/com.google.android.apps.docs.editors.shared.filepicker.FilePickerActivity', + package + '/com.google.android.apps.docs.quickoffice.filepicker.LocalSaveAsActivity', package + '/com.qo.android.quickpoint.Quickpoint', + package + '/com.google.android.apps.docs.app.DocsPreferencesActivity', package + '/com.google.android.apps.docs.app.DocListActivity', package + '/com.google.android.apps.docs.welcome.warmwelcome.TrackingWelcomeActivity', package + '/com.google.android.apps.docs.app.NewMainProxyActivity', @@ -65,7 +69,7 @@ class GoogleSlides(AndroidUiAutoBenchmark): self.local_dir = self.dependencies_directory # Android downloads folder self.device_dir = path.join(self.device.working_directory, '..', 'Download') - self.wa_test_file = 'wa_test_' + self.local_file + self.wa_test_file = 'wa_test_{}'.format(self.local_file) if self.local_file else None def validate(self): log_method(self, 'validate') @@ -80,10 +84,12 @@ class GoogleSlides(AndroidUiAutoBenchmark): def initialize(self, context): log_method(self, 'initialize') super(GoogleSlides, self).initialize(context) + self.logger.info('local_dir={}, local_file={}'.format(self.local_dir, self.local_file)) + self.logger.info('device_dir={}, wa_test_file={}'.format(self.device_dir, self.wa_test_file)) if self.local_file: # push local PPT file for entry in os.listdir(self.local_dir): - if entry is self.local_file: + if entry == self.local_file: self.device.push_file(path.join(self.local_dir, self.local_file), path.join(self.device_dir, self.wa_test_file), timeout=60) @@ -112,7 +118,7 @@ class GoogleSlides(AndroidUiAutoBenchmark): if self.local_file: # delete pushed PPT file for entry in self.device.listdir(self.device_dir): - if entry is self.wa_test_file: + if entry == self.wa_test_file: self.device.delete_file(path.join(self.device_dir, entry)) def wa_filename(self, filename): diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index 6e6b6b2457da245025271a5c9a18a0ecac51b985..2ddfbde753bb8d861d7e36ec3007b2691becfa01 100644 GIT binary patch delta 14398 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 XmXOLN`2PjDB^+=u!Z2_`{7e4_nUDB~ 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 394a93e0..fc3339a5 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 @@ -52,8 +52,8 @@ public class UiAutomation extends UxPerfUiAutomation { public static final int BY_TEXT = 2; public static final int BY_DESC = 3; - public static final int ONE_SECOND_IN_MS = 1000; - public static final int DEFAULT_SWIPE_STEPS = 20; + public static final int DIALOG_WAIT_TIME_MS = 3000; + public static final int DEFAULT_SWIPE_STEPS = 10; public static final String NEW_DOC_FILENAME = "UX Perf Slides"; @@ -74,7 +74,7 @@ public class UiAutomation extends UxPerfUiAutomation { + "\t- Disabling result processors and instrumentation\n\tOther Configuration (via config.py)\n"; protected Map results = new LinkedHashMap(); - protected Timer resultTimer; + protected Timer timer = new Timer(); protected Bundle parameters; protected boolean dumpsysEnabled; @@ -86,9 +86,11 @@ public class UiAutomation extends UxPerfUiAutomation { public void parseParams(Bundle parameters) throws Exception { dumpsysEnabled = Boolean.parseBoolean(parameters.getString("dumpsys_enabled")); outputDir = parameters.getString("output_dir"); - localFile = parameters.getString("local_file", ""); - slideCount = Integer.parseInt(parameters.getString("slide_count")); + localFile = parameters.getString("local_file"); useLocalFile = localFile != null; + if (useLocalFile) { + slideCount = Integer.parseInt(parameters.getString("slide_count")); + } } public void runUiAutomation() throws Exception { @@ -105,7 +107,7 @@ public class UiAutomation extends UxPerfUiAutomation { } protected void skipWelcomeScreen() throws Exception { - Timer timer = new Timer(); + timer = new Timer(); timer.start(); clickView(BY_TEXT, "Skip", true); timer.end(); @@ -114,9 +116,9 @@ public class UiAutomation extends UxPerfUiAutomation { } protected void enablePowerpointCompat() throws Exception { - Timer timer = new Timer(); + timer = new Timer(); timer.start(); - uiDeviceSwipeHorizontal(0, getDisplayWidth()/2, getDisplayHeight()/2, 10); + uiDeviceSwipeHorizontal(0, getDisplayWidth()/2, getDisplayHeight()/2); clickView(BY_TEXT, "Settings", true); clickView(BY_TEXT, "Create PowerPoint"); getUiDevice().pressBack(); @@ -130,55 +132,89 @@ public class UiAutomation extends UxPerfUiAutomation { // For robustness, it's nice to remove these placeholders // However, the test should not crash because of it, so a silent catch is used UiObject docView = new UiObject(new UiSelector().textContains(docName)); - if (docView.waitForExists(ONE_SECOND_IN_MS)) { + if (docView.waitForExists(1000)) { try { deleteDocument(docName); } catch (Exception e) { // do nothing } } + + // Open document + timer = new Timer(); + timer.start(); clickView(BY_DESC, "Open presentation"); clickView(BY_TEXT, "Device storage", true); + timer.end(); + results.put("open_picker", timer); // Allow SD card access if requested UiObject permissionView = new UiObject(new UiSelector().textContains("Allow Slides")); - if (permissionView.waitForExists(ONE_SECOND_IN_MS)) { + 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")); list.scrollIntoView(new UiSelector().textContains(docName)); + timer = new Timer(); + timer.start(); clickView(BY_TEXT, docName); clickView(BY_TEXT, "Open", CLASS_BUTTON, true); + timer.end(); + results.put("open_document", timer); sleep(5); int centerY = getUiDevice().getDisplayHeight() / 2; int centerX = getUiDevice().getDisplayWidth() / 2; int slidesLeft = slideCount - 1; + // scroll forward in edit mode + timer = new Timer(); + timer.start(); while (slidesLeft-- > 0) { uiDeviceSwipeHorizontal(centerX + centerX/2, centerX - centerX/2, centerY); sleep(1); } + timer.end(); + results.put("slides_forward", timer); sleep(1); + // scroll backward in edit mode + timer = new Timer(); + timer.start(); while (++slidesLeft < slideCount - 1) { uiDeviceSwipeHorizontal(centerX - centerX/2, centerX + centerX/2, centerY); sleep(1); } + timer.end(); + results.put("slides_reverse", timer); + sleep(1); + // scroll forward in slideshow mode + timer = new Timer(); + timer.start(); clickView(BY_DESC, "Start slideshow", true); - while (--slidesLeft > 0) { + while (slidesLeft-- > 0) { uiDeviceSwipeHorizontal(centerX + centerX/2, centerX - centerX/2, centerY); sleep(1); } + timer.end(); + results.put("play_slideshow", timer); + sleep(1); + getUiDevice().pressBack(); getUiDevice().pressBack(); } protected void testEditNewSlidesDocument(String docName) throws Exception { // create new file + timer = new Timer(); + timer.start(); clickView(BY_DESC, "New presentation"); clickView(BY_TEXT, "New PowerPoint", true); + timer.end(); + results.put("create_document", timer); + // first slide enterTextInSlide("Title", "WORKLOAD AUTOMATION"); enterTextInSlide("Subtitle", "Measuring perfomance of different productivity apps on Android OS"); @@ -239,47 +275,65 @@ public class UiAutomation extends UxPerfUiAutomation { } public void insertSlide(String slideLayout) throws Exception { + sleep(1); // a bit of time to see previous slide UiObject view = getViewByDesc("Insert slide"); view.clickAndWaitForNewWindow(); view = getViewByText(slideLayout); view.clickAndWaitForNewWindow(); } - public UiObject enterTextInSlide(String viewName, String textToEnter) throws Exception { + public void enterTextInSlide(String viewName, String textToEnter) throws Exception { UiObject view = getViewByDesc(viewName); view.click(); - SystemClock.sleep(100); - view.click(); // double click view.setText(textToEnter); - getUiDevice().pressBack(); + try { + clickView(BY_DESC, "Done"); + } catch (UiObjectNotFoundException e) { + clickView(BY_ID, "android:id/action_mode_close_button"); + } SystemClock.sleep(200); - return view; } public void saveDocument(String docName) throws Exception { + timer = new Timer(); + timer.start(); 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(ONE_SECOND_IN_MS)) { + if (permissionView.waitForExists(DIALOG_WAIT_TIME_MS)) { clickView(BY_TEXT, "Allow"); } + + timer = new Timer(); + timer.start(); UiObject filename = getViewById(PACKAGE_ID + "file_name_edit_text"); filename.clearTextField(); filename.setText(docName); - clickView(BY_TEXT, "Save"); + clickView(BY_TEXT, "Save", CLASS_BUTTON); + timer.end(); + results.put("save_dialog2", timer); // Overwrite if prompted UiObject overwriteView = new UiObject(new UiSelector().textContains("already exists")); - if (overwriteView.waitForExists(ONE_SECOND_IN_MS)) { + if (overwriteView.waitForExists(DIALOG_WAIT_TIME_MS)) { clickView(BY_TEXT, "Overwrite"); } sleep(1); } public void deleteDocument(String docName) throws Exception { + timer = new Timer(); + timer.start(); UiObject doc = getViewByText(docName); doc.longClick(); clickView(BY_TEXT, "Remove"); + timer.end(); + results.put("delete_dialog1", timer); + + timer = new Timer(); + timer.start(); UiObject deleteButton; try { deleteButton = getUiObjectByText("Remove", CLASS_BUTTON); @@ -287,6 +341,8 @@ public class UiAutomation extends UxPerfUiAutomation { deleteButton = getUiObjectByText("Ok", CLASS_BUTTON); } deleteButton.clickAndWaitForNewWindow(); + timer.end(); + results.put("delete_dialog2", timer); sleep(1); } @@ -294,7 +350,7 @@ public class UiAutomation extends UxPerfUiAutomation { if (repeat < 1 || !view.isClickable()) return; while (repeat-- > 0) { view.click(); - SystemClock.sleep(100); // in order to register as separate click + SystemClock.sleep(50); // in order to register as separate click } } From 2d84b02352923ba8bdad6f1cde347a55118dfd54 Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Sat, 21 May 2016 22:23:11 +0100 Subject: [PATCH 16/25] Minor changes - slide text formatting --- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 14619 -> 14593 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 30 ++++++++---------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index 2ddfbde753bb8d861d7e36ec3007b2691becfa01..55290399738de7fa743a498acdba5c506fadcc45 100644 GIT binary patch delta 14366 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 YNZ&1beN{IA0BDotI4}k^H~;_u0HSVio&W#< delta 14415 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 results = new LinkedHashMap(); protected Timer timer = new Timer(); @@ -224,7 +219,8 @@ public class UiAutomation extends UxPerfUiAutomation { enterTextInSlide("title", "Introduction"); enterTextInSlide("Text placeholder", "Welcome to Documentation for Workload Automation"); clickView(BY_DESC, "Undo"); - enterTextInSlide("Text placeholder", "Workload Automation (WA) is a framework for running workloads on real hardware devices. " + enterTextInSlide("Text placeholder", + "Workload Automation (WA) is a framework for running workloads on real hardware devices. " + "WA supports a number of output formats as well as additional instrumentation " + "(such as Streamline traces). A number of workloads are included with the framework."); @@ -241,11 +237,11 @@ public class UiAutomation extends UxPerfUiAutomation { getUiDevice().pressBack(); insertSlide("Title and Content"); - enterTextInSlide("title", "Agendas - 1"); + enterTextInSlide("title", "Agendas - Intro"); enterTextInSlide("Text placeholder", DOCUMENTATION_AGENDAS_1); insertSlide("Title and Content"); - enterTextInSlide("title", "Agendas - 2"); + enterTextInSlide("title", "Agendas - Uses"); enterTextInSlide("Text placeholder", DOCUMENTATION_AGENDAS_2); // get first image in gallery and insert @@ -275,7 +271,7 @@ public class UiAutomation extends UxPerfUiAutomation { } public void insertSlide(String slideLayout) throws Exception { - sleep(1); // a bit of time to see previous slide + sleep(2); // a bit of time to see previous slide UiObject view = getViewByDesc("Insert slide"); view.clickAndWaitForNewWindow(); view = getViewByText(slideLayout); From 9415d6d2dcf5c6fde23294b0f8a6a55499b8e33a Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Sun, 22 May 2016 14:27:35 +0100 Subject: [PATCH 17/25] Dumpsys instrumentation --- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 14593 -> 14886 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 65 +++++++++++++++--- 2 files changed, 56 insertions(+), 9 deletions(-) diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index 55290399738de7fa743a498acdba5c506fadcc45..8258fc80df5d14ea30a0ffc9e16a1432e16ca061 100644 GIT binary patch delta 14685 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 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 3b0f4ca4..424dc668 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 @@ -15,6 +15,7 @@ package com.arm.wlauto.uiauto.googleslides; +import java.io.File; import java.util.LinkedHashMap; import java.util.Map; @@ -34,6 +35,9 @@ public class UiAutomation extends UxPerfUiAutomation { public static final String TAG = "googleslides"; public static final String PACKAGE = "com.google.android.apps.docs.editors.slides"; public static final String PACKAGE_ID = PACKAGE + ":id/"; + public static final String ACTIVITY_DOCLIST = "com.google.android.apps.docs.app.DocListActivity"; + public static final String ACTIVITY_SLIDES = "com.qo.android.quickpoint.Quickpoint"; + public static final String ACTIVITY_SETTINGS = "com.google.android.apps.docs.app.DocsPreferencesActivity"; public static final String CLASS_TEXT_VIEW = "android.widget.TextView"; public static final String CLASS_IMAGE_VIEW = "android.widget.ImageView"; @@ -92,6 +96,7 @@ public class UiAutomation extends UxPerfUiAutomation { parameters = getParams(); parseParams(parameters); skipWelcomeScreen(); + openAndCloseDrawer(); enablePowerpointCompat(); if (useLocalFile) { testSlideshowFromStorage(localFile); @@ -110,15 +115,29 @@ public class UiAutomation extends UxPerfUiAutomation { sleep(1); } - protected void enablePowerpointCompat() throws Exception { + protected void openAndCloseDrawer() throws Exception { + startDumpsys(ACTIVITY_DOCLIST); timer = new Timer(); timer.start(); - uiDeviceSwipeHorizontal(0, getDisplayWidth()/2, getDisplayHeight()/2); + clickView(BY_DESC, "drawer"); + getUiDevice().pressBack(); + timer.end(); + results.put("open_drawer", timer); + endDumpsys(ACTIVITY_DOCLIST, "open_drawer"); + sleep(1); + } + + protected void enablePowerpointCompat() throws Exception { + startDumpsys(ACTIVITY_SETTINGS); + timer = new Timer(); + timer.start(); + clickView(BY_DESC, "drawer"); clickView(BY_TEXT, "Settings", true); clickView(BY_TEXT, "Create PowerPoint"); getUiDevice().pressBack(); timer.end(); results.put("enable_ppt_compat", timer); + endDumpsys(ACTIVITY_SETTINGS, "enable_ppt_compat"); sleep(1); } @@ -164,6 +183,7 @@ public class UiAutomation extends UxPerfUiAutomation { int slidesLeft = slideCount - 1; // scroll forward in edit mode + startDumpsys(ACTIVITY_SLIDES); timer = new Timer(); timer.start(); while (slidesLeft-- > 0) { @@ -172,9 +192,11 @@ public class UiAutomation extends UxPerfUiAutomation { } timer.end(); results.put("slides_forward", timer); + endDumpsys(ACTIVITY_SLIDES, "slides_forward"); sleep(1); // scroll backward in edit mode + startDumpsys(ACTIVITY_SLIDES); timer = new Timer(); timer.start(); while (++slidesLeft < slideCount - 1) { @@ -183,9 +205,11 @@ public class UiAutomation extends UxPerfUiAutomation { } timer.end(); results.put("slides_reverse", timer); + endDumpsys(ACTIVITY_SLIDES, "slides_reverse"); sleep(1); // scroll forward in slideshow mode + startDumpsys(ACTIVITY_SLIDES); timer = new Timer(); timer.start(); clickView(BY_DESC, "Start slideshow", true); @@ -195,6 +219,7 @@ public class UiAutomation extends UxPerfUiAutomation { } timer.end(); results.put("play_slideshow", timer); + endDumpsys(ACTIVITY_SLIDES, "play_slideshow"); sleep(1); getUiDevice().pressBack(); @@ -202,6 +227,7 @@ public class UiAutomation extends UxPerfUiAutomation { } protected void testEditNewSlidesDocument(String docName) throws Exception { + startDumpsys(ACTIVITY_DOCLIST); // create new file timer = new Timer(); timer.start(); @@ -209,12 +235,13 @@ public class UiAutomation extends UxPerfUiAutomation { clickView(BY_TEXT, "New PowerPoint", true); timer.end(); results.put("create_document", timer); + endDumpsys(ACTIVITY_DOCLIST, "create_document"); // first slide enterTextInSlide("Title", "WORKLOAD AUTOMATION"); enterTextInSlide("Subtitle", "Measuring perfomance of different productivity apps on Android OS"); saveDocument(docName); - +/* insertSlide("Title and Content"); enterTextInSlide("title", "Introduction"); enterTextInSlide("Text placeholder", "Welcome to Documentation for Workload Automation"); @@ -223,7 +250,7 @@ public class UiAutomation extends UxPerfUiAutomation { "Workload Automation (WA) is a framework for running workloads on real hardware devices. " + "WA supports a number of output formats as well as additional instrumentation " + "(such as Streamline traces). A number of workloads are included with the framework."); - +*/ insertSlide("Title and Content"); enterTextInSlide("title", "Extensions - Workloads"); enterTextInSlide("Text placeholder", DOCUMENTATION_WORKLOADS); @@ -235,7 +262,7 @@ public class UiAutomation extends UxPerfUiAutomation { UiObject decreaseFont = getViewByDesc("Decrease text"); repeatClickView(decreaseFont, 20); getUiDevice().pressBack(); - +/* insertSlide("Title and Content"); enterTextInSlide("title", "Agendas - Intro"); enterTextInSlide("Text placeholder", DOCUMENTATION_AGENDAS_1); @@ -243,13 +270,18 @@ public class UiAutomation extends UxPerfUiAutomation { insertSlide("Title and Content"); enterTextInSlide("title", "Agendas - Uses"); enterTextInSlide("Text placeholder", DOCUMENTATION_AGENDAS_2); - - // get first image in gallery and insert +*/ + // get image from gallery and insert insertSlide("Title Only"); clickView(BY_DESC, "Insert"); clickView(BY_TEXT, "Image", true); clickView(BY_TEXT, "Recent"); - clickView(BY_ID, "com.android.documentsui:id/date", true); + try { + UiObject image = new UiObject(new UiSelector().resourceId("com.android.documentsui:id/date").instance(2)); + image.clickAndWaitForNewWindow(); + } catch (UiObjectNotFoundException e) { + clickView(BY_ID, "com.android.documentsui:id/date", true); + } // last slide insertSlide("Title Slide"); @@ -271,7 +303,7 @@ public class UiAutomation extends UxPerfUiAutomation { } public void insertSlide(String slideLayout) throws Exception { - sleep(2); // a bit of time to see previous slide + sleep(1); // a bit of time to see previous slide UiObject view = getViewByDesc("Insert slide"); view.clickAndWaitForNewWindow(); view = getViewByText(slideLayout); @@ -415,4 +447,19 @@ public class UiAutomation extends UxPerfUiAutomation { public void uiDeviceSwipeHorizontal(int startX, int endX, int height, int steps) { getUiDevice().swipe(startX, height, endX, height, steps); } + + public void startDumpsys(String viewName) throws Exception { + if (!dumpsysEnabled) + return; + initDumpsysSurfaceFlinger(PACKAGE, viewName); + initDumpsysGfxInfo(PACKAGE); + } + + public void endDumpsys(String viewName, String testTag) throws Exception { + if (!dumpsysEnabled) + return; + String dumpsysTag = TAG + "_" + testTag; + exitDumpsysSurfaceFlinger(PACKAGE, viewName, new File(outputDir, dumpsysTag + "_surfFlinger.log")); + exitDumpsysGfxInfo(PACKAGE, new File(outputDir, dumpsysTag + "_gfxInfo.log")); + } } From 294f9d95a163e8355499103e8ee16fadf972319a Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Sun, 22 May 2016 19:28:04 +0100 Subject: [PATCH 18/25] Per slide FPS dumpsys --- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 14886 -> 15016 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 82 +++++++++--------- 2 files changed, 43 insertions(+), 39 deletions(-) diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index 8258fc80df5d14ea30a0ffc9e16a1432e16ca061..78e52bf5fb62a6fe70fd664b788cba5f33483e24 100644 GIT binary patch delta 14812 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

Bv39tvqV`mFN4((9vVz`l47KkSDduFo|(aJ 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 results = new LinkedHashMap(); protected Timer timer = new Timer(); @@ -181,13 +174,22 @@ public class UiAutomation extends UxPerfUiAutomation { int centerY = getUiDevice().getDisplayHeight() / 2; int centerX = getUiDevice().getDisplayWidth() / 2; int slidesLeft = slideCount - 1; + String testTag; + Timer slideTimer; // scroll forward in edit mode startDumpsys(ACTIVITY_SLIDES); timer = new Timer(); timer.start(); while (slidesLeft-- > 0) { + testTag = "slides_next_" + (slideCount - slidesLeft); + startDumpsys(ACTIVITY_SLIDES); + slideTimer = new Timer(); + slideTimer.start(); uiDeviceSwipeHorizontal(centerX + centerX/2, centerX - centerX/2, centerY); + slideTimer.end(); + results.put(testTag, slideTimer); + endDumpsys(ACTIVITY_SLIDES, testTag); sleep(1); } timer.end(); @@ -200,7 +202,14 @@ public class UiAutomation extends UxPerfUiAutomation { timer = new Timer(); timer.start(); while (++slidesLeft < slideCount - 1) { + testTag = "slides_previous_" + (slideCount - 1 - slidesLeft); + startDumpsys(ACTIVITY_SLIDES); + slideTimer = new Timer(); + slideTimer.start(); uiDeviceSwipeHorizontal(centerX - centerX/2, centerX + centerX/2, centerY); + slideTimer.end(); + results.put(testTag, slideTimer); + endDumpsys(ACTIVITY_SLIDES, testTag); sleep(1); } timer.end(); @@ -209,12 +218,24 @@ public class UiAutomation extends UxPerfUiAutomation { sleep(1); // scroll forward in slideshow mode - startDumpsys(ACTIVITY_SLIDES); timer = new Timer(); timer.start(); clickView(BY_DESC, "Start slideshow", true); + timer.end(); + results.put("open_slideshow", timer); + + startDumpsys(ACTIVITY_SLIDES); + timer = new Timer(); + timer.start(); while (slidesLeft-- > 0) { + testTag = "slideshow_next_" + (slideCount - slidesLeft); + startDumpsys(ACTIVITY_SLIDES); + slideTimer = new Timer(); + slideTimer.start(); uiDeviceSwipeHorizontal(centerX + centerX/2, centerX - centerX/2, centerY); + slideTimer.end(); + results.put(testTag, slideTimer); + endDumpsys(ACTIVITY_SLIDES, testTag); sleep(1); } timer.end(); @@ -241,19 +262,10 @@ public class UiAutomation extends UxPerfUiAutomation { enterTextInSlide("Title", "WORKLOAD AUTOMATION"); enterTextInSlide("Subtitle", "Measuring perfomance of different productivity apps on Android OS"); saveDocument(docName); -/* - insertSlide("Title and Content"); - enterTextInSlide("title", "Introduction"); - enterTextInSlide("Text placeholder", "Welcome to Documentation for Workload Automation"); - clickView(BY_DESC, "Undo"); - enterTextInSlide("Text placeholder", - "Workload Automation (WA) is a framework for running workloads on real hardware devices. " - + "WA supports a number of output formats as well as additional instrumentation " - + "(such as Streamline traces). A number of workloads are included with the framework."); -*/ + insertSlide("Title and Content"); enterTextInSlide("title", "Extensions - Workloads"); - enterTextInSlide("Text placeholder", DOCUMENTATION_WORKLOADS); + enterTextInSlide("Text placeholder", SLIDE_TEXT_CONTENT); clickView(BY_DESC, "Text placeholder"); clickView(BY_DESC, "Format"); clickView(BY_TEXT, "Droid Sans"); @@ -262,15 +274,7 @@ public class UiAutomation extends UxPerfUiAutomation { UiObject decreaseFont = getViewByDesc("Decrease text"); repeatClickView(decreaseFont, 20); getUiDevice().pressBack(); -/* - insertSlide("Title and Content"); - enterTextInSlide("title", "Agendas - Intro"); - enterTextInSlide("Text placeholder", DOCUMENTATION_AGENDAS_1); - insertSlide("Title and Content"); - enterTextInSlide("title", "Agendas - Uses"); - enterTextInSlide("Text placeholder", DOCUMENTATION_AGENDAS_2); -*/ // get image from gallery and insert insertSlide("Title Only"); clickView(BY_DESC, "Insert"); @@ -382,19 +386,19 @@ public class UiAutomation extends UxPerfUiAutomation { } } - public UiObject clickView(int criteria, String matching) throws Exception { + public UiObject clickView(FindByCriteria criteria, String matching) throws Exception { return clickView(criteria, matching, null, false); } - public UiObject clickView(int criteria, String matching, boolean wait) throws Exception { + public UiObject clickView(FindByCriteria criteria, String matching, boolean wait) throws Exception { return clickView(criteria, matching, null, wait); } - public UiObject clickView(int criteria, String matching, String clazz) throws Exception { + public UiObject clickView(FindByCriteria criteria, String matching, String clazz) throws Exception { return clickView(criteria, matching, clazz, false); } - public UiObject clickView(int criteria, String matching, String clazz, boolean wait) throws Exception { + public UiObject clickView(FindByCriteria criteria, String matching, String clazz, boolean wait) throws Exception { UiObject view; switch (criteria) { case BY_ID: From 019f95394038847ea96461b73f17072ee587f8de Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Sun, 22 May 2016 20:02:47 +0100 Subject: [PATCH 19/25] Update slide indexes --- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 15016 -> 14938 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 16 ++++++++-------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index 78e52bf5fb62a6fe70fd664b788cba5f33483e24..8a6b45b1aa43d4be4e5b9429309437fe1da469ea 100644 GIT binary patch delta 14732 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 delta 14811 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 0) { - testTag = "slides_next_" + (slideCount - slidesLeft); + while (++slideIndex < slideCount) { + testTag = "slides_next_" + slideIndex; startDumpsys(ACTIVITY_SLIDES); slideTimer = new Timer(); slideTimer.start(); @@ -201,8 +201,8 @@ public class UiAutomation extends UxPerfUiAutomation { startDumpsys(ACTIVITY_SLIDES); timer = new Timer(); timer.start(); - while (++slidesLeft < slideCount - 1) { - testTag = "slides_previous_" + (slideCount - 1 - slidesLeft); + while (--slideIndex > 0) { + testTag = "slides_previous_" + slideIndex; startDumpsys(ACTIVITY_SLIDES); slideTimer = new Timer(); slideTimer.start(); @@ -227,8 +227,8 @@ public class UiAutomation extends UxPerfUiAutomation { startDumpsys(ACTIVITY_SLIDES); timer = new Timer(); timer.start(); - while (slidesLeft-- > 0) { - testTag = "slideshow_next_" + (slideCount - slidesLeft); + while (++slideIndex < slideCount) { + testTag = "slideshow_next_" + slideIndex; startDumpsys(ACTIVITY_SLIDES); slideTimer = new Timer(); slideTimer.start(); From e3b00feb852cb14f1f74087606b31f1c9ded737f Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Thu, 26 May 2016 11:04:26 +0100 Subject: [PATCH 20/25] Add description for Slides --- wlauto/workloads/googleslides/__init__.py | 25 ++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/wlauto/workloads/googleslides/__init__.py b/wlauto/workloads/googleslides/__init__.py index dde98245..e4d1b663 100644 --- a/wlauto/workloads/googleslides/__init__.py +++ b/wlauto/workloads/googleslides/__init__.py @@ -26,8 +26,31 @@ def log_method(workload, name): class GoogleSlides(AndroidUiAutoBenchmark): name = 'googleslides' + description = ''' + A workload to perform standard productivity tasks with Google Slides. The workload carries + out various tasks, such as creating a new presentation, adding text, images, and shapes, + as well as basic editing and playing a slideshow. + + Although this workload attempts to be network independent it may require a network connection + to run. + + Test description: + 1. The workload is split into two main scenarios: + - A. a PowerPoint presentation is copied on to the devices to test slide navigation, + - B. a new file is created in the application and basic editing performed. + 2. The application is started in offline access mode + 3. For scenario A, the navigation test is performed while the file is in editing mode, + swiping forward to the next slide until the end, followed by the same action in the + reverse direction back to the first slide. + 4. Afterwards, one more navigation pass through is done while in presentation mode. + 5. In scenario B, a new PowerPoint presentation is created on-device, new slides added + with some text, an image from the gallery and a shape. Editing is done on the text + to change font size and resize the shape. + 6. Finally, the file is saved to storage, and then deleted from the documents list and device + after a short delay. + ''' + package = 'com.google.android.apps.docs.editors.slides' - description = 'Creates a Google Slides presentation with some commonly used features' activity = '' # Views for FPS instrumentation From 994bfc3981918096229dcb6f096d912d04b5ed12 Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Thu, 26 May 2016 16:49:56 +0100 Subject: [PATCH 21/25] Explanation for using Android Download folder --- wlauto/workloads/googleslides/__init__.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/wlauto/workloads/googleslides/__init__.py b/wlauto/workloads/googleslides/__init__.py index e4d1b663..3380b790 100644 --- a/wlauto/workloads/googleslides/__init__.py +++ b/wlauto/workloads/googleslides/__init__.py @@ -31,8 +31,7 @@ class GoogleSlides(AndroidUiAutoBenchmark): out various tasks, such as creating a new presentation, adding text, images, and shapes, as well as basic editing and playing a slideshow. - Although this workload attempts to be network independent it may require a network connection - to run. + Under normal circumstances, this workload should be able to run without a network connection. Test description: 1. The workload is split into two main scenarios: @@ -90,7 +89,9 @@ class GoogleSlides(AndroidUiAutoBenchmark): self.run_timeout = 300 self.output_file = path.join(self.device.working_directory, self.instrumentation_log) self.local_dir = self.dependencies_directory - # Android downloads folder + # Use Android downloads folder as it is the default folder opened by Google Slides' + # file picker, and not WA's working directory. Helps test reliability by avoiding + # having to navigate around the filesystem to locate pushed file. self.device_dir = path.join(self.device.working_directory, '..', 'Download') self.wa_test_file = 'wa_test_{}'.format(self.local_file) if self.local_file else None From ef2d1d3afeaf664bde8090cf43b56bce33de2247 Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Fri, 27 May 2016 12:26:33 +0100 Subject: [PATCH 22/25] 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")); } } From 403d8ea1bfee411d1f535d78fefe0e3ee03e392c Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Fri, 27 May 2016 14:31:13 +0100 Subject: [PATCH 23/25] Move common methods to base classes --- .gitignore | 1 + .../common/android/BaseUiAutomation$1.class | Bin 868 -> 1311 bytes .../BaseUiAutomation$FindByCriteria.class | Bin 0 -> 1278 bytes .../BaseUiAutomation$ScreenOrientation.class | Bin 1296 -> 1296 bytes wlauto/common/android/BaseUiAutomation.class | Bin 9139 -> 12128 bytes .../common/android/UxPerfUiAutomation$1.class | Bin 917 -> 917 bytes ...UxPerfUiAutomation$GestureTestParams.class | Bin 1710 -> 1710 bytes .../common/android/UxPerfUiAutomation.class | Bin 12314 -> 12543 bytes wlauto/external/uiauto/build.sh | 6 ++ .../arm/wlauto/uiauto/BaseUiAutomation.java | 87 ++++++++++++++++ .../arm/wlauto/uiauto/UxPerfUiAutomation.java | 10 +- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 15787 -> 16176 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 95 ++---------------- 13 files changed, 112 insertions(+), 87 deletions(-) create mode 100644 wlauto/common/android/BaseUiAutomation$FindByCriteria.class diff --git a/.gitignore b/.gitignore index 0f568f55..5a58f101 100755 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ pmu_logger.mod.c obj/ libs/armeabi wlauto/workloads/*/uiauto/bin/ +wlauto/external/uiauto/bin/ diff --git a/wlauto/common/android/BaseUiAutomation$1.class b/wlauto/common/android/BaseUiAutomation$1.class index a70b448fa455d76641c6d4344b845d9e9cd5282c..5f94fdc208c89a11adf127138369f8c1acf9dc3d 100644 GIT binary patch delta 596 zcmZXS+fEZv6o$VwJxpgDYZbvBRH`VQs(=MrDxj1?Nzk?=S`!Hp(*zP44kq;wO-#J= zzL^K`(rYy_#uyTBz4IM-4&&NzVbEk|{r@*>?OA)T?1Sigcjf2rZ~H)jIhXTXaENo! zQ8#EXYjerKWfO*6u5i^93_I#_2D8TbCgg3d+1%(A8dB*^j>nfedmGi)3*FB1&2FdN zd-EzeVl(P-lY++?PJ4_q;W0@u@MJJoGBCx2P1)2;dn8QF46`1$O}N9X;0FyW7pzND zipGr|ZzBBDRfxW9@4VQ2CQSSJwV-bK>Elaggh+Mu$?~EwWzwbp()QEtMrW_RBZU0? zvS4fZV(r1gk!#f+wS=;6rW_o|KoGLtRhsjyhxg~}LbzUAY9+Eduv0o=E0Hv30#!Y~ zei35yaaOfo=?5Woup9icN^ids+yCx<#`$C(_X{V&D<25oJ48=0@)u7kMi22LQ5^l_ zIU*z(Vpuh&gD$GhahHZ_lT{w8uCv9qs>OhIbyblnC5h>3$_8~qNsSgM(yC!H8n5e{ W)=XTLL`?5RhOtUYZ$O4ymDC@%iDa$- delta 275 zcmbQw^@Ppv)W2Q(7#J7~8ML_=L>a_588{fkIe{z*5Lc3&K?=l?1`#ss46^JD@)P}i zC*CiUP+(_JQDDBmq(YBm)2d diff --git a/wlauto/common/android/BaseUiAutomation$FindByCriteria.class b/wlauto/common/android/BaseUiAutomation$FindByCriteria.class new file mode 100644 index 0000000000000000000000000000000000000000..6727b7d5f41ad4f909e77e777412ba5ef6981eb0 GIT binary patch literal 1278 zcmbVL+iuf95IvhXapJlc(hKy$J(MJcnm|h{QdMo!REmh`gWHOT2ee5|*~+mc$1dWp zAeATrf%?oxA!fG`O@Id!TiWsL9M3s3JNx73m+t_ISWQDi-ar8hI;M0yG%$iixmYQT z8Wgl7;!z6Y(iT&gkoK{TCk%C4!7Qy0}(ob;0$Kf^PHgU@^;&4Gpy8_ ze#_!P%X;VXDDlRG ztAP_IPq-UNZO?M~!Lw*(|IlF=tqIS05w#jlu*VxN?dU4~?i+^Zx!N&5;g-w2Bg+m0 z;T@Io1Iy0T{3dq~ICYtLx@4NiTf~|9n}{K~COi?YGfe$MM>T)IpoMP*^&xGGBaeqs zK$+q>8Az=)-R{rTp41gDYOM`ez&ahNVf#_gbasU7)8wBcuqc~lVp7iHl!+xQ>v+nr zJkS7{n8k{TTexjv6d4oaa+yGeM)vYhWI;5`P1pBG(L^raQ|xZz*lC8Odj9_ekkZ~h zs~b@2$@hBz`sqs>MY>cYbR)HmX(<&TOKO!R!NAyzY>Gr6jjOl@hH3Kdkd=?o0sDm5 zIpQD4W0;{esbUu4XEE2sFCnIOjf__KjKn!KiI4T+uhWisfx->kRB`Gdp(JAwae4v0 zurPOq0ca%G2{RM literal 0 HcmV?d00001 diff --git a/wlauto/common/android/BaseUiAutomation$ScreenOrientation.class b/wlauto/common/android/BaseUiAutomation$ScreenOrientation.class index 2f04ac44a3c881ff30ee1d137972653be7151c13..a9410115e666b76804c0ba23ef9cd5a4fe2373ff 100644 GIT binary patch delta 31 icmbQhHGylxUuH)2$^V%3futUb9gxgrX#kS%Sd;*uSP6Cj delta 31 icmbQhHGylxUuH(N$^V%3futUb9gxgrX#kS%Sd;*uAPI5+ diff --git a/wlauto/common/android/BaseUiAutomation.class b/wlauto/common/android/BaseUiAutomation.class index 914a153306c886837801f7021f0af240a27dc127..a2a03d61c3d4476b581cbb6edb01ba0981e1d0b5 100644 GIT binary patch literal 12128 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 L61jom8_RwN9n5>f delta 3575 zcmb_fd3;sH75>i4a^Jg|ENn3$`$8Th61ET%LnMUFunCBQkOTuH5u}6$ETXkhEQ?!F zuU4rowAEUwv@S@RQY*!ZQV_MZ#flXzimet4w%Tg7+V9-^@^ZBx{lk~v@7$TWXTI~z znQzYAyxO>ZV#mIZcRmJSm@Ki;h&>@ZiKpT?pubp~y}cnc;Me+cpUu|(AfC2y0MBUW zSqslu_>GN3>{0XEAfDIf?`#yg!wYQpN%F- zRg^Q-q^U`_q<>H{Y|K%T2PIS8vn z87!sF<%uPkLu9BRwsiTjRwKh?xIwdwu%ygjxr}snCFaJj##Mr_^I+ewW0Hzvu9R}8 zGAXm)CMj3nvkcZ?t&s|;6qMf@H^AALG`RF^sp3mqVPuq4T2gJ~92qSLEp2OE*t9Zt z@IoUsGRBfxBV%Qp^Hx$#c)XDbGEpJVRZ~ay_>z%HGTf5MMyAMABh%30%t&qto+r}{ z?j(_2$yv2CNJM6;IbTW*He-vych!7P&G*&ZgC7`~B^MZMl?#o`mN`Z)lDU@5Gg6N& zPIgM`&;~k6qni0TrCFz3EKNoh2-z;u7tFGe7B#ITvLj_g@DlATmbuP}ltD4>`qP{v zy(UYAb4xX_-y1+rHwpg!awc|TUl%okG9p>oL*3J3CC;%XbTXF0a(nI z;ai|Lmf%u8MHAxsA4|_1+2cQm^NL;nRCj(t#2-k&GPH4qU^%|*&aCb~r9)??LeKqR z+EPXth9MYEJHkaNkS#E8Q4hrB^Ibb6n)B6xkV*QMR~;{U~Bo zqYutO21X+vHBt7O!*0$65j-8!Yy>zf17AZ2IcBhZHLhVCf3!8Y){S;JqyOlhERUt{ zxKl9xIx*xk7;9aOvodRDC`NBLlM`7k&qX%sn7_#`RxVk9+3#jM1Rj=-d2Id6)?q#4 zv^sk;GpiIeo;_fi56Qpx-AJAa0`%QLy=fkEvNC-7nTZh2cQHJ@*%3C~k>_ycb-3Q0 z*_O4*)z2iZ2)K|+n2ltXu0qViAk^bb>b#svufoNcfF_)W1(-?2UqD^Vr2ra;-AolP z;ZCfiD%VqGs`Pqt7|T7pfqNfhe?v4Q8*rnm2OYbKCnqq0L9fL(*o2U~p`_2CsPif4DvCyF6}#J3 z9VJtZJ0oPOv5Bn!XB6RE-2RwP#keaPqrY=oPMI%G2jg7LS=TVm8pc_Bia6i?zv6ty z7iUavnY%UKdah%f>lx<;#<`JkHl8Amci6y#^m*%HO;zDBBjtRm=uB}Z5@vT{R41yp zvG1Pl!iXXrH<+g;6G@(EO;!*mEiWtFqux7C>dVsY`qt;Awe1JAQ097H-^KrUV+ z${`HJOE?>cS>Ima4S0m*=r!)^Q9Ob-+z88AfWZ8A*Z3XGzup%*rrA}E?BIU1QB1LX zKFn4u(QoJ8Ji=mEgpIXy=%kA0vdsRJ$+Z}$ib?NcvAmfd3p?2gF=#S3po^aa{(ARl zbQ!ap`-<9qOL>!Fj&Uh(GuUy4Il-m8!==27>3EMSd>`xZ0Z~6BjgP+QrA+5N;4P(v zw}iKpb-eXHZz;c^rgTSM4mY~XDB_}lPf#d=5(%JGVlh(UP$3pZOAxjEyq_Y*x6f0f zyD$~I@JsH3KUKTE`;nO4WiF^kuM_h=bEYM^7?z~Cz+RaPMu7crkF&Zf-PZ?}t%}|> z(g$(Um;ZnCLpGoJlIo&(H;wo$%)J+03Y}SSpWb4 diff --git a/wlauto/common/android/UxPerfUiAutomation$GestureTestParams.class b/wlauto/common/android/UxPerfUiAutomation$GestureTestParams.class index d027418966fd3652c45253fc53622619b91bf5a1..afbe52c33286aee4f635be7597529a0f6e3d97b0 100644 GIT binary patch delta 67 zcmZ3-yN-851FNJt11F;e10SO$gD|5NgA}7Rg94)sgDRu#%ySM=sMYgtqcHplL}z~ delta 67 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 delta 5688 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 diff --git a/wlauto/external/uiauto/build.sh b/wlauto/external/uiauto/build.sh index b32ec134..95f9872f 100755 --- a/wlauto/external/uiauto/build.sh +++ b/wlauto/external/uiauto/build.sh @@ -16,6 +16,12 @@ +# Build and return appropriate exit code if failed ant build +exit_code=$? +if [ $exit_code -ne 0 ]; then + echo "ERROR: 'ant build' exited with code $exit_code" + exit $exit_code +fi cp bin/classes/com/arm/wlauto/uiauto/*.class ../../common/android diff --git a/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/BaseUiAutomation.java b/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/BaseUiAutomation.java index f7df5dc2..61ed0d64 100644 --- a/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/BaseUiAutomation.java +++ b/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/BaseUiAutomation.java @@ -23,6 +23,7 @@ import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeUnit; import android.os.Bundle; +import android.os.SystemClock; import android.graphics.Point; import android.graphics.Rect; @@ -37,6 +38,14 @@ public class BaseUiAutomation extends UiAutomatorTestCase { public long waitTimeout = TimeUnit.SECONDS.toMillis(4); public enum ScreenOrientation { RIGHT, NATURAL, LEFT }; + public static final int CLICK_REPEAT_INTERVAL_MINIMUM = 5; + public static final int CLICK_REPEAT_INTERVAL_DEFAULT = 50; + + /* + * Used by clickView() methods in order to provide a consistent API + */ + public enum FindByCriteria { BY_ID, BY_TEXT, BY_DESC; } + public void sleep(int second) { super.sleep(second * 1000); } @@ -276,4 +285,82 @@ public class BaseUiAutomation extends UiAutomatorTestCase { getUiDevice().getInstance().swipe(rect.centerX(), rect.centerY(), rect.centerX(), rect.centerY(), steps); } + + public void uiDeviceSwipeVertical(int startY, int endY, int xCoordinate, int steps) { + getUiDevice().swipe(startY, xCoordinate, endY, xCoordinate, steps); + } + + public void uiDeviceSwipeHorizontal(int startX, int endX, int yCoordinate, int steps) { + getUiDevice().swipe(startX, yCoordinate, endX, yCoordinate, steps); + } + + public void repeatClickView(UiObject view, int repeatCount, int intervalInMillis) throws Exception { + int repeatInterval = intervalInMillis > CLICK_REPEAT_INTERVAL_MINIMUM ? intervalInMillis : CLICK_REPEAT_INTERVAL_DEFAULT; + if (repeatCount < 1 || !view.isClickable()) { + return; + } + while (repeatCount-- > 0) { + view.click(); + SystemClock.sleep(repeatInterval); // in order to register as separate click + } + } + + public UiObject clickView(FindByCriteria criteria, String matching) throws Exception { + return clickView(criteria, matching, null, false); + } + + public UiObject clickView(FindByCriteria criteria, String matching, boolean wait) throws Exception { + return clickView(criteria, matching, null, wait); + } + + public UiObject clickView(FindByCriteria criteria, String matching, String clazz) throws Exception { + return clickView(criteria, matching, clazz, false); + } + + public UiObject clickView(FindByCriteria criteria, String matching, String clazz, boolean wait) throws Exception { + UiObject view; + switch (criteria) { + case BY_ID: + view = clazz == null ? getViewById(matching) : getUiObjectByResourceId(matching, clazz); + break; + case BY_DESC: + view = clazz == null ? getViewByDesc(matching) : getUiObjectByDescription(matching, clazz); + break; + case BY_TEXT: + default: + view = clazz == null ? getViewByText(matching) : getUiObjectByText(matching, clazz); + break; + } + if (wait) { + view.clickAndWaitForNewWindow(); + } else { + view.click(); + } + return view; + } + + public UiObject getViewByText(String text) throws Exception { + UiObject object = new UiObject(new UiSelector().textContains(text)); + if (!object.waitForExists(waitTimeout)) { + throw new UiObjectNotFoundException("Could not find view with text: " + text); + }; + return object; + } + + public UiObject getViewByDesc(String desc) throws Exception { + UiObject object = new UiObject(new UiSelector().descriptionContains(desc)); + if (!object.waitForExists(waitTimeout)) { + throw new UiObjectNotFoundException("Could not find view with description: " + desc); + }; + return object; + } + + public UiObject getViewById(String id) throws Exception { + UiObject object = new UiObject(new UiSelector().resourceId(id)); + if (!object.waitForExists(waitTimeout)) { + throw new UiObjectNotFoundException("Could not find view with resource ID: " + id); + }; + return object; + } + } diff --git a/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/UxPerfUiAutomation.java b/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/UxPerfUiAutomation.java index 38f6e5c1..8d14461d 100644 --- a/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/UxPerfUiAutomation.java +++ b/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/UxPerfUiAutomation.java @@ -110,14 +110,20 @@ public class UxPerfUiAutomation extends BaseUiAutomation { } public void initDumpsysSurfaceFlinger(String appPackage) { - String packageView = getSurfaceFlingerView(appPackage); + initDumpsysSurfaceFlinger(appPackage, getSurfaceFlingerView(appPackage)); + } + + public void initDumpsysSurfaceFlinger(String appPackage, String packageView) { List command = Arrays.asList("dumpsys", "SurfaceFlinger", "--latency-clear", packageView); executeCommand(command); } public void exitDumpsysSurfaceFlinger(String appPackage, File filename) { - String packageView = getSurfaceFlingerView(appPackage); + exitDumpsysSurfaceFlinger(appPackage, getSurfaceFlingerView(appPackage), filename); + } + + public void exitDumpsysSurfaceFlinger(String appPackage, String packageView, File filename) { List command = Arrays.asList("dumpsys", "SurfaceFlinger", "--latency", packageView); exitDumpsys(command, filename); } diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index c66251f7e5205b1be5efcb773c25c5201f1e73ab..62cf6b121cc5b1d50575d2f58ece0eb0e14f6238 100644 GIT binary patch delta 15981 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 O0!%Qbg8z!g!TukwoUo$+ delta 15589 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 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 1ab200f5..44ee526c 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 @@ -30,9 +30,9 @@ import com.android.uiautomator.core.UiSelector; import com.arm.wlauto.uiauto.UxPerfUiAutomation; -import static com.arm.wlauto.uiauto.googleslides.UiAutomation.FindByCriteria.BY_ID; -import static com.arm.wlauto.uiauto.googleslides.UiAutomation.FindByCriteria.BY_TEXT; -import static com.arm.wlauto.uiauto.googleslides.UiAutomation.FindByCriteria.BY_DESC; +import static com.arm.wlauto.uiauto.BaseUiAutomation.FindByCriteria.BY_ID; +import static com.arm.wlauto.uiauto.BaseUiAutomation.FindByCriteria.BY_TEXT; +import static com.arm.wlauto.uiauto.BaseUiAutomation.FindByCriteria.BY_DESC; public class UiAutomation extends UxPerfUiAutomation { @@ -49,10 +49,6 @@ public class UiAutomation extends UxPerfUiAutomation { public static final String CLASS_IMAGE_BUTTON = "android.widget.ImageButton"; public static final String CLASS_TABLE_ROW = "android.widget.TableRow"; - public enum FindByCriteria { - BY_ID, BY_TEXT, BY_DESC; - } - 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; @@ -188,7 +184,8 @@ public class UiAutomation extends UxPerfUiAutomation { startDumpsys(ACTIVITY_SLIDES); slideTimer = new Timer(); slideTimer.start(); - uiDeviceSwipeHorizontal(centerX + centerX/2, centerX - centerX/2, centerY); + uiDeviceSwipeHorizontal(centerX + centerX/2, centerX - centerX/2, + centerY, DEFAULT_SWIPE_STEPS); slideTimer.end(); results.put(testTag, slideTimer); endDumpsys(ACTIVITY_SLIDES, testTag); @@ -208,7 +205,8 @@ public class UiAutomation extends UxPerfUiAutomation { startDumpsys(ACTIVITY_SLIDES); slideTimer = new Timer(); slideTimer.start(); - uiDeviceSwipeHorizontal(centerX - centerX/2, centerX + centerX/2, centerY); + uiDeviceSwipeHorizontal(centerX - centerX/2, centerX + centerX/2, + centerY, DEFAULT_SWIPE_STEPS); slideTimer.end(); results.put(testTag, slideTimer); endDumpsys(ACTIVITY_SLIDES, testTag); @@ -234,7 +232,8 @@ public class UiAutomation extends UxPerfUiAutomation { startDumpsys(ACTIVITY_SLIDES); slideTimer = new Timer(); slideTimer.start(); - uiDeviceSwipeHorizontal(centerX + centerX/2, centerX - centerX/2, centerY); + uiDeviceSwipeHorizontal(centerX + centerX/2, centerX - centerX/2, + centerY, DEFAULT_SWIPE_STEPS); slideTimer.end(); results.put(testTag, slideTimer); endDumpsys(ACTIVITY_SLIDES, testTag); @@ -274,7 +273,7 @@ public class UiAutomation extends UxPerfUiAutomation { clickView(BY_TEXT, "Droid Sans Mono"); clickView(BY_ID, PACKAGE_ID + "palette_back_button"); UiObject decreaseFont = getViewByDesc("Decrease text"); - repeatClickView(decreaseFont, 20); + repeatClickView(decreaseFont, 20, CLICK_REPEAT_INTERVAL_MS); getUiDevice().pressBack(); // get image from gallery and insert @@ -387,80 +386,6 @@ public class UiAutomation extends UxPerfUiAutomation { sleep(1); } - public void repeatClickView(UiObject view, int repeat) throws Exception { - if (repeat < 1 || !view.isClickable()) return; - while (repeat-- > 0) { - view.click(); - SystemClock.sleep(CLICK_REPEAT_INTERVAL_MS); // in order to register as separate click - } - } - - public UiObject clickView(FindByCriteria criteria, String matching) throws Exception { - return clickView(criteria, matching, null, false); - } - - public UiObject clickView(FindByCriteria criteria, String matching, boolean wait) throws Exception { - return clickView(criteria, matching, null, wait); - } - - public UiObject clickView(FindByCriteria criteria, String matching, String clazz) throws Exception { - return clickView(criteria, matching, clazz, false); - } - - public UiObject clickView(FindByCriteria criteria, String matching, String clazz, boolean wait) throws Exception { - UiObject view; - switch (criteria) { - case BY_ID: - view = clazz == null ? getViewById(matching) : getUiObjectByResourceId(matching, clazz); - break; - case BY_DESC: - view = clazz == null ? getViewByDesc(matching) : getUiObjectByDescription(matching, clazz); - break; - case BY_TEXT: - default: - view = clazz == null ? getViewByText(matching) : getUiObjectByText(matching, clazz); - break; - } - if (wait) { - view.clickAndWaitForNewWindow(); - } else { - view.click(); - } - return view; - } - - public UiObject getViewByText(String text) throws Exception { - UiObject object = new UiObject(new UiSelector().textContains(text)); - if (!object.waitForExists(waitTimeout)) { - throw new UiObjectNotFoundException("Could not find view with text: " + text); - }; - return object; - } - - public UiObject getViewByDesc(String desc) throws Exception { - UiObject object = new UiObject(new UiSelector().descriptionContains(desc)); - if (!object.waitForExists(waitTimeout)) { - throw new UiObjectNotFoundException("Could not find view with description: " + desc); - }; - return object; - } - - public UiObject getViewById(String id) throws Exception { - UiObject object = new UiObject(new UiSelector().resourceId(id)); - if (!object.waitForExists(waitTimeout)) { - throw new UiObjectNotFoundException("Could not find view with resource ID: " + id); - }; - return object; - } - - public void uiDeviceSwipeHorizontal(int startX, int endX, int height) { - uiDeviceSwipeHorizontal(startX, endX, height, DEFAULT_SWIPE_STEPS); - } - - public void uiDeviceSwipeHorizontal(int startX, int endX, int height, int steps) { - getUiDevice().swipe(startX, height, endX, height, steps); - } - public void startDumpsys(String viewName) throws Exception { if (!dumpsysEnabled) return; From 51c784f5dd3e69ffb5323604148aaef81772b302 Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Fri, 27 May 2016 14:37:54 +0100 Subject: [PATCH 24/25] Use consistent method names --- wlauto/common/android/BaseUiAutomation.class | Bin 12128 -> 12090 bytes .../arm/wlauto/uiauto/BaseUiAutomation.java | 30 +++---- .../com.arm.wlauto.uiauto.googleslides.jar | Bin 16176 -> 16155 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 84 +++++++++--------- 4 files changed, 57 insertions(+), 57 deletions(-) diff --git a/wlauto/common/android/BaseUiAutomation.class b/wlauto/common/android/BaseUiAutomation.class index a2a03d61c3d4476b581cbb6edb01ba0981e1d0b5..d8831cb5cb06f6dfb1060dee20533f7fbf9febb5 100644 GIT binary patch delta 1098 zcmYk6*>jU+6voffh4;(LN!nVBEiG+Os?yS6DT`Q^+9FC7D?1`oLK;eFNlFqZWh=@N9&f#zH!V6~{y+YBdYmVbWiUZo)s|}2RlYy$ zVWNr`6g3)olA=~IS&fEKt7?j3s$!Z>UsOz2yp+@M1CfTTvzURI2D3cOw$y~6LA|zK zRx~IYEzQRq-F?MJN%YLMl*X&-@|t3vqRHTO4{umnE+M6!uj_9bH0$}6Vu8iN;rD?> z>ay6lwRb$M^svf9i^01Ft3l&mAwT z!XqjNzPCREb*?{HsAX6ypp05_?T%B zeT+|VlJO}{8A!m-U1@$i`~`i(IITD%kci(h`f--=CB9;u)4_R?xL+$SxPkmB-bIy{ zaLV1uud2JOz9-OUaE0j?y2H3C7wIbfuDHf@L)8scH&xvfg=^>omAn3e;(=tr-I8pX uxYOY>x2Jl0w(Jk_V_6vp?L2G7mOPEslYg#tyO6lzk-qykE55iNrvGOE;uR!adv zCUH6nv?>S)jto+9KoQ#u@h(ZVbC3Y5R8jSm8WPqp#6b3pNByzCyt*s1WFx@RCrKfl*VX`(NuvlP2(|E+{#6b(-@Bm={}?ocaTu1l+weRCW@9%=IhGX9*xLW$1{7HKT*`yN;# zE=x77u_pGiWrF2`7X&W~UJ|U3wR#6HJ7{o_R9LBy0*&UnOvd$Vo0GYmn^Q=GqO-kB zx~8qx_wugq*-5vjG;mQB#(cNMP3CKxy;Rc@&uuk@dQvQu`ZopnBKM8)Ovy6S{Vmgm*#z(M+euDi92N<84 z8!<0&(2n7d;IJ%o$iinh!Z?c08DB`_OWMHrO7OMWT{t=XjmTrz4=S@Cv1}^ixR~!l zx55dgD|D4{(r(kAbdBj49cQ{O>XfM8MSW)#zD0LWynn2uz?RI6cz1yvvT?Y%9dE!N g=3IPefi>u>>`gS_hOHEb0(8^<+XU#A8B$sL50abrc>n+a diff --git a/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/BaseUiAutomation.java b/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/BaseUiAutomation.java index 61ed0d64..7218d2a0 100644 --- a/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/BaseUiAutomation.java +++ b/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/BaseUiAutomation.java @@ -42,7 +42,7 @@ public class BaseUiAutomation extends UiAutomatorTestCase { public static final int CLICK_REPEAT_INTERVAL_DEFAULT = 50; /* - * Used by clickView() methods in order to provide a consistent API + * Used by clickUiObject() methods in order to provide a consistent API */ public enum FindByCriteria { BY_ID, BY_TEXT, BY_DESC; } @@ -294,7 +294,7 @@ public class BaseUiAutomation extends UiAutomatorTestCase { getUiDevice().swipe(startX, yCoordinate, endX, yCoordinate, steps); } - public void repeatClickView(UiObject view, int repeatCount, int intervalInMillis) throws Exception { + public void repeatClickUiObject(UiObject view, int repeatCount, int intervalInMillis) throws Exception { int repeatInterval = intervalInMillis > CLICK_REPEAT_INTERVAL_MINIMUM ? intervalInMillis : CLICK_REPEAT_INTERVAL_DEFAULT; if (repeatCount < 1 || !view.isClickable()) { return; @@ -305,30 +305,30 @@ public class BaseUiAutomation extends UiAutomatorTestCase { } } - public UiObject clickView(FindByCriteria criteria, String matching) throws Exception { - return clickView(criteria, matching, null, false); + public UiObject clickUiObject(FindByCriteria criteria, String matching) throws Exception { + return clickUiObject(criteria, matching, null, false); } - public UiObject clickView(FindByCriteria criteria, String matching, boolean wait) throws Exception { - return clickView(criteria, matching, null, wait); + public UiObject clickUiObject(FindByCriteria criteria, String matching, boolean wait) throws Exception { + return clickUiObject(criteria, matching, null, wait); } - public UiObject clickView(FindByCriteria criteria, String matching, String clazz) throws Exception { - return clickView(criteria, matching, clazz, false); + public UiObject clickUiObject(FindByCriteria criteria, String matching, String clazz) throws Exception { + return clickUiObject(criteria, matching, clazz, false); } - public UiObject clickView(FindByCriteria criteria, String matching, String clazz, boolean wait) throws Exception { + public UiObject clickUiObject(FindByCriteria criteria, String matching, String clazz, boolean wait) throws Exception { UiObject view; switch (criteria) { case BY_ID: - view = clazz == null ? getViewById(matching) : getUiObjectByResourceId(matching, clazz); + view = clazz == null ? getUiObjectByResourceId(matching) : getUiObjectByResourceId(matching, clazz); break; case BY_DESC: - view = clazz == null ? getViewByDesc(matching) : getUiObjectByDescription(matching, clazz); + view = clazz == null ? getUiObjectByDescription(matching) : getUiObjectByDescription(matching, clazz); break; case BY_TEXT: default: - view = clazz == null ? getViewByText(matching) : getUiObjectByText(matching, clazz); + view = clazz == null ? getUiObjectByText(matching) : getUiObjectByText(matching, clazz); break; } if (wait) { @@ -339,7 +339,7 @@ public class BaseUiAutomation extends UiAutomatorTestCase { return view; } - public UiObject getViewByText(String text) throws Exception { + public UiObject getUiObjectByText(String text) throws Exception { UiObject object = new UiObject(new UiSelector().textContains(text)); if (!object.waitForExists(waitTimeout)) { throw new UiObjectNotFoundException("Could not find view with text: " + text); @@ -347,7 +347,7 @@ public class BaseUiAutomation extends UiAutomatorTestCase { return object; } - public UiObject getViewByDesc(String desc) throws Exception { + public UiObject getUiObjectByDescription(String desc) throws Exception { UiObject object = new UiObject(new UiSelector().descriptionContains(desc)); if (!object.waitForExists(waitTimeout)) { throw new UiObjectNotFoundException("Could not find view with description: " + desc); @@ -355,7 +355,7 @@ public class BaseUiAutomation extends UiAutomatorTestCase { return object; } - public UiObject getViewById(String id) throws Exception { + public UiObject getUiObjectByResourceId(String id) throws Exception { UiObject object = new UiObject(new UiSelector().resourceId(id)); if (!object.waitForExists(waitTimeout)) { throw new UiObjectNotFoundException("Could not find view with resource ID: " + id); diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index 62cf6b121cc5b1d50575d2f58ece0eb0e14f6238..02d6bcac797f31d12fcf63799b224a78226c58a8 100644 GIT binary patch delta 15951 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 H8{+=~K~0Z$ 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 44ee526c..14ede351 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 @@ -100,7 +100,7 @@ public class UiAutomation extends UxPerfUiAutomation { protected void skipWelcomeScreen() throws Exception { timer = new Timer(); timer.start(); - clickView(BY_TEXT, "Skip", true); + clickUiObject(BY_TEXT, "Skip", true); timer.end(); results.put("skip_welcome", timer); sleep(1); @@ -110,7 +110,7 @@ public class UiAutomation extends UxPerfUiAutomation { startDumpsys(ACTIVITY_DOCLIST); timer = new Timer(); timer.start(); - clickView(BY_DESC, "drawer"); + clickUiObject(BY_DESC, "drawer"); getUiDevice().pressBack(); timer.end(); results.put("open_drawer", timer); @@ -122,9 +122,9 @@ public class UiAutomation extends UxPerfUiAutomation { startDumpsys(ACTIVITY_SETTINGS); timer = new Timer(); timer.start(); - clickView(BY_DESC, "drawer"); - clickView(BY_TEXT, "Settings", true); - clickView(BY_TEXT, "Create PowerPoint"); + clickUiObject(BY_DESC, "drawer"); + clickUiObject(BY_TEXT, "Settings", true); + clickUiObject(BY_TEXT, "Create PowerPoint"); getUiDevice().pressBack(); timer.end(); results.put("enable_ppt_compat", timer); @@ -148,8 +148,8 @@ public class UiAutomation extends UxPerfUiAutomation { // Open document timer = new Timer(); timer.start(); - clickView(BY_DESC, "Open presentation"); - clickView(BY_TEXT, "Device storage", true); + clickUiObject(BY_DESC, "Open presentation"); + clickUiObject(BY_TEXT, "Device storage", true); timer.end(); results.put("open_file_picker", timer); @@ -158,8 +158,8 @@ public class UiAutomation extends UxPerfUiAutomation { list.scrollIntoView(new UiSelector().textContains(docName)); timer = new Timer(); timer.start(); - clickView(BY_TEXT, docName); - clickView(BY_TEXT, "Open", CLASS_BUTTON, true); + clickUiObject(BY_TEXT, docName); + clickUiObject(BY_TEXT, "Open", CLASS_BUTTON, true); timer.end(); results.put("open_document", timer); sleep(5); @@ -220,7 +220,7 @@ public class UiAutomation extends UxPerfUiAutomation { // scroll forward in slideshow mode timer = new Timer(); timer.start(); - clickView(BY_DESC, "Start slideshow", true); + clickUiObject(BY_DESC, "Start slideshow", true); timer.end(); results.put("open_slideshow", timer); @@ -253,8 +253,8 @@ public class UiAutomation extends UxPerfUiAutomation { // create new file timer = new Timer(); timer.start(); - clickView(BY_DESC, "New presentation"); - clickView(BY_TEXT, "New PowerPoint", true); + clickUiObject(BY_DESC, "New presentation"); + clickUiObject(BY_TEXT, "New PowerPoint", true); timer.end(); results.put("create_document", timer); endDumpsys(ACTIVITY_DOCLIST, "create_document"); @@ -267,13 +267,13 @@ public class UiAutomation extends UxPerfUiAutomation { insertSlide("Title and Content"); enterTextInSlide("title", "Extensions - Workloads"); enterTextInSlide("Text placeholder", SLIDE_TEXT_CONTENT); - clickView(BY_DESC, "Text placeholder"); - clickView(BY_DESC, "Format"); - clickView(BY_TEXT, "Droid Sans"); - clickView(BY_TEXT, "Droid Sans Mono"); - clickView(BY_ID, PACKAGE_ID + "palette_back_button"); - UiObject decreaseFont = getViewByDesc("Decrease text"); - repeatClickView(decreaseFont, 20, CLICK_REPEAT_INTERVAL_MS); + clickUiObject(BY_DESC, "Text placeholder"); + clickUiObject(BY_DESC, "Format"); + clickUiObject(BY_TEXT, "Droid Sans"); + clickUiObject(BY_TEXT, "Droid Sans Mono"); + clickUiObject(BY_ID, PACKAGE_ID + "palette_back_button"); + UiObject decreaseFont = getUiObjectByDescription("Decrease text"); + repeatClickUiObject(decreaseFont, 20, CLICK_REPEAT_INTERVAL_MS); getUiDevice().pressBack(); // get image from gallery and insert @@ -281,26 +281,26 @@ public class UiAutomation extends UxPerfUiAutomation { // 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); - clickView(BY_TEXT, "Recent"); + clickUiObject(BY_DESC, "Insert"); + clickUiObject(BY_TEXT, "Image", true); + clickUiObject(BY_TEXT, "Recent"); try { UiObject image = new UiObject(new UiSelector().resourceId("com.android.documentsui:id/date").instance(2)); image.clickAndWaitForNewWindow(); } catch (UiObjectNotFoundException e) { - clickView(BY_ID, "com.android.documentsui:id/date", true); + clickUiObject(BY_ID, "com.android.documentsui:id/date", true); } // last slide insertSlide("Title Slide"); // insert "?" shape - clickView(BY_DESC, "Insert"); - clickView(BY_TEXT, "Shape"); - clickView(BY_TEXT, "Buttons"); - clickView(BY_DESC, "actionButtonHelp"); - UiObject resize = getViewByDesc("Bottom-left resize"); - UiObject shape = getViewByDesc("actionButtonHelp"); - UiObject subtitle = getViewByDesc("subTitle"); + clickUiObject(BY_DESC, "Insert"); + clickUiObject(BY_TEXT, "Shape"); + clickUiObject(BY_TEXT, "Buttons"); + clickUiObject(BY_DESC, "actionButtonHelp"); + UiObject resize = getUiObjectByDescription("Bottom-left resize"); + UiObject shape = getUiObjectByDescription("actionButtonHelp"); + UiObject subtitle = getUiObjectByDescription("subTitle"); resize.dragTo(subtitle, 40); shape.dragTo(subtitle, 40); enterTextInSlide("title", "THE END. QUESTIONS?"); @@ -312,20 +312,20 @@ public class UiAutomation extends UxPerfUiAutomation { public void insertSlide(String slideLayout) throws Exception { sleep(1); // a bit of time to see previous slide - UiObject view = getViewByDesc("Insert slide"); + UiObject view = getUiObjectByDescription("Insert slide"); view.clickAndWaitForNewWindow(); - view = getViewByText(slideLayout); + view = getUiObjectByText(slideLayout); view.clickAndWaitForNewWindow(); } public void enterTextInSlide(String viewName, String textToEnter) throws Exception { - UiObject view = getViewByDesc(viewName); + UiObject view = getUiObjectByDescription(viewName); view.click(); view.setText(textToEnter); try { - clickView(BY_DESC, "Done"); + clickUiObject(BY_DESC, "Done"); } catch (UiObjectNotFoundException e) { - clickView(BY_ID, "android:id/action_mode_close_button"); + clickUiObject(BY_ID, "android:id/action_mode_close_button"); } // On some devices, keyboard pops up when entering text, and takes a noticeable // amount of time (few milliseconds) to disappear after clicking Done. @@ -337,17 +337,17 @@ public class UiAutomation extends UxPerfUiAutomation { public void saveDocument(String docName) throws Exception { timer = new Timer(); timer.start(); - clickView(BY_TEXT, "SAVE"); - clickView(BY_TEXT, "Device"); + clickUiObject(BY_TEXT, "SAVE"); + clickUiObject(BY_TEXT, "Device"); timer.end(); results.put("save_dialog_1", timer); timer = new Timer(); timer.start(); - UiObject filename = getViewById(PACKAGE_ID + "file_name_edit_text"); + UiObject filename = getUiObjectByResourceId(PACKAGE_ID + "file_name_edit_text"); filename.clearTextField(); filename.setText(docName); - clickView(BY_TEXT, "Save", CLASS_BUTTON); + clickUiObject(BY_TEXT, "Save", CLASS_BUTTON); timer.end(); results.put("save_dialog_2", timer); @@ -358,7 +358,7 @@ public class UiAutomation extends UxPerfUiAutomation { // 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"); + clickUiObject(BY_TEXT, "Overwrite"); } sleep(1); } @@ -366,9 +366,9 @@ public class UiAutomation extends UxPerfUiAutomation { public void deleteDocument(String docName) throws Exception { timer = new Timer(); timer.start(); - UiObject doc = getViewByText(docName); + UiObject doc = getUiObjectByText(docName); doc.longClick(); - clickView(BY_TEXT, "Remove"); + clickUiObject(BY_TEXT, "Remove"); timer.end(); results.put("delete_dialog_1", timer); From 6c4a7e75f62f232c20f5192a2f1d7b4f6ab2ba2e Mon Sep 17 00:00:00 2001 From: muendelezaji Date: Fri, 27 May 2016 15:39:54 +0100 Subject: [PATCH 25/25] Update base class & rebuild workloads --- ...UxPerfUiAutomation$GestureTestParams.class | Bin 1710 -> 1522 bytes .../android/UxPerfUiAutomation$Timer.class | Bin 1118 -> 983 bytes .../common/android/UxPerfUiAutomation.class | Bin 12543 -> 12488 bytes .../arm/wlauto/uiauto/UxPerfUiAutomation.java | 4 ++-- .../gmail/com.arm.wlauto.uiauto.gmail.jar | Bin 12561 -> 13748 bytes .../com.arm.wlauto.uiauto.googlephotos.jar | Bin 15305 -> 15950 bytes .../com.arm.wlauto.uiauto.googleslides.jar | Bin 16155 -> 16111 bytes .../com.arm.wlauto.uiauto.multiapp.jar | Bin 19574 -> 20349 bytes .../reader/com.arm.wlauto.uiauto.reader.jar | Bin 13901 -> 14964 bytes .../skype/com.arm.wlauto.uiauto.skype.jar | Bin 12296 -> 13361 bytes 10 files changed, 2 insertions(+), 2 deletions(-) diff --git a/wlauto/common/android/UxPerfUiAutomation$GestureTestParams.class b/wlauto/common/android/UxPerfUiAutomation$GestureTestParams.class index afbe52c33286aee4f635be7597529a0f6e3d97b0..9815c0c0739d38e393ebc4a1a124746a32204cd5 100644 GIT binary patch delta 571 zcmYL`%T5$g5Qe|%p0Vkf9zbwV7%tOzgTsge0t1K&DhoCyCNAAh3?V_IxNtS@U6FYY z6CfQE7Crzg-hnr8ZH)hEZkzwFsy z%OfwdF*kV}F&8m!ls~k;?0x;*e)sKDJL1Xyn;l!&KYnYA-NfFP*0y)I_nsTOQ{9cw zb^qE~@bNNS>h6TC=^9H3W%?5O8BAz#JK>g>5rz})cxf>hv3ztIHmnm14~l3peTvMt z<*ugO)snmV<$+Gr7?qAG`>wnoue)EEo5=`VBO`Q&6f%l#EaQd?GopjMb6h%3q$Mp1 zwoGg*9eQn*sy$`I)|jwoOz4n1A4;7`Wg5?2!C4;N6JC%<9w=0`#(k;B`JpdGd3ud= zNRI~+)dfyfWY;{M3!oPQS{Kj;{q|Bkuf+43x^3n>3+Gd>c+xAL)W2=cllli1kGA_) j)(rw4C<}N5QhJnF&<_-fO(jJ0S5?poc4o9AUtfqNys7+LP285)&dI&q2MgC@)d$+ zlPC*r5DCx-i3JD971(nC4uJA^8xVrc|5tT)b$zAo+r;0F&3|{7R{&2(~Ilh^aHQMTo0ZEP|u#2<@k)evF!F!eP$^xUz^&SwgQY zBQ0f&N(Ga$f^i<2Yh8^um}JH#20=`eCA4LtfY`Q)G-%A=YM!6RQl))rr&-@xz%`XR_i8otJS jn!{Om%hZBG7k!+Y9UQu|I>=u%hhBO={T1D#PeA?yL99)X diff --git a/wlauto/common/android/UxPerfUiAutomation$Timer.class b/wlauto/common/android/UxPerfUiAutomation$Timer.class index c9d2bb5bec106e7c231529c73ce9d213071ce71d..2af5921ffd4fba5cc737cd3dbd8cd93f0872614b 100644 GIT binary patch literal 983 zcmb7>OK;Oa6ot$=Q?ww?4r}9G@+dO_03#1|t z3w{7U3US7%Oek5v=G>X9Ip3T+^W*2Y?*Q&%*@cZu4(hmUf=V541A-lV&wLRH;DCP_=-!6~|I;d&qK%fo%Krrxm@!yC4B`X-RqsglnRKMp{g7rd5}57h zTFbcjiX9b(=FM9FdKG`P&YuP`fdt}_F^8seq@rGW^VxBvJX31SW;WpY|Q6u#?%Vi>9jVT|EFd8M} zY{__mTETA)8I^YXn8}V|$v?tP@had6f$NO%bOhQgp$k|f$_(uDdNXj%fIf0z!Axjg s1$aJUu9fC3(s)n&puZtyRhUzvlc8~^|S literal 1118 zcma)6T~8B16g|`KcH3ozQmu&M2U@i((#03lh(<&(n4%^H5+A4S2t)QG*$+Q{ln*8l zjSv0+f0XggY*Q=tp$~ia-n(f2kxUw^3~sv@1s;zB@1xJNH1aa3U;Cfl ziunD$+@M~dL5~TwE<>3z+*mLm0}3BJC)rbenvtP-C0+ zmmD!nQT}3RmfeZ6xF@!yQaty+Gp%F(fjc;dX$LcycTj=tU`hoCwuNN}_po4Lg`qX6 z+qrgzs^a#19v*scy2qkNaz|R7&q*o*hS^>g$0F3HzAJrS+1H$O6c*_YmFbEZC@ATa z6_k4YrVRkqs@fdYCD0+FN^zE|cPP?IVBTFm1#`cl;8spiRKZZe{HiHx6l+8dtP%YK zB6^7Pctj6yF(<$U%uz*DdJtV)T%tT5vqobWeJi`)Q6m1othPq4ll&)|&B@md*cdJk zIbOol-|9Js;kqZJ@r3TeKQgCj6!44)H;Cl<2x)ytdIbvuVIGZF!c0Z;N?hN(Bo`9>Oy0L#{A;D4}VT8rcg+<|5a|nQ>-N=|!1Y zX1+LTT1sdS%gWM8G&Fh_+B?G@YG@@|*^{#DA)SrOwff$N|8Jjj?mqj!?_TTPE?=w9 z+IhUWg@^_lywNH~9d%h$im@J=hbt_qN0~(it`uA)7$+F-#stZ_+M)=`1=k2B3a<6g zLR@EQTrb-jWP78mD&*!QfzQNbi-u#gMHQ&@!VlYvDopXB8g-6vs)?JtRE2=JOcMkJ zAveM%rpuFvg(zYcC8I{F%n%GSG1J5>i=x!!My-yx*^OHy-YOm3Cb(TtC%D6nJ1xw{ zT^8oxZa3yiZ$J=`#DR)$G1hvsmNJ%MxrqlDE3lGjDJ?VcAmbsdVys4k zs!c9WdYI9OHEMTqX4+b&HF$*S5FR!07~^rQ1Er~uD^2xJ=~wauo@82q^@67uPh&ab z8Ei1|EaN$BWNgAZMjX$BdQJ7s@D&Dp!6}6!W>wnZm=g+`*vx3c7Bx4eC}AsJP}@_^ zcWq<5sE(yn6t&;qx@hV;uEC(eAoSvQ-<;v<8S=KI8JfU05#n+ zKsEF%Do2+=px(ZqKN52M1v4H06gyUMaZM~13bFx%^tcRzjRfs)xQs+Ll8i)9ioa%B zI9eO6u!FwI0o!jHCL3;QGz||M7B<8O_FCeCH{N{O5yW?ARHvv5bJF_JSpBs_D^V+3 zD_?7f)&*LZsz}a7iEip3R$Fr>B)DmkO3lq3vV}$sb!E7kX!It!Jim#?6s*_TRHk*Z z)R}snrzNF|wMMF7Zb_ntx+qyS=T;wo&OsRgyQV+=C4L9iL9= zID^hY9~y+dbRIHkD6(jk&K!0kpH@?Y-bwX6w71*0n08S+8Qo`Xv_n^xr~CEFMILoH zFH^g@{^Qm=U);{tZs%yXf!ZxcyX9)PeC;;q|G34Q^3z>|JyfdOSwQ-)r{kjG8MIi( WB|6sYsC2A?pAIH@P>5!1C(pkWh*EC= delta 1378 zcmbu8dr;I>6vxl^w+naox0hW3Ly%M$9dnmgMdM^7Q#r<<`6wS`WwgN$U7}su1%n<^ znwFWCUJW!KXfLvd=_Zt#^bYN1nOdQum11Qti_#v_JvdC$-~DkuzkANT_xnBf%>3H? z-F|b|nXNmB=mNvN$sCC~j5nze6P&aF6HQu*t4%U+4Pz2xGGmGZQ~6YpNnu>en8vt{ zalMlk;|5b>I;S^sTFk4P_@bLYWIQFw=zq>dKk72voSJ47ajN zkP%{3I&hmnn0F#3s!(l`8?#vDc1FHHjXacaTuq@hQtaqg?mv|KQ0u2%?uu{@8S}yRI#44KNEl%zuTB$e(NSnv!sNNT{djOQet zN4>-g*eLL##3pQ(h@wg2C2RpDmiuSO8@fqWD#uwPHX2+-2wezV1I4E(5(ZM*(I6@r~U-AIH!q*Z< zIX%X!P8^r`2FLXfd%L=#x~$9!Tc!VY_N~Bo5-0Gzzz-5X;wOQhB~IcOiC@vxJId-R zm7L&C_zhhWzvGm|X~rKor7lhwlK3aO1peYl{4H??-O?ZxN|It5LjQg?!_ZSO z?9zzQ!bYqiq~S1xLSkRHQyL~U3d1E0iH*_0iA(H=i*D(60!G#_6_Q?Co_A_=ZA!W4 zB3}!Q8K2cmV>i=P8O<~3Z$c!BUs%7_CP53Svy^CXbruE4Ga(L4Qg?DhIx2#`&~| zI>_j$?WLVsns*QDm7Ppgmw8U|5jv#zSL%ARuKmZjuR57AT$>No=I3eiVcOiQ&3)QD lQ=4b~AM+? diff --git a/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/UxPerfUiAutomation.java b/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/UxPerfUiAutomation.java index 8d14461d..9c763a0e 100644 --- a/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/UxPerfUiAutomation.java +++ b/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/UxPerfUiAutomation.java @@ -51,7 +51,7 @@ public class UxPerfUiAutomation extends BaseUiAutomation { public enum GestureType { UIDEVICE_SWIPE, UIOBJECT_SWIPE, PINCH }; public enum PinchType { IN, OUT, NULL }; - public class Timer { + public static class Timer { private long startTime = 0; private long endTime = 0; private long duration = 0; @@ -301,7 +301,7 @@ public class UxPerfUiAutomation extends BaseUiAutomation { return results; } - public class GestureTestParams { + public static class GestureTestParams { public GestureType gestureType; public Direction gestureDirection; public PinchType pinchType; diff --git a/wlauto/workloads/gmail/com.arm.wlauto.uiauto.gmail.jar b/wlauto/workloads/gmail/com.arm.wlauto.uiauto.gmail.jar index 4360e729d823f53f70bc3425feaa5ee50560c3d6..b3a7ab65b1f593072a7f0b8bc13fe5f24854feae 100644 GIT binary patch delta 13554 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 delta 12370 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 diff --git a/wlauto/workloads/googlephotos/com.arm.wlauto.uiauto.googlephotos.jar b/wlauto/workloads/googlephotos/com.arm.wlauto.uiauto.googlephotos.jar index 1cb4bd2c2e7c2c14eaa56bbea0219506e842f8e9..763ea980a3e1e3571d62268d42e7650e0ac93caa 100644 GIT binary patch delta 15773 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

!MN^*vlY15^1U|>ny3FmXX)RPJ85} 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 delta 15123 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 diff --git a/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar b/wlauto/workloads/googleslides/com.arm.wlauto.uiauto.googleslides.jar index 02d6bcac797f31d12fcf63799b224a78226c58a8..e7134d8f174eb9d6d51c9b3b9eecaa9a09d6b920 100644 GIT binary patch delta 15897 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 delta 15943 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 diff --git a/wlauto/workloads/multiapp/com.arm.wlauto.uiauto.multiapp.jar b/wlauto/workloads/multiapp/com.arm.wlauto.uiauto.multiapp.jar index 3c55542af644db2fa8c7ed3fb78d1f17f09a8f82..18e14eaf25880d2be3a0687386a1fbd7ea790bf9 100644 GIT binary patch delta 20198 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 l*@Iu4lledI8NBU?g=2r4uKX5JFA;5Dbwq&l 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 S005k$lSof52C7Q{0001O;B6QH diff --git a/wlauto/workloads/reader/com.arm.wlauto.uiauto.reader.jar b/wlauto/workloads/reader/com.arm.wlauto.uiauto.reader.jar index f85eb1110ec1b1aeaf9af685dfd7d317059a8548..846df69d6fd6401bc3536c298316820841e94825 100644 GIT binary patch delta 14762 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 Ud%^#Iaw=6^hyy8<7v|skAEx%)Z2$lO diff --git a/wlauto/workloads/skype/com.arm.wlauto.uiauto.skype.jar b/wlauto/workloads/skype/com.arm.wlauto.uiauto.skype.jar index 1503182ebffd7dcccbf2313d70ac4e9339b44223..a7bfb49a59b68cd94d2e45e428d7f03724bdfd06 100644 GIT binary patch delta 13148 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 ChtW&` delta 12098 zcmV-IFTK#QXoz49P)h>@3IG5I008=Rx{(bi1Nn8jkvNHe`E|NTB#3sQTrL0rpke?3 z3jhEBV{Bn_b7gZbWMz20eG6dJ#kKdD|6^a-B%4i0!tz=Y9zhHV5H*s3gd{*nct}Ek zgc_G*ft9ek>~2iZ_KFrk+p5$jKHA#)#79NN`lzk8Vr%Q8UTa%hYt>tAz4dXmdaZu9 zy?(zlGrQS;gkbgi?)N4B_RO3)Gjrz5%$YO){TuqiL!RpSC(z~@KbhYBt?x!wHg){% z_1hO;v*+gGliv3%y8ZgiL~$Y->a6jT{&_Y;^r%q$HX!aK+5~#Ni|BaJcfCX}gRaRV z$^l(Ij_9LSqFalJW-K780A>Sm;4a_+;3vS(fMcnCathHpU>|TV@G@X7 zCMpMimI7hmT;N*ZKHzcSMc}VMegn}|U_P)M*bEE+dw~PMUBGj|pMj5ok|jhZ0xN(X z;A~(&a3k;t@Jrw?fM~?Hf!RPkunI^4dw^?!4*_Qr<{8)loCn+hJO%t2Fq>gRzz>uH z)xZj1H82F63tR+T4qOM^0(=*^A9xga0(cRB_#^N>@DX4xg+4$luol=1B!Dx43xV$d zKLCCUxR=3xKs|5@&ybin#d%cp}M}T=MkryZdDuB5_1F#fW18f5NfHQz3a2Bu^xCFQkxDEI| z@EGtb;8oz?fsX*!TIdVR02Tskfo;G};2hv8;2Xe=z#YK7z(c?xCOX>A9xJ-74Qe(HQ=wn-vOh8$O9At0iYbH1Wp1@1^R$N z;H$tlfxCbs!0&*!0a^!J0aJnbKr65ThyY38Ea1z)SAk1`Zv%G%_W}l|3atk=02_fWpqteB{srJPpa(b|Ko~#>52zRD1H!--U@H&-`hh5^IAJG{0Fpoo z7yu3cHv``V?g9=0cLVo-0QUliwXKAXJAyiWeXX*eq50)HeJl9WKrPMZv_q$l1DxCk zWGZy}0i-K+`cYlil_l>6p3wXp&7Yyu&+2wK{X$lnb(^EpuV{Xr=5x9rD_xkCF4F1Q zpa_@fjan5;ary(KXX!LA2-at+)~7;`({-}ane)Drm7cS;o-;{*wUxF{Rn}Olw9Iij zeMrkxXSH9QrRQ92HcH?yE$x42{uAAmRk(CZ+$y8{aYqD%xqw7vn!_Mfl zK+7|KVHSUhmgjZVsQFjxG`D$;PFJJuwK`pk^mRJT_W6cRH-Z0coo+jMnBRf)H+6aw z(%;hQKBTYL>3EiZ{0mua4rTFoBYlHTUx4(DI(>PT%#B&;JF?P;v(gV|rFraW-Hv4G z^HkPYp3h42T%^;#&*Hy^^mlant*rJxI$7=4CT-hWbee5@t4_0R52j@>QMc(d+xAYK z_JMzgPO}Yf*XbLx(ypv@aKUgoy&jfo9XP!#E4@4`-IA4mUZK-AJjjV7yKALLEq{ku%c7vQ&4)9IQHX?mWf`$7Gn4#BjLoRSJ!Eol*T z==?d77Sq=S`-J7P{X+bnqv^$(UPA0AT4Z?c6to0?yYEY+=)Y)sp{8Gvw2A&*=a)$NdfF_hvdby>-9vm1HPHE>COm|Xln;JF z)1PTNT`2mHV81+_0+P;<)QQxqJnuN2o+jmoy+YAkN!?T+X&ZG)T17iFjcOW`bT#df zw4E;0{2K)O@&!^aH|jsF=`)h9(X@>|meeA*l+U4mQlauwB|Vi+m2?%Y)wEsGPTDEy zN;+TDy_)XR^a7#!xmVK%Kt0$|tWOT~Q#6-;E@>V;DQP}EtMji*>ZKV%UfrG-^ED`VomZhHUe9UTB+L0sS}2(M=%A$Q={CXZUDap$l%yxqFC>M|LeU&e zy_)8KN@~+MN!>J2QV&hibh4&Xbo-r>)=^y2YN=;F?0BK1bLlHu?yHiXL|19K1Dal~ z={1^OCuuExL(^~S`Zr42Oot^sk?zy&DcVTile9_Gwe+Ce=gLk68LI46pzX!``k5vmXJ@V{5^u>yH+VT7pKdMl1`E9YaTTG8!;`T62UQB2fac}JLx|qok@n| zPoo~8`2Qj}hEx64K+_*ddYq=pU!8z;{6}Isor(qDdz5@FH2<-r6;keG_~&VVl1`*r z!J)-EdWe`#B9~AxVM@|&x?J#mX(IVG4GO+HRnq&!bTV}bjvHswEWvjv)!!*Nxvmg= zr&4xYf+)UFFkL~Fg5!;e^smIRhN8%^hzivOf{sEL9(&dF? z)V~$wPwVocG0GoB`3I*D>pQyr7f?PSr1HhOJU^@a4U{j@m6 z?srLCKF>OhWE{rn^MS9QrtgHB9@O+6O}~Gds(U1>E~lRaev?)9r>wGn_ke$7<-O>? zv}ag$W{+xno~DhOo~G$8Eqif~>YsTx^{Dm)KF{n__o$unmhZ(*E5|7nLD^=8uqo<0 z0V$90`&$hXifavX%Z9n;Fn1nv^RN;t{u_7?cun15b8r?ENovXabPj7FDrbwzN>N$G zF|pF^i=E03_^0^`{YDvo)@(qWNAcIOQ^kYv>f6yn9?FEY+XbCU?}?Dz8N36_-V43+3wsp`e*VU5g!mQWw?dHJu!j@tiy? z+X{#(5ewPbtOcdGRntuCgp(*s{r01J2^`!(_#p=v2=cqP~SZTkKm6-V5pSdotyV#w>rJQ~8FdZ!z*a|^Z8TpE-PY6eYk)2=@WF{Y?I)6wZ@*Se#1PMV%2kTVskrgSuUtzy?S;P^_>Da zuLzjmhox-zDzCvkfoGOkQ>e_YfjxhWeHINK!L8402OM6R4kI1)J&qEu9k0HDrrFV8 z0ZvqpnQ!KQlE1LxAG{8yu+7Ar*_NKG=CN&8?ZS-YN#CUQ^P2VPwOtR5J)m_=MYMXk z9Ek@~{Jd}ddiAU@>MO;1@H&+4!*e1ag<3v?siE_x&RgP<bN+Tx7`h&R9?Kj?e8l zvf8QF?bPXZBsE_&P2#0r?q|gXR-iE`%Jlh`>4=S zM0L4{^S?0B?p~^6&B$8uq*1bppSh~0A+ZrL;Gq})G$ zB62H#UMrKQq>!>a%b;k(Wa@s=?KaN4`iWipu0C`{91cU+WyWWbzFSHgcA0s!^b59K z#HFTPW{p|;7MEJK^N@Hv<(NR~X_FfJTmK)%p4M;dv8MGKdu+$D+t_10mfc2J@7V+`eg&)%TEk0_)KMzp$r z11Crx^2!H(d4qah|J)k(&3qbJf+LJ_8DW$O<#7ehrAwu!H~ z&i2cSLMWrd*GK5kDRppa9j-=MsXT?$d5M%@TU262d5wVi2=Te8&c8y`qIPP`gGz3I0tlT{!?q#lfm|Hf?^$c_8 z4RgK2+$F=@oMGY!H==qOw_3E)$h4 zP8~l#vO#^v=3nYRAss^(;5^@t2)9ed(7B{IrHX?X+O0X$6$cTrM{~|o96JJkODWEf z;y5C_hS!wiF3L7jakg8>*&Z2Zvn4=n9y=&%xU%BzBOAt!yPw>Uj=Kx8;_iYGarbi@ z(s8#7R{gz>yO&8Bhm5>&uiBtuk8Xb<*3rG-br|LTc z=O_;BJx<guEi7eeT{#XY*hAYM+-h3Bl6F(41dxHep`k=c?AE|jVdP2 z^ojC38oooWM|ptl-V_=$)|)M6F3FPSRuoI%VX_akIKQ_UP>_}20tpA4Tf(T&Q-`yrR$ zHsu~Rp}&*P-l(3vlzG&N0&nAySX-08cU&%&I4ok5Hdv>?anW4%1ktCs%yiIS>#I~S+rcVVZBH!`U|=H?8yGczZ{ z|F2xMQSpARS#d;tXFUPyznRo`cKlw18~!{j*OFVl+hFSN;`kPFp`<=?oHJ{~r9#a5 zqL_8ApuI?4B+i+2h2Zaq^5vW$MnGd6$@nclqKdgPqENGcae&ySFG!ohZq7102>y-q zy0WNSSrqp&4_ox0wCLAKThUSLn1T8?L&tzy*%fjIRQCW4?!0#l@kps6X!WzAm@0JoO2U%y+YCg`Th*=;9W95PJVA{!Z+`c z)YfzFCeJyuPD+VcmtfK_2d)LK2W|px6Lc5W!C}FFpWhRA3y=24-QDWF2mguw>HZ?W zc{+c0WE4}))CuHoC@*M*-*|&o8o~@1WdhV%=@NFpusH45>HC?AoU4=MbmvidXl(hk zT*X`I=Ou&P>Yb8k@JznNBYr9`YbC!Kuu$7FOn+g(xQ{1YD z<9QSN!Nc;rA8wHQp;7J!Gvi~*4D1C@#=GS3UU*3Eh409{V933IGb;Ea`V)CPwVn?@ zNd%upaxd$HFRNzd1_95W6~|cg^Pf%XofZGGqi1*u`A;2lhTX$6 z957C2>dee^aHovz%6A^C-svM&M#UR^-YH$CZu&fP?ip*&(Yu|wUvQhXo77n!pf`zs zpB)+Uq~te3JlN+rPpC5!u&N^Mf_@0G!C#DfvU1yLWrBez*N z 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 z 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