1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2025-01-18 20:11:20 +00:00

Remove skypevideo workload

The original skypevideo workload has now been replaced with the newer
skype workload.
This commit is contained in:
John Richardson 2016-09-07 16:51:33 +01:00
parent cf8cb5bfab
commit 5ef7d2dd44
6 changed files with 0 additions and 336 deletions

View File

@ -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))

View File

@ -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

View File

@ -1,92 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="com.arm.wlauto.uiauto.skypevideo" default="help">
<!-- The local.properties file is created and updated by the 'android' tool.
It contains the path to the SDK. It should *NOT* be checked into
Version Control Systems. -->
<property file="local.properties" />
<!-- The ant.properties file can be created by you. It is only edited by the
'android' tool to add properties to it.
This is the place to change some Ant specific build properties.
Here are some properties you may want to change/update:
source.dir
The name of the source directory. Default is 'src'.
out.dir
The name of the output directory. Default is 'bin'.
For other overridable properties, look at the beginning of the rules
files in the SDK, at tools/ant/build.xml
Properties related to the SDK location or the project target should
be updated using the 'android' tool with the 'update' action.
This file is an integral part of the build system for your
application and should be checked into Version Control Systems.
-->
<property file="ant.properties" />
<!-- if sdk.dir was not set from one of the property file, then
get it from the ANDROID_HOME env var.
This must be done before we load project.properties since
the proguard config can use sdk.dir -->
<property environment="env" />
<condition property="sdk.dir" value="${env.ANDROID_HOME}">
<isset property="env.ANDROID_HOME" />
</condition>
<!-- The project.properties file is created and updated by the 'android'
tool, as well as ADT.
This contains project specific properties such as project target, and library
dependencies. Lower level build properties are stored in ant.properties
(or in .classpath for Eclipse projects).
This file is an integral part of the build system for your
application and should be checked into Version Control Systems. -->
<loadproperties srcFile="project.properties" />
<!-- quick check on sdk.dir -->
<fail
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
unless="sdk.dir"
/>
<!--
Import per project custom build rules if present at the root of the project.
This is the place to put custom intermediary targets such as:
-pre-build
-pre-compile
-post-compile (This is typically used for code obfuscation.
Compiled code location: ${out.classes.absolute.dir}
If this is not done in place, override ${out.dex.input.absolute.dir})
-post-package
-post-build
-pre-clean
-->
<import file="custom_rules.xml" optional="true" />
<!-- Import the actual build file.
To customize existing targets, there are two options:
- Customize only one target:
- copy/paste the target into this file, *before* the
<import> task.
- customize it to your needs.
- Customize the whole content of build.xml
- copy/paste the content of the rules files (minus the top node)
into this file, replacing the <import> task.
- customize to your needs.
***********************
****** IMPORTANT ******
***********************
In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
in order to avoid having your file be overridden by tools such as "android update project"
-->
<!-- version-tag: VERSION_TAG -->
<import file="${sdk.dir}/tools/ant/uibuild.xml" />
</project>

View File

@ -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

View File

@ -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);
}
}