From 2532f36a6219d594a0af6876fef9832f26e992d9 Mon Sep 17 00:00:00 2001 From: John Richardson Date: Tue, 17 May 2016 13:37:04 +0100 Subject: [PATCH] Add Multiapp workload A new workload for testing context switching between applications. Uses googlephotos as the producer workload and gmail and skype as the consumer workloads. --- .../common/android/BaseUiAutomation$1.class | Bin 868 -> 868 bytes wlauto/common/android/BaseUiAutomation.class | Bin 9108 -> 9405 bytes .../arm/wlauto/uiauto/BaseUiAutomation.java | 10 + .../gmail/com.arm.wlauto.uiauto.gmail.jar | Bin 11064 -> 11938 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 39 +++- .../com.arm.wlauto.uiauto.googlephotos.jar | Bin 14178 -> 14723 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 30 ++- wlauto/workloads/multiapp/__init__.py | 188 ++++++++++++++++++ .../com.arm.wlauto.uiauto.multiapp.jar | Bin 0 -> 19339 bytes wlauto/workloads/multiapp/uiauto/build.sh | 49 +++++ wlauto/workloads/multiapp/uiauto/build.xml | 92 +++++++++ .../multiapp/uiauto/project.properties | 14 ++ .../com/arm/wlauto/uiauto/UiAutomation.java | 167 ++++++++++++++++ .../reader/com.arm.wlauto.uiauto.reader.jar | Bin 13036 -> 13126 bytes wlauto/workloads/skype/__init__.py | 3 - .../skype/com.arm.wlauto.uiauto.skype.jar | Bin 10593 -> 11529 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 23 ++- 17 files changed, 590 insertions(+), 25 deletions(-) create mode 100644 wlauto/workloads/multiapp/__init__.py create mode 100644 wlauto/workloads/multiapp/com.arm.wlauto.uiauto.multiapp.jar create mode 100755 wlauto/workloads/multiapp/uiauto/build.sh create mode 100644 wlauto/workloads/multiapp/uiauto/build.xml create mode 100644 wlauto/workloads/multiapp/uiauto/project.properties create mode 100644 wlauto/workloads/multiapp/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java diff --git a/wlauto/common/android/BaseUiAutomation$1.class b/wlauto/common/android/BaseUiAutomation$1.class index 2ba1c6334bf362f4554d5a80c37f15f2f0fe9370..f2b00190bcc0ec5deb765a10dfdb2504f54ae50d 100644 GIT binary patch delta 13 UcmaFD_JnPNJ~JchWCLas03hQ7w*UYD delta 13 UcmaFD_JnPNJ~JcZWCLas03go;vj6}9 diff --git a/wlauto/common/android/BaseUiAutomation.class b/wlauto/common/android/BaseUiAutomation.class index 41f5ca88b8f3bcac28eee83f9f60f05d04240c93..2f4448e3bf13629251aff3bb3ab14caa086133c3 100644 GIT binary patch delta 4017 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 delta 13994 zcmZ8|b8zRq7jA8CZQC}swr$(?r`T<`wr$(~cH6DpZmli1wsrTtcjouU%_Ng#awaEv zo-@hJNluvit`o9~JR}qX7#JKFSaE1WA~G#pQD}pVQ{_NZqL2*!q)%r~v>JxInz~0W z{nrzwJEYyISkGjn7|g_ca+Loo$?e)Y&!(#x9X zmgS+PWU^f-QA}p$v@NW~EgNge^JRNxCbd=|R(RtMONPQfAcEvfFqiBuuY(&6Owx_(y zA*K770zA!Nzt`L>E$91Po)fJ{!u+rqInfQ8|3q=1@YACGP}`BEnbT8A&$i*VaVMK& zD5%Fq$71Ub{hLNy6qYKHz5b&Q{EfK6SRw^R2~rp`0Q*VM1VrR_hs?-%b|8l#q`{{^BO$`1;06e10Bj%p2C5)R4_pt@8_bjO4)PAuj^oZH z$Uk^aX&(#$j6?-I27DMYR+NVoEC+G}Nf0@Ok<1RF4O|1;wk#21MP|3g}?>P2hRuAg;DxdRH)$# z@E39#st;)cMG)+tdRUd7(7!e�>~PAj%;xA=Z_lpy{=~D8kl3oiSg92!Rejo1kKl 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 C0EeIe diff --git a/wlauto/workloads/googlephotos/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java b/wlauto/workloads/googlephotos/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java index 39a3201c..73abb1ce 100644 --- a/wlauto/workloads/googlephotos/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java +++ b/wlauto/workloads/googlephotos/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java @@ -44,6 +44,7 @@ public class UiAutomation extends UxPerfUiAutomation { parameters = getParams(); setScreenOrientation(ScreenOrientation.NATURAL); + pauseForSplashScreen(); confirmAccess(); dismissWelcomeView(); gesturesTest(); @@ -55,14 +56,16 @@ public class UiAutomation extends UxPerfUiAutomation { writeResultsToFile(timingResults, parameters.getString("output_file")); } - private void dismissWelcomeView() throws Exception { + public void pauseForSplashScreen() { + sleep(5); // Pause while splash screen loads + } + + public void dismissWelcomeView() throws Exception { // Click through the first two pages and make sure that we don't sign // in to our google account. This ensures the same set of photographs // are placed in the camera directory for each run. - sleep(5); // Pause while splash screen loads - UiObject getStartedButton = new UiObject(new UiSelector().textContains("Get started") .className("android.widget.Button")); @@ -279,7 +282,7 @@ public class UiAutomation extends UxPerfUiAutomation { startDumpsysSurfaceFlinger(parameters, viewName); Timer result = new Timer(); - result = slideBarTest(straightenSlider , pos, steps); + result = slideBarTest(straightenSlider, pos, steps); stopDumpsysSurfaceFlinger(parameters, viewName, surfFlingerlogName); stopDumpsysGfxInfo(parameters, gfxInfologName); @@ -385,8 +388,8 @@ public class UiAutomation extends UxPerfUiAutomation { return result; } - // Helper to click on an individual photographs based on index in wa-working gallery. - private void selectPhoto(final int index) throws Exception { + // Helper to click on an individual photograph based on index in wa-working gallery. + public void selectPhoto(final int index) throws Exception { UiObject workdir = getUiObjectByText("wa-working", "android.widget.TextView"); workdir.clickAndWaitForNewWindow(); @@ -398,7 +401,7 @@ public class UiAutomation extends UxPerfUiAutomation { } // Helper that accepts, saves and navigates back to application home screen after an edit operation - private void saveAndReturn() throws Exception { + public void saveAndReturn() throws Exception { UiObject accept = getUiObjectByDescription("Accept", "android.widget.ImageView"); accept.click(); @@ -413,4 +416,17 @@ public class UiAutomation extends UxPerfUiAutomation { navigateUpButton.waitForExists(viewTimeout); navigateUpButton.click(); } + + // Helper to tag an individual photograph based on index in wa-working gallery. + public void tagPhoto(final int index) throws Exception { + UiObject workdir = getUiObjectByText("wa-working", "android.widget.TextView"); + workdir.clickAndWaitForNewWindow(); + + UiObject photo = + new UiObject(new UiSelector().resourceId("com.google.android.apps.photos:id/recycler_view") + .childSelector(new UiSelector() + .index(index))); + photo.waitForExists(viewTimeout); + uiDevicePerformLongClick(photo, 100); + } } diff --git a/wlauto/workloads/multiapp/__init__.py b/wlauto/workloads/multiapp/__init__.py new file mode 100644 index 00000000..fae32ba2 --- /dev/null +++ b/wlauto/workloads/multiapp/__init__.py @@ -0,0 +1,188 @@ +import os +import re + +from wlauto import AndroidUiAutoBenchmark, Parameter, File + + +class Multiapp(AndroidUiAutoBenchmark): + + name = 'multiapp' + + googlephotos_package = 'com.google.android.apps.photos' + gmail_package = 'com.google.android.gm' + skype_package = 'com.skype.raider' + + # Set default package and activity + package = googlephotos_package + activity = 'com.google.android.apps.photos.home.HomeActivity' + + view = [googlephotos_package + '/com.google.android.apps.photos.home.HomeActivity', + googlephotos_package + '/com.google.android.apps.photos.localmedia.ui.LocalPhotosActivity', + googlephotos_package + '/com.google.android.apps.photos.onboarding.AccountPickerActivity', + googlephotos_package + '/com.google.android.apps.photos.onboarding.IntroActivity', + googlephotos_package + '/com.google.android.apps.photos/.share.ShareActivity', + + gmail_package + '/com.google.android.gm.ComposeActivityGmail', + + skype_package + '/com.skype.android.app.main.SplashActivity', + skype_package + '/com.skype.android.app.signin.SignInActivity', + skype_package + '/com.skype.android.app.signin.UnifiedLandingPageActivity', + skype_package + '/com.skype.raider/com.skype.android.app.contacts.PickerActivity', + skype_package + '/com.skype.android.app.chat.ChatActivity'] + + instrumentation_log = '{}_instrumentation.log'.format(name) + + description = """ + Workload to test how responsive a device is when context switching between + appplication tasks. It combines workflows from googlephotos, gmail and + skype. + + Credentials for the user account used to log into the Skype app have to be provided + in the agenda, as well as the display name of the contact to call. + + For reliable testing, this workload requires a good and stable internet connection, + preferably on Wi-Fi. + + NOTE: This workload requires two jpeg files to be placed in the + dependencies directory to run. + + WARNING: This workload timings are dependent on the time it takes to sync the Gmail. + + Although this workload attempts to be network independent it requires a + network connection (ideally, wifi) to run. This is because the welcome + screen UI is dependent on an existing connection. + + Test description: + 1. Two images are copied to the device + 2. Googlephotos is started in offline access mode + 3. The first image is selected and shared with Gmail + 4. Enter recipient details in the To: field + 5. Enter text in the Subject edit box + 6. Enter text in the Compose edit box + 7. Attach the shared image from Googlephotos to the email + 8. Click the Send mail button + 9. Return to Googlephotos and login to Skype via share action + 10. Return to Googlephotos and share the second image with Skype + 11. Select a recipient from the Contacts list + 12. The second image is posted to recipient + """ + + parameters = [ + Parameter('recipient', default='armuxperf@gmail.com', mandatory=False, + description="""" + The email address of the recipient. Setting a void address + will stop any mesage failures clogging up your device inbox + """), + Parameter('login_name', kind=str, mandatory=True, + description=''' + Skype account to use when logging into the device + '''), + Parameter('login_pass', kind=str, mandatory=True, + description='Skype password associated with the account to log into the device'), + Parameter('contact_name', kind=str, mandatory=True, + description='This is the contact display name as it appears in the people list in Skype'), + 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. + '''), + ] + + file_prefix = 'wa_test_' + + def __init__(self, device, **kwargs): + super(Multiapp, self).__init__(device, **kwargs) + self.output_file = os.path.join(self.device.working_directory, self.instrumentation_log) + + def validate(self): + super(Multiapp, self).validate() + + self.uiauto_params['recipient'] = self.recipient + self.uiauto_params['dumpsys_enabled'] = self.dumpsys_enabled + self.uiauto_params['output_dir'] = self.device.working_directory + self.uiauto_params['my_id'] = self.login_name + self.uiauto_params['my_pwd'] = self.login_pass + self.uiauto_params['name'] = self.contact_name.replace(' ', '_') + self.uiauto_params['output_file'] = self.output_file + + def initialize(self, context): + + super(Multiapp, self).initialize(context) + + for entry in os.listdir(self.dependencies_directory): + wa_file = ''.join([self.file_prefix, entry]) + if entry.endswith(".jpg"): + self.device.push_file(os.path.join(self.dependencies_directory, entry), + os.path.join(self.device.working_directory, wa_file), + timeout=300) + + # 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): + super(Multiapp, self).setup(context) + + self.launch_main = False + + # Use superclass for setup of gmail dependency + self.version = 'Gmail' + self.package = self.gmail_package + self.logger.info('Installing dependency Gmail') + super(Multiapp, self).init_resources(context) + super(Multiapp, self).setup(context) + + # Use superclass for setup of skype dependency + self.version = 'Skype' + self.package = self.skype_package + self.logger.info('Installing dependency Skype') + super(Multiapp, self).init_resources(context) + super(Multiapp, self).setup(context) + + # Restore default settings + self.package = self.googlephotos_package + self.launch_main = True + super(Multiapp, self).init_resources(context) + + def update_result(self, context): + super(Multiapp, self).update_result(context) + + self.device.pull_file(self.output_file, context.output_directory) + result_file = os.path.join(context.output_directory, self.instrumentation_log) + + with open(result_file, 'r') as wfh: + 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('key') + "_start"), match.group('value1')) + context.result.add_metric((match.group('key') + "_finish"), match.group('value2')) + context.result.add_metric((match.group('key') + "_duration"), match.group('value3')) + + def teardown(self, context): + super(Multiapp, self).teardown(context) + + # Use superclass for teardown of gmail dependency + self.package = self.gmail_package + super(Multiapp, self).teardown(context) + + # Use superclass for teardown of skype dependency + self.package = self.skype_package + super(Multiapp, self).teardown(context) + + # Restore default package + self.package = self.googlephotos_package + + for file in self.device.listdir(self.device.working_directory): + if file.endswith(".log"): + self.device.pull_file(os.path.join(self.device.working_directory, file), context.output_directory) + self.device.delete_file(os.path.join(self.device.working_directory, file)) + + def finalize(self, context): + super(Multiapp, self).finalize(context) + + for entry in self.device.listdir(self.device.working_directory): + if entry.startswith(self.file_prefix) and entry.endswith(".jpg"): + self.device.delete_file(os.path.join(self.device.working_directory, entry)) + + # Force a re-index of the mediaserver cache to removed cached files + self.device.execute('am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard') diff --git a/wlauto/workloads/multiapp/com.arm.wlauto.uiauto.multiapp.jar b/wlauto/workloads/multiapp/com.arm.wlauto.uiauto.multiapp.jar new file mode 100644 index 0000000000000000000000000000000000000000..53f092163ad3164806a9c03e319df84e2a9aacde GIT binary patch literal 19339 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 qTm9#8wm/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 + +# Add multiapp workload dependencies +apps=("googlephotos" "gmail" "skype") + +for app in "${apps[@]}"; do + module_path="wlauto.workloads.${app}" + app_path="'uiauto/bin/classes/com/arm/wlauto/uiauto/${app}'" + app_class_dir=`python -c "import os, ${module_path}; print os.path.join(os.path.dirname(${module_path}.__file__), ${app_path})"` + cp -r $app_class_dir $class_dir +done + +# 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 (overwrite previous) +package=com.arm.wlauto.uiauto.multiapp.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/multiapp/uiauto/build.xml b/wlauto/workloads/multiapp/uiauto/build.xml new file mode 100644 index 00000000..5ec5b6e5 --- /dev/null +++ b/wlauto/workloads/multiapp/uiauto/build.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wlauto/workloads/multiapp/uiauto/project.properties b/wlauto/workloads/multiapp/uiauto/project.properties new file mode 100644 index 00000000..ce39f2d0 --- /dev/null +++ b/wlauto/workloads/multiapp/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/multiapp/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java b/wlauto/workloads/multiapp/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java new file mode 100644 index 00000000..6be0b885 --- /dev/null +++ b/wlauto/workloads/multiapp/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java @@ -0,0 +1,167 @@ +package com.arm.wlauto.uiauto.multiapp; + +import android.os.Bundle; + +// Import the uiautomator libraries +import com.android.uiautomator.core.UiObject; +import com.android.uiautomator.core.UiScrollable; +import com.android.uiautomator.core.UiSelector; + +import com.arm.wlauto.uiauto.UxPerfUiAutomation; + +import java.io.File; +import java.util.concurrent.TimeUnit; +import java.util.LinkedHashMap; + +public class UiAutomation extends UxPerfUiAutomation { + + public static String TAG = "uxperf_multiapp"; + + public Bundle parameters; + private String outputDir; + private LinkedHashMap timingResults = new LinkedHashMap(); + + public void runUiAutomation() throws Exception { + parameters = getParams(); + + com.arm.wlauto.uiauto.googlephotos.UiAutomation googlephotos = + new com.arm.wlauto.uiauto.googlephotos.UiAutomation(); + + confirmAccess(); + googlephotos.dismissWelcomeView(); + + // select the first photo + googlephotos.tagPhoto(0); + sendToGmail(); + + // select the second photo + googlephotos.tagPhoto(1); + logIntoSkype(); + + // Skype won't allow us to login and share on first visit so invoke + // once more from googlephotos + pressBack(); + pressBack(); + googlephotos.tagPhoto(1); + + sendToSkype(); + + writeResultsToFile(timingResults, parameters.getString("output_file")); + } + + private void sendToGmail() throws Exception { + + final String dumpsysTag = "sendToGmail"; + final String PACKAGE = "com.google.android.gm"; + String outputDir = parameters.getString("output_dir", "/sdcard/wa-working"); + + com.arm.wlauto.uiauto.gmail.UiAutomation gmail = + new com.arm.wlauto.uiauto.gmail.UiAutomation(); + + Timer result = new Timer(); + result.start(); + + initDumpsysGfxInfo(PACKAGE); + shareUsingApp("Gmail"); + gmail.clearFirstRunDialogues(); + + if (!gmail.hasComposeView()) { + waitForSync(); + } + + gmail.setToField(parameters); + gmail.setSubjectField(); + gmail.setComposeField(); + gmail.clickSendButton(); + exitDumpsysGfxInfo(PACKAGE, new File(outputDir, dumpsysTag + "_gfxInfo.log")); + + result.end(); + timingResults.put("send_to_gmail_contact", result); + } + + private void waitForSync() throws Exception { + + // After the initial share request on some devices Gmail returns back + // to the launching app, so we need to share the photo onces more and + // wait for Gmail to sync. + com.arm.wlauto.uiauto.googlephotos.UiAutomation googlephotos = + new com.arm.wlauto.uiauto.googlephotos.UiAutomation(); + + com.arm.wlauto.uiauto.gmail.UiAutomation gmail = + new com.arm.wlauto.uiauto.gmail.UiAutomation(); + + googlephotos.tagPhoto(1); + shareUsingApp("Gmail"); + gmail.clearFirstRunDialogues(); + } + + private void logIntoSkype() throws Exception { + + final String dumpsysTag = "logInToSkype"; + final String PACKAGE = "com.skype.raider"; + String outputDir = parameters.getString("output_dir", "/sdcard/wa-working"); + + com.arm.wlauto.uiauto.skype.UiAutomation skype = + new com.arm.wlauto.uiauto.skype.UiAutomation(); + + String loginName = parameters.getString("my_id"); + String loginPass = parameters.getString("my_pwd"); + + Timer result = new Timer(); + result.start(); + + initDumpsysGfxInfo(PACKAGE); + shareUsingApp("Skype"); + skype.handleLoginScreen(loginName, loginPass); + confirmAccess(); + exitDumpsysGfxInfo(PACKAGE, new File(outputDir, dumpsysTag + "_gfxInfo.log")); + + result.end(); + timingResults.put("log_into_skype", result); + } + + private void sendToSkype() throws Exception { + + final String dumpsysTag = "sendToSkype"; + final String PACKAGE = "com.skype.raider"; + String outputDir = parameters.getString("output_dir", "/sdcard/wa-working"); + + com.arm.wlauto.uiauto.skype.UiAutomation skype = + new com.arm.wlauto.uiauto.skype.UiAutomation(); + + String contactName = parameters.getString("name").replace("_", " "); + + Timer result = new Timer(); + result.start(); + + initDumpsysGfxInfo(PACKAGE); + shareUsingApp("Skype"); + skype.searchForContact(contactName); + exitDumpsysGfxInfo(PACKAGE, new File(outputDir, dumpsysTag + "_gfxInfo.log")); + + result.end(); + timingResults.put("send_to_skype_contact", result); + } + + private void shareUsingApp(String appName) throws Exception { + Timer result = new Timer(); + result.start(); + UiObject shareButton = getUiObjectByDescription("Share", "android.widget.TextView"); + shareButton.click(); + + UiScrollable applicationGrid = + new UiScrollable(new UiSelector().resourceId("com.google.android.apps.photos:id/application_grid")); + + UiObject openApp = new UiObject(new UiSelector().className("android.widget.TextView").text(appName)); + + while (!openApp.exists()) { + applicationGrid.scrollForward(); + } + + openApp.clickAndWaitForNewWindow(); + String testTag = String.format("share_using_%s", appName); + + result.end(); + timingResults.put(testTag, result); + } +} diff --git a/wlauto/workloads/reader/com.arm.wlauto.uiauto.reader.jar b/wlauto/workloads/reader/com.arm.wlauto.uiauto.reader.jar index 39fc99107cac490d0e3472e398913cb04d9ba3b1..1b611c9fd059fa40d3bda8afbcf681858579fc3f 100644 GIT binary patch delta 12890 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 R0C;SZ5i>6aATj^|001V$N#+0m diff --git a/wlauto/workloads/skype/__init__.py b/wlauto/workloads/skype/__init__.py index 53bb6671..dbfb08dc 100755 --- a/wlauto/workloads/skype/__init__.py +++ b/wlauto/workloads/skype/__init__.py @@ -62,8 +62,6 @@ class Skype(AndroidUiAutoBenchmark): '''), Parameter('login_pass', kind=str, mandatory=True, description='Password associated with the account to log into the device'), - Parameter('contact_skypeid', kind=str, mandatory=True, - description='This is the Skype ID of the contact to call from the device'), Parameter('contact_name', kind=str, mandatory=True, description='This is the contact display name as it appears in the people list'), Parameter('duration', kind=int, default=60, @@ -89,7 +87,6 @@ class Skype(AndroidUiAutoBenchmark): self.uiauto_params['output_dir'] = self.device.working_directory self.uiauto_params['my_id'] = self.login_name self.uiauto_params['my_pwd'] = self.login_pass - self.uiauto_params['skypeid'] = self.contact_skypeid self.uiauto_params['name'] = self.contact_name.replace(' ', '_') self.uiauto_params['duration'] = self.duration self.uiauto_params['action'] = self.action diff --git a/wlauto/workloads/skype/com.arm.wlauto.uiauto.skype.jar b/wlauto/workloads/skype/com.arm.wlauto.uiauto.skype.jar index 04a605e58fceeeb6cb1a85fa7f40b5a648335c81..b1363534892ab9228a88ee25356498edda990ccb 100644 GIT binary patch delta 11317 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 diff --git a/wlauto/workloads/skype/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java b/wlauto/workloads/skype/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java index cf01bc2c..67d184cc 100644 --- a/wlauto/workloads/skype/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java +++ b/wlauto/workloads/skype/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java @@ -54,7 +54,6 @@ public class UiAutomation extends UxPerfUiAutomation { Bundle parameters = getParams(); String loginName = parameters.getString("my_id"); String loginPass = parameters.getString("my_pwd"); - String contactSkypeId = parameters.getString("skypeid"); String contactName = parameters.getString("name").replace("_", " "); int callDuration = Integer.parseInt(parameters.getString("duration")); String callType = parameters.getString("action"); @@ -67,7 +66,7 @@ public class UiAutomation extends UxPerfUiAutomation { // Run tests handleLoginScreen(loginName, loginPass); confirmAccess(); - selectContact(contactName, contactSkypeId); + selectContact(contactName); if ("video".equalsIgnoreCase(callType)) { videoCallTest(callDuration); } else if ("voice".equalsIgnoreCase(callType)) { @@ -80,7 +79,7 @@ public class UiAutomation extends UxPerfUiAutomation { writeResultsToFile(results, resultsFile); } - private void handleLoginScreen(String username, String password) throws Exception { + public void handleLoginScreen(String username, String password) throws Exception { String useridResoureId = PACKAGE_ID + "sign_in_userid"; String nextButtonResourceId = PACKAGE_ID + "sign_in_next_btn"; UiObject useridField = new UiObject(new UiSelector().resourceId(useridResoureId)); @@ -96,7 +95,7 @@ public class UiAutomation extends UxPerfUiAutomation { signinButton.clickAndWaitForNewWindow(); } - private void selectContact(String name, String id) throws Exception { + public void selectContact(String name) throws Exception { Timer timer = new Timer(); timer.start(); UiObject peopleTab; @@ -123,6 +122,22 @@ public class UiAutomation extends UxPerfUiAutomation { results.put("select_contact", timer); } + public void searchForContact(String name) throws Exception { + + UiObject search = getUiObjectByText("Search", "android.widget.EditText"); + search.setText(name); + + UiObject peopleItem = + new UiObject(new UiSelector().resourceId("com.skype.raider:id/list") + .childSelector(new UiSelector() + .index(0) + .clickable(true))); + peopleItem.click(); + UiObject confirm = + getUiObjectByResourceId("com.skype.raider:id/fab", "android.widget.ImageView"); + confirm.click(); + } + private void voiceCallTest(int duration) throws Exception { String testTag = "voice_call"; Timer timer = new Timer();