diff --git a/wlauto/workloads/skypevideo/__init__.py b/wlauto/workloads/skypevideo/__init__.py deleted file mode 100644 index 58959e1f..00000000 --- a/wlauto/workloads/skypevideo/__init__.py +++ /dev/null @@ -1,130 +0,0 @@ -# Copyright 2014-2015 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. -# - -# pylint: disable=E1101,W0201,E0203 - -import time - -from wlauto import UiAutomatorWorkload, Parameter -from wlauto.utils.types import boolean - - -class SkypeVideo(UiAutomatorWorkload): - - name = 'skypevideo' - description = """ - Initiates Skype video call to a specified contact for a pre-determined duration. - (Note: requires Skype to be set up appropriately). - - This workload is intended for monitoring the behaviour of a device while a Skype - video call is in progress (a common use case). It does not produce any score or - metric and the intention is that some addition instrumentation is enabled while - running this workload. - - This workload, obviously, requires a network connection (ideally, wifi). - - This workload accepts the following parameters: - - - **Skype Setup** - - - You should install Skype client from Google Play Store on the device - (this was tested with client version 4.5.0.39600; other recent versions - should also work). - - You must have an account set up and logged into Skype on the device. - - The contact to be called must be added (and has accepted) to the - account. It's possible to have multiple contacts in the list, however - the contact to be called *must* be visible on initial navigation to the - list. - - The contact must be able to received the call. This means that there - must be a Skype client running (somewhere) with the contact logged in - and that client must have been configured to auto-accept calls from the - account on the device (how to set this varies between different versions - of Skype and between platforms -- please search online for specific - instructions). - https://support.skype.com/en/faq/FA3751/can-i-automatically-answer-all-my-calls-with-video-in-skype-for-windows-desktop - - """ - - package = 'com.skype.raider' - - parameters = [ - Parameter('duration', kind=int, default=300, - description='Duration of the video call in seconds.'), - Parameter('contact', mandatory=True, - description=""" - The name of the Skype contact to call. The contact must be already - added (see below). *If use_gui is set*, then this must be the skype - ID of the contact, *otherwise*, this must be the name of the - contact as it appears in Skype client's contacts list. In the latter case - it *must not* contain underscore characters (``_``); it may, however, contain - spaces. There is no default, you **must specify the name of the contact**. - - .. note:: You may alternatively specify the contact name as - ``skype_contact`` setting in your ``config.py``. If this is - specified, the ``contact`` parameter is optional, though - it may still be specified (in which case it will override - ``skype_contact`` setting). - """), - Parameter('use_gui', kind=boolean, default=False, - description=""" - Specifies whether the call should be placed directly through a - Skype URI, or by navigating the GUI. The URI is the recommended way - to place Skype calls on a device, but that does not seem to work - correctly on some devices (the URI seems to just start Skype, but not - place the call), so an alternative exists that will start the Skype app - and will then navigate the UI to place the call (incidentally, this method - does not seem to work on all devices either, as sometimes Skype starts - backgrounded...). Please note that the meaning of ``contact`` prameter - is different depending on whether this is set. Defaults to ``False``. - - .. note:: You may alternatively specify this as ``skype_use_gui`` setting - in your ``config.py``. - """), - - ] - - def __init__(self, device, **kwargs): - super(SkypeVideo, self).__init__(device, **kwargs) - if self.use_gui: - self.uiauto_params['name'] = self.contact.replace(' ', '_') - self.uiauto_params['duration'] = self.duration - self.run_timeout = self.duration + 30 - - def setup(self, context): - if self.use_gui: - super(SkypeVideo, self).setup(context) - self.device.execute('am force-stop {}'.format(self.package)) - self.device.execute('am start -W -a android.intent.action.VIEW -d skype:') - else: - self.device.execute('am force-stop {}'.format(self.package)) - - def run(self, context): - if self.use_gui: - super(SkypeVideo, self).run(context) - else: - command = "am start -W -a android.intent.action.VIEW -d \"skype:{}?call&video=true\"" - self.logger.debug(self.device.execute(command.format(self.contact))) - self.logger.debug('Call started; waiting for {} seconds...'.format(self.duration)) - time.sleep(self.duration) - self.device.execute('am force-stop com.skype.raider') - - def update_result(self, context): - pass - - def teardown(self, context): - if self.use_gui: - super(SkypeVideo, self).teardown(context) - self.device.execute('am force-stop {}'.format(self.package)) diff --git a/wlauto/workloads/skypevideo/com.arm.wlauto.uiauto.skypevideo.jar b/wlauto/workloads/skypevideo/com.arm.wlauto.uiauto.skypevideo.jar deleted file mode 100644 index dff2302a..00000000 Binary files a/wlauto/workloads/skypevideo/com.arm.wlauto.uiauto.skypevideo.jar and /dev/null differ diff --git a/wlauto/workloads/skypevideo/uiauto/build.sh b/wlauto/workloads/skypevideo/uiauto/build.sh deleted file mode 100755 index db6f8ff4..00000000 --- a/wlauto/workloads/skypevideo/uiauto/build.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -# Copyright 2014-2015 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. -# - - - -class_dir=bin/classes/com/arm/wlauto/uiauto -base_class=`python -c "import os, wlauto; print os.path.join(os.path.dirname(wlauto.__file__), 'common', 'android', 'BaseUiAutomation.class')"` -mkdir -p $class_dir -cp $base_class $class_dir - -ant build - -if [[ -f bin/com.arm.wlauto.uiauto.skypevideo.jar ]]; then - cp bin/com.arm.wlauto.uiauto.skypevideo.jar .. -fi diff --git a/wlauto/workloads/skypevideo/uiauto/build.xml b/wlauto/workloads/skypevideo/uiauto/build.xml deleted file mode 100644 index c2fdeb90..00000000 --- a/wlauto/workloads/skypevideo/uiauto/build.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/wlauto/workloads/skypevideo/uiauto/project.properties b/wlauto/workloads/skypevideo/uiauto/project.properties deleted file mode 100644 index ce39f2d0..00000000 --- a/wlauto/workloads/skypevideo/uiauto/project.properties +++ /dev/null @@ -1,14 +0,0 @@ -# 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/skypevideo/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java b/wlauto/workloads/skypevideo/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java deleted file mode 100644 index 0743372e..00000000 --- a/wlauto/workloads/skypevideo/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java +++ /dev/null @@ -1,72 +0,0 @@ -/* Copyright 2014-2015 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.skypevideo; - -import android.app.Activity; -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.BaseUiAutomation; - -public class UiAutomation extends BaseUiAutomation { - - public static String TAG = "skypevideo"; - public static String videoCallButtonResourceId = "com.skype.raider:id/chat_menu_item_call_video"; - public static String noContactMessage = "Could not find contact \"%s\" in the contacts list."; - - public void runUiAutomation() throws Exception { - Bundle parameters = getParams(); - String contactName = parameters.getString("name").replace('_', ' '); - int duration = Integer.parseInt(parameters.getString("duration")); - - selectContact(contactName); - initiateCall(duration); - } - - public void selectContact(String name) throws Exception { - UiSelector selector = new UiSelector(); - UiObject peopleTab = new UiObject(selector.text("People")); - peopleTab.click(); - sleep(1); // tab transition - - // Note: this assumes that the contact is in view and does not attempt to scroll to find it. - // The expectation is that this automation will be used with a dedicated account that was set - // up for the purpose and so would only have the intended target plus one or two other contacts - // at most in the list. If that is not the case, then this needs to be re-written to scroll to - // find the contact if necessary. - UiObject contactCard = new UiObject(selector.text(name)); - if (!contactCard.exists()) { - throw new UiObjectNotFoundException(String.format(noContactMessage, name)); - } - contactCard.clickAndWaitForNewWindow(); - } - - public void initiateCall(int duration) throws Exception { - UiSelector selector = new UiSelector(); - UiObject videoCallButton = new UiObject(selector.resourceId(videoCallButtonResourceId)); - videoCallButton.click(); - sleep(duration); - } -}