From ae4ae3da5e558688970ae84a21bf904cd90ab173 Mon Sep 17 00:00:00 2001 From: Michael McGeagh Date: Thu, 1 Dec 2016 13:21:30 +0000 Subject: [PATCH] skype: now hangs up at the end. Better duration handling --- wlauto/workloads/skype/__init__.py | 12 +-- .../skype/com.arm.wlauto.uiauto.skype.jar | Bin 12535 -> 13600 bytes .../com/arm/wlauto/uiauto/UiAutomation.java | 79 +++++++++++------- 3 files changed, 57 insertions(+), 34 deletions(-) diff --git a/wlauto/workloads/skype/__init__.py b/wlauto/workloads/skype/__init__.py index 9aeb581b..86b61b5b 100755 --- a/wlauto/workloads/skype/__init__.py +++ b/wlauto/workloads/skype/__init__.py @@ -40,19 +40,19 @@ class Skype(AndroidUxPerfWorkload): 2. Log in to a pre-defined account 3. Select a recipient from the Contacts list 4. Initiate either a ``voice`` or ``video`` call for ``duration`` time (in seconds) + Note: The actual duration of the call may not match exactly the intended duration + due to the uiautomation overhead. **Skype Setup** - - You should install Skype client from Google Play Store on the device - (this was tested with client version 7.01.0.669; other recent versions - should also work). - - You must have a Skype account set up. + - You must have a Skype account set up and its credentials passed + as parameters into this workload - 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. - For video calls the contact must be able to received the call. This - means that there must be a Skype client running (somewhere) with the + 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 -- @@ -72,7 +72,7 @@ class Skype(AndroidUxPerfWorkload): Parameter('contact_name', kind=str, default='Echo / Sound Test Service', description='This is the contact display name as it appears in the people list'), Parameter('duration', kind=int, default=10, - description='This is the duration of the call in seconds'), + description='This is the target duration of the call in seconds'), Parameter('action', kind=str, allowed_values=['voice', 'video'], default='voice', description='Action to take - either voice call (default) or video'), ] diff --git a/wlauto/workloads/skype/com.arm.wlauto.uiauto.skype.jar b/wlauto/workloads/skype/com.arm.wlauto.uiauto.skype.jar index 842758740dff00f10867be5ad8b2ae2a2ebe5f57..58a119694cc83eb6abe3c67a82fc595f9b105fc3 100644 GIT binary patch delta 13501 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

RNwQ6f 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 NZT{DP;{9*-{{U2Y=KcTx delta 12395 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%0Aoa*pLjT=UjkT@Z zS`WSIqp%n(&PT1OlQK9~aS{AM)yqOBB}aOmfh_5?;R&Hl))02<921QW!;2g#mWH9N z4FlS4V6-#OFtNLj_KOT%faMIl^r%AuaGpUnC*lhnFywL9!lii1;7cW9H* zGC`=ZXHKk^qXA@gHS2 zmOMfe+QyfJ|H_#?eQ1z<#@~VQ*AEv|@vXJ?8=|*mA3ummcjsCCw~v^Bq`qdMAyQP1 z;aAhIR5LC%$J8ElN)={SZ~ctpy5k%}<~XxzDtyKrE%V!P?DfmIt5ZlU@u1^?Q7iUe zndpla+Gk72s@zo!20JUh862Q8pQ`vQDX_RhLIn#Zg%rn+p{-O=|x z4PdB@6YO7n^wV79=Y&L9?Sz8QZ=4tl&h#bw(~jQ14Rp&%tE5UYiBtfzDplb!&!qk2 z>+HjD4H@saXQ-lidXos+YBbv8%?*&eq+t?#3)UG0)S6}{hzGY?2YF2i~pkow+M z+0QxcCy9!>dCx?+BZ(Ef68JYjO5tsy1vP1Z6s2{YbDf&j4c@bRpm~P%oi=2+Mc~}K z(&sUSICuB_b>5Z#G$aMA7Wy{NB0AZmG-ccrCp7uCGq7^0Gajb@?^S+5knMXG_0gddkx7A%g2p(9ijsR7Ry*k4m<`QFh96W z4)4UQCCDBQvsjD**^wE)1|Hg==SX7)#oifdy~%&M)EMzO=wgZ0OrHs;KX7JJV64%& z7`7{}vPdsG%m$RJ-lbW0Fpp+)9x=co<0(hgfs1!F3+%}95u>e*3{-2aJiq!PMsFx) z>~F>Ko}ClA*ZpxMX3*9uXfvy^iL(w!C6T<(#>sU+U`wb2d_6TUKNaXN+pgG~E4<%i zzjle1MR`t2GWZ^Snb;U1Azih~hnHq1^(A6-qB>;CEVD;k-@(#B&q2|lST53_M9MNz zvjkrtqQY>YqD@RURj)qflPxFRnRlAEuJ>Od?Jph`f(&J|yOobjZkkQzbD(9l6C$n3 zK^;J|jzKFNsO%I{4QOU$v)k&4K+^!d!0p77~?^j`#9-+gJl=oQP zVBt#i{1LS$IA;G`Zuo89HuuhsznrX+J<+HFXM~Os&>82}vFD$=V>4|8N5$;HM@e1H zM(MIx*688QZ5aNxsb=L!jAO$cS=1&LXC59SfFhcHcnoN$)9lb>=+9>Shy|+*&!&y; zOxn_=6;1^igU~e=w=^n+m#2OjgndfQ`|XkpTUAZ4Q};o94fWI>XNUdblN0IEYB=bB zuD~jFKgX8(R+7bB{ktRl2InRmxjJx!hgh@pbht*qHCs8q^p zUs(N?=#Z!5#BR)R+EJbNF>s&Gk#zNW0RX7ZDA}&)(OmD>TwCeWH0VUd!xn0fxV6Ao zXb-*JSnc;2g8S)h{02R&=4dy@x_=~D>oq%|2#h#Dzg)5)G|w4ABHG-`)b~AyY~A$I z8Y}1EAO{xsQ-@T#RUhD#cdU5EE&Y)EbRwBk2=kUV6FLZ=*)9?uLce3_S!idrBWw;k8=Q8kbGC|N-&ngsvEVd~d{NEd<1r2&YAWBfq>}S{ zO}0MW^xc`H7J<{w(>e(BGVihg-g#*%v`Q7M*x@mF~DtH1aKaP92- z9eO2Wy^*PGtL6Cab-!47X|z8(a!IG@<-8T=jTgLzA-#d6+huOQz1`6s`Rr}Jb3f|l z@)n+c`*(gH7VbU#|IZ6ZG6V7b-^75VUm$LZ|9iF{1_u3K%E14Y!l2fqXAn6O6Z?OW F{|BO`u}lB} 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 1dd57b16..dc3ea874 100755 --- a/wlauto/workloads/skype/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java +++ b/wlauto/workloads/skype/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java @@ -67,9 +67,9 @@ public class UiAutomation extends UxPerfUiAutomation { searchForContact(contactName); if (ACTION_VOICE.equalsIgnoreCase(callType)) { - voiceCallTest(callDuration); + makeCall(callDuration, false); } else if (ACTION_VIDEO.equalsIgnoreCase(callType)) { - videoCallTest(callDuration); + makeCall(callDuration, true); } removeWatcher("infoPopUpWatcher"); @@ -96,7 +96,7 @@ public class UiAutomation extends UxPerfUiAutomation { UiObject updateNotice = new UiObject(new UiSelector().resourceId(packageID + "update_notice_dont_show_again")); //Detect if the update notice popup is present - if (updateNotice.waitForExists(uiAutoTimeout)) { + if (updateNotice.waitForExists(TimeUnit.SECONDS.toMillis(30))) { //Stop the notice from reappearing updateNotice.click(); clickUiObject(BY_TEXT, "Continue", "android.widget.Button"); @@ -165,35 +165,58 @@ public class UiAutomation extends UxPerfUiAutomation { return infoPopUpWatcher; } - private void voiceCallTest(int duration) throws Exception { - String testTag = "call_voice"; - ActionLogger logger = new ActionLogger(testTag, parameters); - - logger.start(); - makeCall(duration, false, testTag); - logger.stop(); - } - - private void videoCallTest(int duration) throws Exception { - String testTag = "call_video"; - ActionLogger logger = new ActionLogger(testTag, parameters); - - logger.start(); - makeCall(duration, true, testTag); - logger.stop(); - } - - private void makeCall(int duration, boolean video, String testTag) throws Exception { + private void makeCall(int duration, boolean video) throws Exception { + String testTag = video ? "video" : "voice"; String description = video ? "Video call" : "Call options"; UiObject callButton = new UiObject(new UiSelector().descriptionContains(description)); - callButton.clickAndWaitForNewWindow(); - UiObject muteButton = - new UiObject(new UiSelector().descriptionContains("Mute")); - muteButton.click(); - - sleep(duration); + new UiObject(new UiSelector().descriptionContains("mute")); + UiObject endButton = + new UiObject(new UiSelector().descriptionContains("end")); + + // Start the call and log how long that takes + ActionLogger logger = new ActionLogger(testTag + "_start", parameters); + logger.start(); + long target = System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(duration); + callButton.clickAndWaitForNewWindow(); + logger.stop(); + + // Wait for 'duration' seconds - attempt to mute while waiting + logger = new ActionLogger(testTag + "_call", parameters); + logger.start(); + boolean muted = false; + while (System.currentTimeMillis() < target) { + if (muted == true) { + sleep(1); + } else { + muted = tryButton(muteButton, 500); + } + } + logger.stop(); + + // Hang up the call and log how long that takes + logger = new ActionLogger(testTag + "_stop", parameters); + logger.start(); + tryButton(endButton, 500); + logger.stop(); + } + + private boolean tryButton(UiObject button, long timeout) throws Exception { + if (button.waitForExists(timeout)) { + button.click(); + return true; + } + else { + // The buttons could be hidden... + // Tap screen to make them appear and look again + tapDisplayCentre(); + if (button.waitForExists(timeout)) { + button.click(); + return true; + } + } + return false; } }