From 8e666161594841dccc1abbc89b2b3e3a12b9174a Mon Sep 17 00:00:00 2001
From: James Hartley <james.hartley@arm.com>
Date: Tue, 3 May 2016 18:13:03 +0100
Subject: [PATCH 1/6] Add clickUiObject to BaseUiAutomation

Convenience method to click on o UiObject and throw an exception if the view does not change within a specified timeout.
---
 wlauto/common/android/BaseUiAutomation.class  | Bin 6482 -> 6748 bytes
 .../arm/wlauto/uiauto/BaseUiAutomation.java   |   6 ++++++
 2 files changed, 6 insertions(+)

diff --git a/wlauto/common/android/BaseUiAutomation.class b/wlauto/common/android/BaseUiAutomation.class
index 3f507bb68625f4978761febd44e3f753b4bdc569..e7aca274e6ee0c144314a6d14b041cf3826f4f98 100644
GIT binary patch
delta 3022
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
XM)p-wzDCL&q}+KJ$_31d3-|m7C$`$Q

delta 2801
zcma)82~<^86y5hTy#F5$z98c8S;9h%1jQt@T8bzbCSqn~TA4VIh>|#FS^6!rP#b+=
zsimc*<!tCr&AFVj!REAivNAKZvNCO-_XnQ#&0ulvc=q1++;h+4V9x$*@1E1^Hvwp^
z5_EJywF@)xL=-3FCsOC=Nf!z+OBQGA?9FlFDIHH^t_<dBct*psI$}{RX1)^(q<v0@
zf#-EB#3BtZ$j%ovEY^{PY7I-IUFyU#X}!yJG{6ekvQm1hG`!?QjdWMbI+0SaMut8e
zFJr9}>!e+;;}vXhVxxvl8aC_Lf~`6-u}wz?UKO<0q_<ti4(ycGT^e>fu}8yRnR;Ev
zrGlD-!hKG>A)PnHyd{#~7PDW>I|5`G4h!+FnD@lIFRLGj`B1}08a}QmR!bb}K+VaB
zNvdXRlvA}WLN^Tu4Sa%64Sa^r4P1q;272NP17G4R1#MjAs9~k$qcnVN;2V5v;5!^L
z&qQaYe2*U#BC|#eFEj8X4jU-KPa2LG=!KsZJZ2+@$7!G+1}dbR@ewKJbS*ogKaQGP
zwB!UYj*7!C2Ffthz%d**k7&KJPT*IWE-~;Mj%)bcz)Ad};Hs!B8#G`{YRf?e{={Dz
zP8s+cr_GVhyiA-i6qKTya)^l#_179I5{ESvWvFPS8On)n3eC(Cy`g!+S=7s=bORG{
zRG~pZ<=BeS)Zvw5QU{k0FHKErHag8RhKiv?!qUXzkb(O!#lZby9uQL{W*Vj&Do(i#
zRY%3wtaBZRG*`rBdkUF_098pa*{jbU15I0Oo{DRd*`0Gb9JEakiDtN(J%g)20(#&Y
zwo1-m?JsgCx2fHKG5wlb`;#pHn81D@2G`+wdMJkf2Fr7fyVxt9Nsx!qg0>}DE<r1_
z=5MxzlEc~7MCy$`R05`(pI>@6;wIumAqzL7FZUQo$1R+T;A}sXaHg0Zoj8`0xH2;1
z9esSLw~7M?{F1MbmCNA7<u=W(5Qhu>Esg=)6-m?-3wfX*oAc`Al-H_nM~wEUi(Gin
z0cpq!sh1cAH8%<1$(%&PK`##mp_Cdu?B9yP<gv4rVTi@nKE6?2ZItu5x8OXA%ZZ`R
z!5C^`RL6I;;+<ecvXJ$q3mP*6vUvA$!>LpOMn9;w75rE-=T~c2HVhTykqCFCpLoV(
zCdWq{8ZyO)rb{{W$2gjsz-apknp^uq3^5@Fe|9*y`8MXE#CJl1$Cg(;;bOkk=Aj<I
z2r3#*&q|E2JohEcQr*q6x;?zIzb`!tcq1culTMDSLhMx-W!<jKjpivF%%#Z~!(JrZ
zxD#V>JEGB)w=)iRKx1B)aJDP)S`c+S?qW{c`R~RA;U`BmcQaefHi@07WPGBhK$K)y
zanB9$=kkS127_7SWzWHPco8P?{vyu8y~mGhW+pZ=k0s`m)Mnj8)S+j6`lR6=v||Yf
z&vWnp;+bsYnO85z_BN}?GnG8k$TOWh51)s}|5`3|9u_K|TH@4}t(@P;@FAx6TD12e
zH<UVF245Cu*sk3O1W!q!J3mN=5J&)HW>^f?$pD6w7~#?=BrmGMa`##_!mnYr&0h;?
zV2KUm-!b5CbDta5eX76WlC~XhT<Bvn$lr;7`92hQ?S)F})O=RB1vaGEkPw#nfRLVn
zx9AQ=)RXK(=icW+Ekqm^Sy28*?+zuU8xLA#8t}UDkX54;@7t>N)G(TvEn3op_(8!@
z6~P|c{HTil9v`l>@iwL-u$Yf$2@B6smda&JsO3zk#Z3B@mKOgfBR!zSOBOs5_+~t6
zQxF|qL4Y?XBdQ{-f*LAVO$BS@Um+y(f1otfP{F!?DImXH!DAOx(21uO5u(5fM}AlZ
z8>nC-60wO2HnRY4p@I!mu<aZLUir@270mc=1%ArF@q=2zD%eg1J6Pg&@)mYc!EP$p
VP6d0<QqVB?9jLtplX@I@{2x}js+0f#

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 6a490ef9..c31a835c 100644
--- a/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/BaseUiAutomation.java
+++ b/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/BaseUiAutomation.java
@@ -142,6 +142,12 @@ public class BaseUiAutomation extends UiAutomatorTestCase {
         return object;
     }
 
+    public void clickUiObject(UiObject uiobject, long timeout) throws Exception {
+        if (!uiobject.clickAndWaitForNewWindow(timeout)) {
+            throw new UiObjectNotFoundException(String.format("Timeout waiting for New Window"));
+        }
+    }
+
     public int getDisplayHeight () {
         return getUiDevice().getInstance().getDisplayHeight();
     }

From 091e1054abc3fe5bb074ef8245291bb4775ac073 Mon Sep 17 00:00:00 2001
From: James Hartley <james.hartley@arm.com>
Date: Tue, 3 May 2016 18:14:59 +0100
Subject: [PATCH 2/6] Fix Gmail workload to run across more devices

Changes to deal with subtle differences in layouts between tablets and handsets.
Stop pushing files to he Camera directory for test purposes.
---
 wlauto/workloads/gmail/__init__.py            |  12 ++-
 .../gmail/com.arm.wlauto.uiauto.gmail.jar     | Bin 9184 -> 9695 bytes
 .../com/arm/wlauto/uiauto/UiAutomation.java   |  94 ++++++++++++------
 3 files changed, 71 insertions(+), 35 deletions(-)

diff --git a/wlauto/workloads/gmail/__init__.py b/wlauto/workloads/gmail/__init__.py
index 748619b9..78a05abe 100755
--- a/wlauto/workloads/gmail/__init__.py
+++ b/wlauto/workloads/gmail/__init__.py
@@ -16,7 +16,7 @@ class Gmail(AndroidUiAutoBenchmark):
     description = """
     A workload to perform standard productivity tasks within Gmail.
 
-    The workload carries out various tasks, such as creatign new emails and
+    The workload carries out various tasks, such as creating new emails and
     sending them, whilst also producing metrics for action completion times.
     """
 
@@ -45,13 +45,12 @@ class Gmail(AndroidUiAutoBenchmark):
     def setup(self, context):
         super(Gmail, self).setup(context)
 
-        self.camera_dir = self.device.path.join(self.device.external_storage_directory,
-                                                      'DCIM/Camera/')
+        self.storage_dir = self.device.path.join(self.device.working_directory)
 
         for file in os.listdir(self.dependencies_directory):
             if file.endswith(".jpg"):
                 self.device.push_file(os.path.join(self.dependencies_directory, file),
-                                      os.path.join(self.camera_dir, file), timeout=300)
+                                      os.path.join(self.storage_dir, 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')
@@ -90,3 +89,8 @@ class Gmail(AndroidUiAutoBenchmark):
             if file.startswith (self.name) and 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))
+            if file.startswith (self.name) and file.endswith(".jpg"):
+                self.device.delete_file(os.path.join(self.device.working_directory, 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')
diff --git a/wlauto/workloads/gmail/com.arm.wlauto.uiauto.gmail.jar b/wlauto/workloads/gmail/com.arm.wlauto.uiauto.gmail.jar
index 783a520536e81baba0c3ee4a12cd986452168590..48aabdb73701ffe66b83220b41de60b08f3524b0 100644
GIT binary patch
delta 9436
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

delta 8921
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

diff --git a/wlauto/workloads/gmail/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java b/wlauto/workloads/gmail/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java
index e3455c33..b2ab4dfe 100644
--- a/wlauto/workloads/gmail/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java
+++ b/wlauto/workloads/gmail/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java
@@ -31,21 +31,15 @@ public class UiAutomation extends UxPerfUiAutomation {
     public void runUiAutomation() throws Exception {
         parameters = getParams();
 
-        Timer result = new Timer();
-        result.start();
-
         clearFirstRunDialogues();
 
         clickNewMail();
+        attachFiles();
         setToField();
         setSubjectField();
         setComposeField();
-        attachFiles();
         clickSendButton();
 
-        result.end();
-        timingResults.put("Total", result);
-
         writeResultsToFile(timingResults, parameters.getString("output_file"));
     }
 
@@ -53,9 +47,9 @@ public class UiAutomation extends UxPerfUiAutomation {
         // Enter search text into the file searchBox.  This will automatically filter the list.
         UiObject gotItBox = getUiObjectByResourceId("com.google.android.gm:id/welcome_tour_got_it",
                                                      "android.widget.TextView");
-        gotItBox.clickAndWaitForNewWindow();
+        clickUiObject(gotItBox, timeout);
         UiObject takeMeToBox = getUiObjectByText("Take me to Gmail", "android.widget.TextView");
-        takeMeToBox.clickAndWaitForNewWindow();
+        clickUiObject(takeMeToBox, timeout);
         UiObject converationView = new UiObject(new UiSelector()
                                             .resourceId("com.google.android.gm:id/conversation_list_view")
                                             .className("android.widget.ListView"));
@@ -68,7 +62,7 @@ public class UiAutomation extends UxPerfUiAutomation {
         Timer result = new Timer();
         UiObject newMailButton = getUiObjectByDescription("Compose", "android.widget.ImageButton");
         result.start();
-        newMailButton.clickAndWaitForNewWindow(timeout);
+        clickUiObject(newMailButton, timeout);
         result.end();
         timingResults.put("newMail", result);
     }
@@ -108,7 +102,7 @@ public class UiAutomation extends UxPerfUiAutomation {
         Timer result = new Timer();
         UiObject sendButton = getUiObjectByDescription("Send", "android.widget.TextView");
         result.start();
-        sendButton.clickAndWaitForNewWindow(timeout);
+        clickUiObject(sendButton, timeout);
         result.end();
         timingResults.put("Send", result);
     }
@@ -120,28 +114,66 @@ public class UiAutomation extends UxPerfUiAutomation {
 
         String [] imageFiles = {"1.jpg", "2.jpg", "3.jpg", "4.jpg", "5.jpg"};
 
-        result.start();
-
         for ( int i=0; i < imageFiles.length; i++) {
-            attachIcon.clickAndWaitForNewWindow(timeout);
-            UiObject attachFile = getUiObjectByText("Attach file", "android.widget.TextView");
-            attachFile.clickAndWaitForNewWindow(timeout);
-            UiObject imagesEntry = getUiObjectByText("Images", "android.widget.TextView");
-            imagesEntry.clickAndWaitForNewWindow(timeout);
-            UiObject listView = new UiObject(new UiSelector().textContains("List view")
-                                                             .className("android.webkit.WebView"));
-            if (listView.exists()) {
-                listView.clickAndWaitForNewWindow(timeout);
-            }
-            UiObject cameraEntry = getUiObjectByText("Camera", "android.widget.TextView");
-            cameraEntry.clickAndWaitForNewWindow(timeout);
-            UiObject oneJpg = getUiObjectByText(imageFiles[i], "android.widget.TextView");
-            oneJpg.clickAndWaitForNewWindow(timeout);
-        }
-        result.end();
-        timingResults.put("AttachFiles", result);
-    }
+            result.start();
 
+            clickUiObject(attachIcon, timeout);
+            UiObject attachFile = getUiObjectByText("Attach file", "android.widget.TextView");
+            clickUiObject(attachFile, timeout);
+
+            UiObject titleIsWaWorking = new UiObject(new UiSelector()
+                                                .className("android.widget.TextView")
+                                                .textContains("wa-working"));
+            UiObject titleIsImages = new UiObject(new UiSelector()
+                                                .className("android.widget.TextView")
+                                                .textContains("Images"));
+            UiObject frameLayout = new UiObject(new UiSelector()
+                                                .className("android.widget.FrameLayout")
+                                                .resourceId("android:id/action_bar_container"));
+            UiObject rootMenu = new UiObject(new UiSelector()
+                                                .className("android.widget.ImageButton")
+                                                .descriptionContains("Show roots"));
+            UiObject imagesEntry = new UiObject(new UiSelector()
+                                                .className("android.widget.TextView")
+                                                .textContains("Images"));
+            UiObject waFolder =  new UiObject(new UiSelector()
+                                                .className("android.widget.TextView")
+                                                .textContains("wa-working"));
+
+            // Some devices use a FrameLayout as oppoised to a view Group so treat them differently
+            if (frameLayout.exists()) {
+                imagesEntry.click();
+                waitObject(titleIsImages, 4);
+                waFolder.click();
+                waitObject(titleIsWaWorking, 4);
+            } else {
+                // Portrait devices will roll the menu up so click the root menu icon
+                if (!titleIsWaWorking.exists()) {
+                    if (rootMenu.exists()) {
+                       rootMenu.click();
+                    }
+                    imagesEntry.click();
+                    waitObject(titleIsImages, 4);
+                    waFolder.click();
+                    waitObject(titleIsWaWorking, 4);
+                }
+            }
+
+            UiObject imageFileButton = new UiObject(new UiSelector()
+                                                .resourceId("com.android.documentsui:id/grid")
+                                                .className("android.widget.GridView")
+                                                .childSelector(new UiSelector()
+                                                .index(i).className("android.widget.FrameLayout")));
+
+            clickUiObject(imageFileButton, timeout);
+
+            result.end();
+
+            // Replace whitespace and full stops within the filename
+            String file = imageFiles[i].replaceAll("\\.", "_").replaceAll("\\s+", "_");
+            timingResults.put(String.format("AttachFiles" + "_" + file), result);
+        }
+    }
 
     private void writeResultsToFile(LinkedHashMap timingResults, String file) throws Exception {
         // Write out the key/value pairs to the instrumentation log file

From e1827ffde2ad51adf7c496698856b45e90c519ca Mon Sep 17 00:00:00 2001
From: James Hartley <james.hartley@arm.com>
Date: Tue, 3 May 2016 18:16:17 +0100
Subject: [PATCH 3/6] Tidy up Reader timing instrumentation and fix build error

---
 .../reader/com.arm.wlauto.uiauto.reader.jar   | Bin 11683 -> 11674 bytes
 .../com/arm/wlauto/uiauto/UiAutomation.java   |  15 +++++++++------
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/wlauto/workloads/reader/com.arm.wlauto.uiauto.reader.jar b/wlauto/workloads/reader/com.arm.wlauto.uiauto.reader.jar
index 5be714c62c575d14bc71c50dc9969f60c1694692..aae224998bcb2b6c6b6ed4c10c9a604c8a0542e9 100644
GIT binary patch
delta 11457
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
bmVTp1sHMgD?kfNQq?2teFb2*n00000MmMQx

delta 11457
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
bQE8k=Pou|`_bUJZP?KaWFb3Bw00000a6F9|

diff --git a/wlauto/workloads/reader/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java b/wlauto/workloads/reader/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java
index c51f38da..41a3ceac 100755
--- a/wlauto/workloads/reader/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java
+++ b/wlauto/workloads/reader/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java
@@ -18,8 +18,8 @@ import java.io.File;
 import java.io.FileWriter;
 import java.io.BufferedWriter;
 import java.util.concurrent.TimeUnit;
-import java.util.LinkedHashMap;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Map.Entry;
 
@@ -72,7 +72,7 @@ public class UiAutomation extends UxPerfUiAutomation {
         int i = 0;
         do {
             i += 10;
-            tapDisplay(webViewCoords.centerX(), webViewCoords.bottom - i);
+            tapDisplay(webViewCoords.centerX(), webViewCoords.centerY() + i);
         } while ( welcomeView.exists() || i < webViewCoords.top  );
     }
 
@@ -143,13 +143,16 @@ public class UiAutomation extends UxPerfUiAutomation {
     }
 
     private void openFile(String filename) throws Exception {
+
+        String TestTag = "openfile";
+
         // Replace whitespace and full stops within the filename
         String file = filename.replaceAll("\\.", "_").replaceAll("\\s+", "_");
 
-        timingResults.put(String.format("selectLocalFilesList" + "_" + file), selectLocalFilesList());
-        timingResults.put(String.format("selectSearchDuration" + "_" + file), selectSearchFileButton());
-        timingResults.put(String.format("searchFileList" + "_" + file), searchFileList(filename));
-        timingResults.put(String.format("openFileFromList" + "_" + file), openFileFromList(filename));
+        timingResults.put(String.format(TestTag + "_" + "selectLocalFilesList" + "_" + file), selectLocalFilesList());
+        timingResults.put(String.format(TestTag + "_" + "selectSearchDuration" + "_" + file), selectSearchFileButton());
+        timingResults.put(String.format(TestTag + "_" + "searchFileList" + "_" + file), searchFileList(filename));
+        timingResults.put(String.format(TestTag + "_" + "openFileFromList" + "_" + file), openFileFromList(filename));
 
         // Cludge to get rid of the first time run help dialogue boxes
         tapDisplayCentre();

From c2a68074be6d953339d6567e14c93becce0853ff Mon Sep 17 00:00:00 2001
From: John Richardson <john.richardson@arm.com>
Date: Tue, 3 May 2016 11:49:05 +0100
Subject: [PATCH 4/6] Googlephotos productivity workload

A new workload to perform standard productivity tasks within
Googlephotos. Each user event/step is timed and reported back as a
metric. Dumpsys also captures SurfaceFlinger logs for each event for
post analysis.
---
 wlauto/workloads/googlephotos/__init__.py     |  99 ++++++
 .../com.arm.wlauto.uiauto.googlephotos.jar    | Bin 0 -> 11019 bytes
 wlauto/workloads/googlephotos/uiauto/build.sh |  12 +
 .../workloads/googlephotos/uiauto/build.xml   |  92 ++++++
 .../googlephotos/uiauto/project.properties    |  14 +
 .../com/arm/wlauto/uiauto/UiAutomation.java   | 291 ++++++++++++++++++
 6 files changed, 508 insertions(+)
 create mode 100644 wlauto/workloads/googlephotos/__init__.py
 create mode 100644 wlauto/workloads/googlephotos/com.arm.wlauto.uiauto.googlephotos.jar
 create mode 100755 wlauto/workloads/googlephotos/uiauto/build.sh
 create mode 100644 wlauto/workloads/googlephotos/uiauto/build.xml
 create mode 100644 wlauto/workloads/googlephotos/uiauto/project.properties
 create mode 100644 wlauto/workloads/googlephotos/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java

diff --git a/wlauto/workloads/googlephotos/__init__.py b/wlauto/workloads/googlephotos/__init__.py
new file mode 100644
index 00000000..db0107b3
--- /dev/null
+++ b/wlauto/workloads/googlephotos/__init__.py
@@ -0,0 +1,99 @@
+import os
+import re
+
+from wlauto import AndroidUiAutoBenchmark, Parameter
+
+
+class Googlephotos(AndroidUiAutoBenchmark):
+
+    name = 'googlephotos'
+    package = 'com.google.android.apps.photos'
+    activity = 'com.google.android.apps.photos.home.HomeActivity'
+
+    description = """
+    A workload to perform standard productivity tasks with googlephotos.
+
+    The workload carries out various tasks, such as browsing images, performing zooms,
+    postprocessing and saving a selected image to file.
+
+    NOTE: This workload requires four jpeg files to be placed in the
+    dependencies directory to run.
+
+    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.
+    """
+
+    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.
+                  """),
+    ]
+
+    instrumentation_log = ''.join([name, '_instrumentation.log'])
+    file_prefix = 'wa_test_'
+
+    def __init__(self, device, **kwargs):
+        super(Googlephotos, self).__init__(device, **kwargs)
+        self.output_file = os.path.join(self.device.working_directory, self.instrumentation_log)
+        self.camera_dir = self.device.path.join(self.device.external_storage_directory,
+                                                'DCIM/Camera/')
+
+    def validate(self):
+        super(Googlephotos, self).validate()
+        self.uiauto_params['package'] = self.package
+        self.uiauto_params['output_dir'] = self.device.working_directory
+        self.uiauto_params['output_file'] = self.output_file
+        self.uiauto_params['dumpsys_enabled'] = self.dumpsys_enabled
+
+    def setup(self, context):
+        super(Googlephotos, self).setup(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.camera_dir, 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 update_result(self, context):
+        super(Googlephotos, self).update_result(context)
+
+        if self.dumpsys_enabled:
+            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:
+                pattern = r'(?P<key>\w+)\s+(?P<value1>\d+)\s+(?P<value2>\d+)\s+(?P<value3>\d+)'
+                regex = re.compile(pattern)
+                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(Googlephotos, self).teardown(context)
+
+        for entry in self.device.listdir(self.device.working_directory):
+            if entry.startswith(self.name) and entry.endswith(".log"):
+                self.device.pull_file(os.path.join(self.device.working_directory, entry),
+                                      context.output_directory)
+                self.device.delete_file(os.path.join(self.device.working_directory, entry))
+
+        for entry in self.device.listdir(self.camera_dir):
+            if entry.startswith(self.file_prefix) and entry.endswith(".jpg"):
+                self.device.delete_file(os.path.join(self.camera_dir, 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/googlephotos/com.arm.wlauto.uiauto.googlephotos.jar b/wlauto/workloads/googlephotos/com.arm.wlauto.uiauto.googlephotos.jar
new file mode 100644
index 0000000000000000000000000000000000000000..2a4fdd3dfe20bdec746f079613637275d236be80
GIT binary patch
literal 11019
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
F{udO>SMmS=

literal 0
HcmV?d00001

diff --git a/wlauto/workloads/googlephotos/uiauto/build.sh b/wlauto/workloads/googlephotos/uiauto/build.sh
new file mode 100755
index 00000000..f60c0b43
--- /dev/null
+++ b/wlauto/workloads/googlephotos/uiauto/build.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+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', '*.class')"`
+mkdir -p $class_dir
+cp $base_class $class_dir
+
+ant build
+
+if [[ -f bin/com.arm.wlauto.uiauto.googlephotos.jar ]]; then
+    cp bin/com.arm.wlauto.uiauto.googlephotos.jar ..
+fi
diff --git a/wlauto/workloads/googlephotos/uiauto/build.xml b/wlauto/workloads/googlephotos/uiauto/build.xml
new file mode 100644
index 00000000..648161d0
--- /dev/null
+++ b/wlauto/workloads/googlephotos/uiauto/build.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="com.arm.wlauto.uiauto.googlephotos" 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>
diff --git a/wlauto/workloads/googlephotos/uiauto/project.properties b/wlauto/workloads/googlephotos/uiauto/project.properties
new file mode 100644
index 00000000..916037e3
--- /dev/null
+++ b/wlauto/workloads/googlephotos/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-23
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
new file mode 100644
index 00000000..1c7a8c22
--- /dev/null
+++ b/wlauto/workloads/googlephotos/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java
@@ -0,0 +1,291 @@
+package com.arm.wlauto.uiauto.googlephotos;
+
+import android.os.Bundle;
+import android.graphics.Point;
+import android.graphics.Rect;
+
+// Import the uiautomator libraries
+import com.android.uiautomator.core.UiObject;
+import com.android.uiautomator.core.UiObjectNotFoundException;
+import com.android.uiautomator.core.UiSelector;
+
+import com.arm.wlauto.uiauto.UxPerfUiAutomation;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.BufferedWriter;
+import java.util.concurrent.TimeUnit;
+import java.util.LinkedHashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+
+public class UiAutomation extends UxPerfUiAutomation {
+
+    public static String TAG = "uxperf_googlephotos";
+
+    public Bundle parameters;
+    private long viewTimeout =  TimeUnit.SECONDS.toMillis(20);
+    private LinkedHashMap<String, Timer> timingResults = new LinkedHashMap<String, Timer>();
+
+    public void runUiAutomation() throws Exception {
+        Timer result = new Timer();
+        result.start();
+        parameters = getParams();
+
+        dismissWelcomeView();
+        gesturesTest();
+        editPhotoTest();
+
+        result.end();
+        timingResults.put("total", result);
+
+        writeResultsToFile(timingResults, parameters.getString("output_file"));
+    }
+
+    private 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(3); // Pause while splash screen loads
+
+        UiObject getStarteddButton =
+            getUiObjectByResourceId("com.google.android.apps.photos:id/get_started",
+                                    "android.widget.Button");
+        getStarteddButton.clickAndWaitForNewWindow();
+
+        UiObject welcomeButton =
+            getUiObjectByResourceId("com.google.android.apps.photos:id/name",
+                                    "android.widget.TextView");
+        welcomeButton.clickAndWaitForNewWindow();
+
+        UiObject useWithoutAccount =
+            getUiObjectByText("Use without an account", "android.widget.TextView");
+        useWithoutAccount.clickAndWaitForNewWindow();
+
+        // Dismiss welcome views promoting app features
+        sleep(1);
+        uiDeviceSwipeLeft(10);
+        sleep(1);
+        uiDeviceSwipeLeft(10);
+        sleep(1);
+        uiDeviceSwipeLeft(10);
+        sleep(1);
+
+        UiObject nextButton =
+            getUiObjectByResourceId("com.google.android.apps.photos:id/next_button",
+                                    "android.widget.ImageView");
+        nextButton.clickAndWaitForNewWindow();
+    }
+
+    private void gesturesTest () throws Exception {
+        String testTag = "gestures";
+
+        // Perform a range of swipe tests while browsing photo gallery
+        LinkedHashMap<String, GestureTestParams> testParams = new LinkedHashMap<String, GestureTestParams>();
+        testParams.put("swipe_left", new GestureTestParams(GestureType.UIDEVICE_SWIPE, Direction.LEFT, 10));
+        testParams.put("pinch_out", new GestureTestParams(GestureType.PINCH, PinchType.OUT, 100, 50));
+        testParams.put("pinch_in", new GestureTestParams(GestureType.PINCH, PinchType.IN, 100, 50));
+        testParams.put("swipe_right", new GestureTestParams(GestureType.UIDEVICE_SWIPE, Direction.RIGHT, 10));
+        testParams.put("swipe_up", new GestureTestParams(GestureType.UIDEVICE_SWIPE, Direction.UP, 10));
+
+        Iterator<Entry<String, GestureTestParams>> it = testParams.entrySet().iterator();
+
+        // Select third photograph
+        selectPhoto(2);
+
+        while (it.hasNext()) {
+            Map.Entry<String, GestureTestParams> pair = it.next();
+            GestureType type = pair.getValue().gestureType;
+            Direction dir = pair.getValue().gestureDirection;
+            PinchType pinch = pair.getValue().pinchType;
+            int steps = pair.getValue().steps;
+            int percent = pair.getValue().percent;
+
+            String runName = String.format(testTag + "_" + pair.getKey());
+            String gfxInfologName =  String.format(TAG + "_" + runName + "_gfxInfo.log");
+            String surfFlingerlogName =  String.format(runName + "_surfFlinger.log");
+            String viewName = new String("com.google.android.apps.photos.home.HomeActivity");
+
+            UiObject view = new UiObject(new UiSelector().enabled(true));
+
+            if (!view.waitForExists(viewTimeout)) {
+                throw new UiObjectNotFoundException("Could not find \"photo view\".");
+            };
+
+            startDumpsysGfxInfo();
+            startDumpsysSurfaceFlinger(viewName);
+
+            Timer results = new Timer();
+
+            switch (type) {
+                case UIDEVICE_SWIPE:
+                    results = uiDeviceSwipeTest(dir, steps);
+                    break;
+                case UIOBJECT_SWIPE:
+                    results = uiObjectSwipeTest(view, dir, steps);
+                    break;
+                case PINCH:
+                    results = uiObjectVertPinchTest(view, pinch, steps, percent);
+                    break;
+                default:
+                    break;
+            }
+
+            stopDumpsysSurfaceFlinger(viewName, surfFlingerlogName);
+            stopDumpsysGfxInfo(gfxInfologName);
+
+            timingResults.put(runName, results);
+        }
+    }
+
+    private void editPhotoTest() throws Exception {
+        String testTag = "edit_photo";
+
+        Timer result = new Timer();
+        result.start();
+
+        // Select first photograph
+        selectPhoto(0);
+        UiObject editView = getUiObjectByResourceId("com.google.android.apps.photos:id/edit",
+                                                    "android.widget.ImageView");
+        editView.click();
+
+        UiObject editColor = getUiObjectByText("Colour", "android.widget.RadioButton");
+        editColor.click();
+
+        UiObject seekBar = getUiObjectByResourceId("com.google.android.apps.photos:id/cpe_strength_seek_bar",
+                                                   "android.widget.SeekBar");
+        seekBar.swipeLeft(10);
+
+        UiObject accept = getUiObjectByDescription("Accept", "android.widget.ImageView");
+        accept.click();
+
+        UiObject save = getUiObjectByText("SAVE", "android.widget.TextView");
+        save.click();
+
+        // Return to application home screen
+        getUiDevice().pressBack();
+
+        result.end();
+        timingResults.put(testTag, result);
+    }
+
+    // Helper to click on an individual photographs based on index in Camera gallery.
+    private void selectPhoto(int index) throws Exception {
+        UiObject cameraHeading = new UiObject(new UiSelector().text("Camera"));
+        cameraHeading.clickAndWaitForNewWindow();
+
+        UiObject photo =
+            new UiObject(new UiSelector().resourceId("com.google.android.apps.photos:id/recycler_view")
+                                         .childSelector(new UiSelector()
+                                         .index(index)));
+        photo.click();
+    }
+
+    // Helper for testing zoom facility. NOTE: the built in UiObject methods
+    // pinchIn() and pinchOut() do not zoom appropriately for this application.
+    private Timer uiObjectVertPinchTest(
+            UiObject view, PinchType direction,
+            int steps, int percent) throws Exception {
+
+        Timer results = new Timer();
+        results.start();
+
+        final int FINGER_TOUCH_HALF_WIDTH = 20;
+
+        // make value between 1 and 100
+        percent = (percent < 0) ? 1 : (percent > 100) ? 100 : percent;
+        float percentage = percent / 100f;
+
+        Rect rect = view.getVisibleBounds();
+        if (rect.width() <= FINGER_TOUCH_HALF_WIDTH * 2)
+            throw new IllegalStateException("Object width is too small for operation");
+
+        // start from the same point at the center of the control
+        Point startPoint1 = new Point(rect.centerX(), rect.centerY() + FINGER_TOUCH_HALF_WIDTH);
+        Point startPoint2 = new Point(rect.centerX(), rect.centerY() - FINGER_TOUCH_HALF_WIDTH);
+
+        // End at the top-center and bottom-center of the control
+        Point endPoint1 = new Point(rect.centerX(), rect.centerY() + (int) ((rect.height() / 2) * percentage));
+        Point endPoint2 = new Point(rect.centerX(), rect.centerY() - (int) ((rect.height() / 2) * percentage));
+
+        if (direction.equals(PinchType.IN)) {
+            view.performTwoPointerGesture(endPoint1, endPoint2, startPoint1, startPoint2, steps);
+        } else if (direction.equals(PinchType.OUT)) {
+            view.performTwoPointerGesture(startPoint1, startPoint2, endPoint1, endPoint2, steps);
+        }
+
+        results.end();
+
+        return results;
+    }
+
+    private class GestureTestParams {
+        GestureType gestureType;
+        Direction gestureDirection;
+        PinchType pinchType;
+        private int percent;
+        private int steps;
+
+        GestureTestParams(GestureType gesture, Direction direction, int steps) {
+            this.gestureType = gesture;
+            this.gestureDirection = direction;
+            this.pinchType = PinchType.NULL;
+            this.steps = steps;
+            this.percent = 0;
+        }
+
+        GestureTestParams(GestureType gesture, PinchType pinchType, int steps, int percent) {
+            this.gestureType = gesture;
+            this.gestureDirection = Direction.NULL;
+            this.pinchType = pinchType;
+            this.steps = steps;
+            this.percent = percent;
+        }
+    }
+
+    private void writeResultsToFile(LinkedHashMap timingResults, String file) throws Exception {
+        // Write out the key/value pairs to the instrumentation log file
+        FileWriter fstream = new FileWriter(file);
+        BufferedWriter out = new BufferedWriter(fstream);
+        Iterator<Entry<String, Timer>> it = timingResults.entrySet().iterator();
+
+        while (it.hasNext()) {
+            Map.Entry<String, Timer> pairs = it.next();
+            Timer results = pairs.getValue();
+            long start = results.getStart();
+            long finish = results.getFinish();
+            long duration = results.getDuration();
+            out.write(String.format(pairs .getKey() + " " + start + " " + finish + " " + duration + "\n"));
+        }
+        out.close();
+    }
+
+    private void startDumpsysSurfaceFlinger(String view) {
+        if (Boolean.parseBoolean(parameters.getString("dumpsys_enabled"))) {
+            initDumpsysSurfaceFlinger(parameters.getString("package"), view);
+        }
+    }
+
+    private void stopDumpsysSurfaceFlinger(String view, String filename) throws Exception {
+        if (Boolean.parseBoolean(parameters.getString("dumpsys_enabled"))) {
+            File out_file = new File(parameters.getString("output_dir"), filename);
+            exitDumpsysSurfaceFlinger(parameters.getString("package"), view, out_file);
+          }
+    }
+
+    private void startDumpsysGfxInfo() {
+        if (Boolean.parseBoolean(parameters.getString("dumpsys_enabled"))) {
+            initDumpsysGfxInfo(parameters.getString("package"));
+          }
+    }
+
+    private void stopDumpsysGfxInfo(String filename) throws Exception {
+      if (Boolean.parseBoolean(parameters.getString("dumpsys_enabled"))) {
+            File out_file = new File(parameters.getString("output_dir"), filename);
+            exitDumpsysGfxInfo(parameters.getString("package"), out_file);
+          }
+    }
+}

From 31cf06b62abb05e45d1083f26bfbd473022c232f Mon Sep 17 00:00:00 2001
From: John Richardson <john.richardson@arm.com>
Date: Wed, 4 May 2016 11:10:07 +0100
Subject: [PATCH 5/6] Extended BaseUiAutomation and UxPerfUiAutomation

Moved common functionality to base classes for code reuse. Refactored
googlephotos, reader and gmail workloads to take advantage of the new
base class methods and removed total test time metric.

New methods for BaseUiAutomation:
uiDeviceVertPinchIn, uiDeviceVertPinchOut

New methods for UxPerfUiAutomation:
uiObjectVertPinchTest, writeResultsToFile, startDumpsysSurfaceFlinger,
startDumpsysSurfaceFlinger, startDumpsysGfxInfo, stopDumpsysGfxInfo

New class for UxPerfUiAutomation:
GestureTestParams
---
 .../arm/wlauto/uiauto/BaseUiAutomation.java   |  48 +++++-
 .../arm/wlauto/uiauto/UxPerfUiAutomation.java |  87 +++++++++++
 .../com/arm/wlauto/uiauto/UiAutomation.java   |  31 +---
 wlauto/workloads/googlephotos/__init__.py     |   7 +-
 .../com.arm.wlauto.uiauto.googlephotos.jar    | Bin 11019 -> 11215 bytes
 wlauto/workloads/googlephotos/uiauto/build.sh |   4 +-
 .../googlephotos/uiauto/project.properties    |   2 +-
 .../com/arm/wlauto/uiauto/UiAutomation.java   | 139 ++----------------
 .../com/arm/wlauto/uiauto/UiAutomation.java   | 106 ++-----------
 9 files changed, 167 insertions(+), 257 deletions(-)

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 c31a835c..22266ca6 100644
--- a/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/BaseUiAutomation.java
+++ b/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/BaseUiAutomation.java
@@ -22,13 +22,13 @@ import java.io.InputStreamReader;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.TimeUnit;
 
-import android.app.Activity;
 import android.os.Bundle;
+import android.graphics.Point;
+import android.graphics.Rect;
 
 // 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;
 
@@ -207,4 +207,48 @@ public class BaseUiAutomation extends UiAutomatorTestCase {
             getDisplayCentreHeight(),
             steps);
     }
+
+    public void uiDeviceVertPinchIn(UiObject view, int steps, int percent) throws Exception {
+        final int FINGER_TOUCH_HALF_WIDTH = 20;
+
+        // Make value between 1 and 100
+        percent = (percent < 0) ? 1 : (percent > 100) ? 100 : percent;
+        float percentage = percent / 100f;
+
+        Rect rect = view.getVisibleBounds();
+        if (rect.width() <= FINGER_TOUCH_HALF_WIDTH * 2)
+            throw new IllegalStateException("Object width is too small for operation");
+
+        // Start at the top-center and bottom-center of the control
+        Point startPoint1 = new Point(rect.centerX(), rect.centerY() + (int) ((rect.height() / 2) * percentage));
+        Point startPoint2 = new Point(rect.centerX(), rect.centerY() - (int) ((rect.height() / 2) * percentage));
+
+        // End at the same point at the center of the control
+        Point endPoint1 = new Point(rect.centerX(), rect.centerY() + FINGER_TOUCH_HALF_WIDTH);
+        Point endPoint2 = new Point(rect.centerX(), rect.centerY() - FINGER_TOUCH_HALF_WIDTH);
+
+        view.performTwoPointerGesture(startPoint1, startPoint2, endPoint1, endPoint2, steps);
+    }
+
+    public void uiDeviceVertPinchOut(UiObject view, int steps, int percent) throws Exception {
+        final int FINGER_TOUCH_HALF_WIDTH = 20;
+
+        // Make value between 1 and 100
+        percent = (percent < 0) ? 1 : (percent > 100) ? 100 : percent;
+        float percentage = percent / 100f;
+
+        Rect rect = view.getVisibleBounds();
+        if (rect.width() <= FINGER_TOUCH_HALF_WIDTH * 2)
+            throw new IllegalStateException("Object width is too small for operation");
+
+        // Start from the same point at the center of the control
+        Point startPoint1 = new Point(rect.centerX(), rect.centerY() + FINGER_TOUCH_HALF_WIDTH);
+        Point startPoint2 = new Point(rect.centerX(), rect.centerY() - FINGER_TOUCH_HALF_WIDTH);
+
+        // End at the top-center and bottom-center of the control
+        Point endPoint1 = new Point(rect.centerX(), rect.centerY() + (int) ((rect.height() / 2) * percentage));
+        Point endPoint2 = new Point(rect.centerX(), rect.centerY() - (int) ((rect.height() / 2) * percentage));
+
+        view.performTwoPointerGesture(startPoint1, startPoint2, endPoint1, endPoint2, steps);
+    }
 }
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 756d0ea0..379908c3 100644
--- a/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/UxPerfUiAutomation.java
+++ b/wlauto/external/uiauto/src/com/arm/wlauto/uiauto/UxPerfUiAutomation.java
@@ -17,6 +17,7 @@ package com.arm.wlauto.uiauto;
 
 import android.os.Build;
 import android.os.SystemClock;
+import android.os.Bundle;
 
 import com.android.uiautomator.core.UiObject;
 import com.android.uiautomator.core.UiObjectNotFoundException;
@@ -26,6 +27,7 @@ import com.android.uiautomator.core.UiSelector;
 import com.arm.wlauto.uiauto.BaseUiAutomation;
 
 import java.io.BufferedReader;
+import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.InputStreamReader;
@@ -34,6 +36,10 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 import java.util.Arrays;
 import java.util.List;
+import java.util.LinkedHashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
 
 public class UxPerfUiAutomation extends BaseUiAutomation {
 
@@ -209,4 +215,85 @@ public class UxPerfUiAutomation extends BaseUiAutomation {
         results.end();
         return results;
     }
+
+    public Timer uiObjectVertPinchTest(UiObject view, PinchType direction,
+                                       int steps, int percent) throws Exception {
+        Timer results = new Timer();
+        results.start();
+        if (direction.equals(PinchType.IN)) {
+            uiDeviceVertPinchIn(view, steps, percent);
+        } else if (direction.equals(PinchType.OUT)) {
+            uiDeviceVertPinchOut(view, steps, percent);
+        }
+        results.end();
+        return results;
+    }
+
+    public class GestureTestParams {
+        public GestureType gestureType;
+        public Direction gestureDirection;
+        public PinchType pinchType;
+        public int percent;
+        public int steps;
+
+        public GestureTestParams(GestureType gesture, Direction direction, int steps) {
+            this.gestureType = gesture;
+            this.gestureDirection = direction;
+            this.pinchType = PinchType.NULL;
+            this.steps = steps;
+            this.percent = 0;
+        }
+
+        public GestureTestParams(GestureType gesture, PinchType pinchType, int steps, int percent) {
+            this.gestureType = gesture;
+            this.gestureDirection = Direction.NULL;
+            this.pinchType = pinchType;
+            this.steps = steps;
+            this.percent = percent;
+        }
+    }
+
+    public void writeResultsToFile(LinkedHashMap timingResults, String file) throws Exception {
+        // Write out the key/value pairs to the instrumentation log file
+        FileWriter fstream = new FileWriter(file);
+        BufferedWriter out = new BufferedWriter(fstream);
+        Iterator<Entry<String, Timer>> it = timingResults.entrySet().iterator();
+
+        while (it.hasNext()) {
+            Map.Entry<String, Timer> pairs = it.next();
+            Timer results = pairs.getValue();
+            long start = results.getStart();
+            long finish = results.getFinish();
+            long duration = results.getDuration();
+            out.write(String.format(pairs .getKey() + " " + start + " " + finish + " " + duration + "\n"));
+        }
+        out.close();
+    }
+
+    public void startDumpsysSurfaceFlinger(Bundle parameters, String view) {
+        if (Boolean.parseBoolean(parameters.getString("dumpsys_enabled"))) {
+            initDumpsysSurfaceFlinger(parameters.getString("package"), view);
+        }
+    }
+
+    public void stopDumpsysSurfaceFlinger(Bundle parameters, String view,
+                                          String filename) throws Exception {
+        if (Boolean.parseBoolean(parameters.getString("dumpsys_enabled"))) {
+            File out_file = new File(parameters.getString("output_dir"), filename);
+            exitDumpsysSurfaceFlinger(parameters.getString("package"), view, out_file);
+          }
+    }
+
+    public void startDumpsysGfxInfo(Bundle parameters) {
+        if (Boolean.parseBoolean(parameters.getString("dumpsys_enabled"))) {
+            initDumpsysGfxInfo(parameters.getString("package"));
+          }
+    }
+
+    public void stopDumpsysGfxInfo(Bundle parameters, String filename) throws Exception {
+      if (Boolean.parseBoolean(parameters.getString("dumpsys_enabled"))) {
+            File out_file = new File(parameters.getString("output_dir"), filename);
+            exitDumpsysGfxInfo(parameters.getString("package"), out_file);
+          }
+    }
 }
diff --git a/wlauto/workloads/gmail/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java b/wlauto/workloads/gmail/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java
index b2ab4dfe..58a0b516 100644
--- a/wlauto/workloads/gmail/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java
+++ b/wlauto/workloads/gmail/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java
@@ -1,24 +1,16 @@
 package com.arm.wlauto.uiauto.gmail;
 
 import android.os.Bundle;
-import android.os.SystemClock;
 
 // 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;
 
-import java.io.BufferedWriter;
-import java.io.FileWriter;
 import java.util.concurrent.TimeUnit;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Map.Entry;
 
 public class UiAutomation extends UxPerfUiAutomation {
 
@@ -55,7 +47,7 @@ public class UiAutomation extends UxPerfUiAutomation {
                                             .className("android.widget.ListView"));
         if (!converationView.waitForExists(networkTimeout)) {
             throw new UiObjectNotFoundException("Could not find \"converationView\".");
-        };
+        }
     }
 
     public void clickNewMail() throws Exception {
@@ -112,9 +104,9 @@ public class UiAutomation extends UxPerfUiAutomation {
         UiObject attachIcon = getUiObjectByResourceId("com.google.android.gm:id/add_attachment",
                                                       "android.widget.TextView");
 
-        String [] imageFiles = {"1.jpg", "2.jpg", "3.jpg", "4.jpg", "5.jpg"};
+        String[] imageFiles = {"1.jpg", "2.jpg", "3.jpg", "4.jpg", "5.jpg"};
 
-        for ( int i=0; i < imageFiles.length; i++) {
+        for ( int i = 0; i < imageFiles.length; i++) {
             result.start();
 
             clickUiObject(attachIcon, timeout);
@@ -174,21 +166,4 @@ public class UiAutomation extends UxPerfUiAutomation {
             timingResults.put(String.format("AttachFiles" + "_" + file), result);
         }
     }
-
-    private void writeResultsToFile(LinkedHashMap timingResults, String file) throws Exception {
-        // Write out the key/value pairs to the instrumentation log file
-        FileWriter fstream = new FileWriter(file);
-        BufferedWriter out = new BufferedWriter(fstream);
-        Iterator<Entry<String, Timer>> it = timingResults.entrySet().iterator();
-
-        while (it.hasNext()) {
-            Map.Entry<String, Timer> pairs = it.next();
-            Timer results = pairs.getValue();
-            long start = results.getStart();
-            long finish = results.getFinish();
-            long duration = results.getDuration();
-            out.write(String.format(pairs.getKey() + " " + start + " " + finish + " " + duration + "\n"));
-        }
-        out.close();
-    }
 }
diff --git a/wlauto/workloads/googlephotos/__init__.py b/wlauto/workloads/googlephotos/__init__.py
index db0107b3..f041defe 100644
--- a/wlauto/workloads/googlephotos/__init__.py
+++ b/wlauto/workloads/googlephotos/__init__.py
@@ -39,8 +39,6 @@ class Googlephotos(AndroidUiAutoBenchmark):
     def __init__(self, device, **kwargs):
         super(Googlephotos, self).__init__(device, **kwargs)
         self.output_file = os.path.join(self.device.working_directory, self.instrumentation_log)
-        self.camera_dir = self.device.path.join(self.device.external_storage_directory,
-                                                'DCIM/Camera/')
 
     def validate(self):
         super(Googlephotos, self).validate()
@@ -56,7 +54,7 @@ class Googlephotos(AndroidUiAutoBenchmark):
             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.camera_dir, wa_file),
+                                      os.path.join(self.device.working_directory, wa_file),
                                       timeout=300)
 
         # Force a re-index of the mediaserver cache to pick up new files
@@ -91,9 +89,8 @@ class Googlephotos(AndroidUiAutoBenchmark):
                                       context.output_directory)
                 self.device.delete_file(os.path.join(self.device.working_directory, entry))
 
-        for entry in self.device.listdir(self.camera_dir):
             if entry.startswith(self.file_prefix) and entry.endswith(".jpg"):
-                self.device.delete_file(os.path.join(self.camera_dir, entry))
+                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/googlephotos/com.arm.wlauto.uiauto.googlephotos.jar b/wlauto/workloads/googlephotos/com.arm.wlauto.uiauto.googlephotos.jar
index 2a4fdd3dfe20bdec746f079613637275d236be80..cf790ce49740a4abeb93a8a4001c0b1ac8abf7c2 100644
GIT binary patch
delta 10968
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
G00014kDNyU

delta 10770
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
Qd{~p3D=!8=DgXcg0394Nf&c&j

diff --git a/wlauto/workloads/googlephotos/uiauto/build.sh b/wlauto/workloads/googlephotos/uiauto/build.sh
index f60c0b43..dc6235ec 100755
--- a/wlauto/workloads/googlephotos/uiauto/build.sh
+++ b/wlauto/workloads/googlephotos/uiauto/build.sh
@@ -1,9 +1,9 @@
 #!/bin/bash
 
 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', '*.class')"`
+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_class $class_dir
+cp $base_classes $class_dir
 
 ant build
 
diff --git a/wlauto/workloads/googlephotos/uiauto/project.properties b/wlauto/workloads/googlephotos/uiauto/project.properties
index 916037e3..ce39f2d0 100644
--- a/wlauto/workloads/googlephotos/uiauto/project.properties
+++ b/wlauto/workloads/googlephotos/uiauto/project.properties
@@ -11,4 +11,4 @@
 #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
 
 # Project target.
-target=android-23
+target=android-18
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 1c7a8c22..b9d9b81e 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
@@ -1,8 +1,6 @@
 package com.arm.wlauto.uiauto.googlephotos;
 
 import android.os.Bundle;
-import android.graphics.Point;
-import android.graphics.Rect;
 
 // Import the uiautomator libraries
 import com.android.uiautomator.core.UiObject;
@@ -11,9 +9,6 @@ import com.android.uiautomator.core.UiSelector;
 
 import com.arm.wlauto.uiauto.UxPerfUiAutomation;
 
-import java.io.File;
-import java.io.FileWriter;
-import java.io.BufferedWriter;
 import java.util.concurrent.TimeUnit;
 import java.util.LinkedHashMap;
 import java.util.Iterator;
@@ -25,21 +20,16 @@ public class UiAutomation extends UxPerfUiAutomation {
     public static String TAG = "uxperf_googlephotos";
 
     public Bundle parameters;
-    private long viewTimeout =  TimeUnit.SECONDS.toMillis(20);
+    private long viewTimeout =  TimeUnit.SECONDS.toMillis(10);
     private LinkedHashMap<String, Timer> timingResults = new LinkedHashMap<String, Timer>();
 
     public void runUiAutomation() throws Exception {
-        Timer result = new Timer();
-        result.start();
         parameters = getParams();
 
         dismissWelcomeView();
         gesturesTest();
         editPhotoTest();
 
-        result.end();
-        timingResults.put("total", result);
-
         writeResultsToFile(timingResults, parameters.getString("output_file"));
     }
 
@@ -50,10 +40,10 @@ public class UiAutomation extends UxPerfUiAutomation {
 
         sleep(3); // Pause while splash screen loads
 
-        UiObject getStarteddButton =
+        UiObject getStartedButton =
             getUiObjectByResourceId("com.google.android.apps.photos:id/get_started",
                                     "android.widget.Button");
-        getStarteddButton.clickAndWaitForNewWindow();
+        getStartedButton.clickAndWaitForNewWindow();
 
         UiObject welcomeButton =
             getUiObjectByResourceId("com.google.android.apps.photos:id/name",
@@ -79,7 +69,7 @@ public class UiAutomation extends UxPerfUiAutomation {
         nextButton.clickAndWaitForNewWindow();
     }
 
-    private void gesturesTest () throws Exception {
+    private void gesturesTest() throws Exception {
         String testTag = "gestures";
 
         // Perform a range of swipe tests while browsing photo gallery
@@ -112,10 +102,10 @@ public class UiAutomation extends UxPerfUiAutomation {
 
             if (!view.waitForExists(viewTimeout)) {
                 throw new UiObjectNotFoundException("Could not find \"photo view\".");
-            };
+            }
 
-            startDumpsysGfxInfo();
-            startDumpsysSurfaceFlinger(viewName);
+            startDumpsysGfxInfo(parameters);
+            startDumpsysSurfaceFlinger(parameters, viewName);
 
             Timer results = new Timer();
 
@@ -133,8 +123,8 @@ public class UiAutomation extends UxPerfUiAutomation {
                     break;
             }
 
-            stopDumpsysSurfaceFlinger(viewName, surfFlingerlogName);
-            stopDumpsysGfxInfo(gfxInfologName);
+            stopDumpsysSurfaceFlinger(parameters, viewName, surfFlingerlogName);
+            stopDumpsysGfxInfo(parameters, gfxInfologName);
 
             timingResults.put(runName, results);
         }
@@ -172,9 +162,9 @@ public class UiAutomation extends UxPerfUiAutomation {
         timingResults.put(testTag, result);
     }
 
-    // Helper to click on an individual photographs based on index in Camera gallery.
-    private void selectPhoto(int index) throws Exception {
-        UiObject cameraHeading = new UiObject(new UiSelector().text("Camera"));
+    // Helper to click on an individual photographs based on index in wa-working gallery.
+    private void selectPhoto(final int index) throws Exception {
+        UiObject cameraHeading = new UiObject(new UiSelector().text("wa-working"));
         cameraHeading.clickAndWaitForNewWindow();
 
         UiObject photo =
@@ -183,109 +173,4 @@ public class UiAutomation extends UxPerfUiAutomation {
                                          .index(index)));
         photo.click();
     }
-
-    // Helper for testing zoom facility. NOTE: the built in UiObject methods
-    // pinchIn() and pinchOut() do not zoom appropriately for this application.
-    private Timer uiObjectVertPinchTest(
-            UiObject view, PinchType direction,
-            int steps, int percent) throws Exception {
-
-        Timer results = new Timer();
-        results.start();
-
-        final int FINGER_TOUCH_HALF_WIDTH = 20;
-
-        // make value between 1 and 100
-        percent = (percent < 0) ? 1 : (percent > 100) ? 100 : percent;
-        float percentage = percent / 100f;
-
-        Rect rect = view.getVisibleBounds();
-        if (rect.width() <= FINGER_TOUCH_HALF_WIDTH * 2)
-            throw new IllegalStateException("Object width is too small for operation");
-
-        // start from the same point at the center of the control
-        Point startPoint1 = new Point(rect.centerX(), rect.centerY() + FINGER_TOUCH_HALF_WIDTH);
-        Point startPoint2 = new Point(rect.centerX(), rect.centerY() - FINGER_TOUCH_HALF_WIDTH);
-
-        // End at the top-center and bottom-center of the control
-        Point endPoint1 = new Point(rect.centerX(), rect.centerY() + (int) ((rect.height() / 2) * percentage));
-        Point endPoint2 = new Point(rect.centerX(), rect.centerY() - (int) ((rect.height() / 2) * percentage));
-
-        if (direction.equals(PinchType.IN)) {
-            view.performTwoPointerGesture(endPoint1, endPoint2, startPoint1, startPoint2, steps);
-        } else if (direction.equals(PinchType.OUT)) {
-            view.performTwoPointerGesture(startPoint1, startPoint2, endPoint1, endPoint2, steps);
-        }
-
-        results.end();
-
-        return results;
-    }
-
-    private class GestureTestParams {
-        GestureType gestureType;
-        Direction gestureDirection;
-        PinchType pinchType;
-        private int percent;
-        private int steps;
-
-        GestureTestParams(GestureType gesture, Direction direction, int steps) {
-            this.gestureType = gesture;
-            this.gestureDirection = direction;
-            this.pinchType = PinchType.NULL;
-            this.steps = steps;
-            this.percent = 0;
-        }
-
-        GestureTestParams(GestureType gesture, PinchType pinchType, int steps, int percent) {
-            this.gestureType = gesture;
-            this.gestureDirection = Direction.NULL;
-            this.pinchType = pinchType;
-            this.steps = steps;
-            this.percent = percent;
-        }
-    }
-
-    private void writeResultsToFile(LinkedHashMap timingResults, String file) throws Exception {
-        // Write out the key/value pairs to the instrumentation log file
-        FileWriter fstream = new FileWriter(file);
-        BufferedWriter out = new BufferedWriter(fstream);
-        Iterator<Entry<String, Timer>> it = timingResults.entrySet().iterator();
-
-        while (it.hasNext()) {
-            Map.Entry<String, Timer> pairs = it.next();
-            Timer results = pairs.getValue();
-            long start = results.getStart();
-            long finish = results.getFinish();
-            long duration = results.getDuration();
-            out.write(String.format(pairs .getKey() + " " + start + " " + finish + " " + duration + "\n"));
-        }
-        out.close();
-    }
-
-    private void startDumpsysSurfaceFlinger(String view) {
-        if (Boolean.parseBoolean(parameters.getString("dumpsys_enabled"))) {
-            initDumpsysSurfaceFlinger(parameters.getString("package"), view);
-        }
-    }
-
-    private void stopDumpsysSurfaceFlinger(String view, String filename) throws Exception {
-        if (Boolean.parseBoolean(parameters.getString("dumpsys_enabled"))) {
-            File out_file = new File(parameters.getString("output_dir"), filename);
-            exitDumpsysSurfaceFlinger(parameters.getString("package"), view, out_file);
-          }
-    }
-
-    private void startDumpsysGfxInfo() {
-        if (Boolean.parseBoolean(parameters.getString("dumpsys_enabled"))) {
-            initDumpsysGfxInfo(parameters.getString("package"));
-          }
-    }
-
-    private void stopDumpsysGfxInfo(String filename) throws Exception {
-      if (Boolean.parseBoolean(parameters.getString("dumpsys_enabled"))) {
-            File out_file = new File(parameters.getString("output_dir"), filename);
-            exitDumpsysGfxInfo(parameters.getString("package"), out_file);
-          }
-    }
 }
diff --git a/wlauto/workloads/reader/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java b/wlauto/workloads/reader/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java
index 41a3ceac..f2334102 100755
--- a/wlauto/workloads/reader/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java
+++ b/wlauto/workloads/reader/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java
@@ -7,16 +7,10 @@ import android.os.SystemClock;
 // 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.core.UiCollection;
-import com.android.uiautomator.testrunner.UiAutomatorTestCase;
 
 import com.arm.wlauto.uiauto.UxPerfUiAutomation;
 
-import java.io.File;
-import java.io.FileWriter;
-import java.io.BufferedWriter;
 import java.util.concurrent.TimeUnit;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
@@ -33,8 +27,6 @@ public class UiAutomation extends UxPerfUiAutomation {
     private LinkedHashMap<String, Timer> timingResults = new LinkedHashMap<String, Timer>();
 
     public void runUiAutomation() throws Exception {
-        Timer result = new Timer();
-        result.start();
         parameters = getParams();
 
         dismissWelcomeView();
@@ -45,12 +37,9 @@ public class UiAutomation extends UxPerfUiAutomation {
 
         gesturesTest("Getting Started.pdf");
 
-        String [] searchStrings = {"Glossary", "cortex"};
+        String[] searchStrings = {"Glossary", "cortex"};
         searchPdfTest("cortex_m4", searchStrings);
 
-        result.end();
-        timingResults.put("Total", result);
-
         writeResultsToFile(timingResults, parameters.getString("output_file"));
     }
 
@@ -73,7 +62,7 @@ public class UiAutomation extends UxPerfUiAutomation {
         do {
             i += 10;
             tapDisplay(webViewCoords.centerX(), webViewCoords.centerY() + i);
-        } while ( welcomeView.exists() || i < webViewCoords.top  );
+        } while (welcomeView.exists() || i < webViewCoords.top);
     }
 
     private void signInOnline(Bundle parameters) throws Exception {
@@ -139,10 +128,10 @@ public class UiAutomation extends UxPerfUiAutomation {
                                                             .className("android.widget.Button"));
         if (allowButton.waitForExists(timeout)) {
             allowButton.clickAndWaitForNewWindow(timeout);
-        };
+        }
     }
 
-    private void openFile(String filename) throws Exception {
+    private void openFile(final String filename) throws Exception {
 
         String TestTag = "openfile";
 
@@ -184,7 +173,7 @@ public class UiAutomation extends UxPerfUiAutomation {
         return result;
     }
 
-    private Timer searchFileList(String searchText) throws Exception {
+    private Timer searchFileList(final String searchText) throws Exception {
         // Enter search text into the file searchBox.  This will automatically filter the list.
         UiObject searchBox = getUiObjectByResourceId("android:id/search_src_text",
                                                      "android.widget.EditText");
@@ -196,7 +185,7 @@ public class UiAutomation extends UxPerfUiAutomation {
         return result;
     }
 
-    private Timer openFileFromList(String file) throws Exception {
+    private Timer openFileFromList(final String file) throws Exception {
         // Open a file from a file list view by searching for UiObjects containing the doc title.
         UiObject fileObject = getUiObjectByText(file, "android.widget.TextView");
         Timer result = new Timer();
@@ -212,31 +201,7 @@ public class UiAutomation extends UxPerfUiAutomation {
         return result;
     }
 
-    private class GestureTestParams {
-        GestureType gestureType;
-        Direction gestureDirection;
-        PinchType pinchType;
-        int percent;
-        int steps;
-
-        GestureTestParams(GestureType gesture, Direction direction, int steps) {
-            this.gestureType = gesture;
-            this.gestureDirection = direction;
-            this.pinchType = PinchType.NULL;
-            this.steps = steps;
-            this.percent = 0;
-        }
-
-        GestureTestParams(GestureType gesture, PinchType pinchType, int steps, int percent) {
-            this.gestureType = gesture;
-            this.gestureDirection = Direction.NULL;
-            this.pinchType = pinchType;
-            this.steps = steps;
-            this.percent = percent;
-        }
-    }
-
-    private void gesturesTest (String filename) throws Exception {
+    private void gesturesTest(final String filename) throws Exception {
 
         String TestTag = "gestures";
 
@@ -268,8 +233,8 @@ public class UiAutomation extends UxPerfUiAutomation {
 
             UiObject view = new UiObject(new UiSelector().resourceId("com.adobe.reader:id/viewPager"));
 
-            startDumpsysGfxInfo();
-            startDumpsysSurfaceFlinger(viewName);
+            startDumpsysGfxInfo(parameters);
+            startDumpsysSurfaceFlinger(parameters, viewName);
 
             Timer results = new Timer();
 
@@ -287,8 +252,8 @@ public class UiAutomation extends UxPerfUiAutomation {
                     break;
             }
 
-            stopDumpsysSurfaceFlinger(viewName, surfFlingerlogName);
-            stopDumpsysGfxInfo(gfxInfologName);
+            stopDumpsysSurfaceFlinger(parameters, viewName, surfFlingerlogName);
+            stopDumpsysGfxInfo(parameters, gfxInfologName);
 
             timingResults.put(runName, results);
         }
@@ -296,7 +261,7 @@ public class UiAutomation extends UxPerfUiAutomation {
         exitDocument();
     }
 
-    private void searchPdfTest (String filename, String [] searchStrings) throws Exception {
+    private void searchPdfTest(final String filename, final String[] searchStrings) throws Exception {
 
         String TestTag = "search";
 
@@ -305,7 +270,7 @@ public class UiAutomation extends UxPerfUiAutomation {
         // Get the page view for the opened document which we can use for pinch actions
         UiObject pageView = getUiObjectByResourceId("com.adobe.reader:id/pageView",
                                                     "android.widget.RelativeLayout");
-        for ( int i=0; i < searchStrings.length; i++) {
+        for (int i = 0; i < searchStrings.length; i++) {
             timingResults.put(String.format(TestTag + "_" + i),
                                             searchTest(searchStrings[i]));
         }
@@ -313,7 +278,7 @@ public class UiAutomation extends UxPerfUiAutomation {
         exitDocument();
     }
 
-    private Timer searchTest(String searchText) throws Exception {
+    private Timer searchTest(final String searchText) throws Exception {
         // Click on the search button icon and enter text in the box.  This closes the keyboad
         // so click the box again and press Enter to start the search.
         UiObject searchButton = getUiObjectByResourceId("com.adobe.reader:id/document_view_search_icon",
@@ -356,47 +321,4 @@ public class UiAutomation extends UxPerfUiAutomation {
         UiObject upButton = getUiObjectByResourceId("android:id/up", "android.widget.ImageView" );
         upButton.clickAndWaitForNewWindow();
     }
-
-    private void writeResultsToFile(LinkedHashMap timingResults, String file) throws Exception {
-        // Write out the key/value pairs to the instrumentation log file
-        FileWriter fstream = new FileWriter(file);
-        BufferedWriter out = new BufferedWriter(fstream);
-        Iterator<Entry<String, Timer>> it = timingResults.entrySet().iterator();
-
-        while (it.hasNext()) {
-            Map.Entry<String, Timer> pairs = it.next();
-            Timer results = pairs.getValue();
-            long start = results.getStart();
-            long finish = results.getFinish();
-            long duration = results.getDuration();
-            out.write(String.format(pairs.getKey() + " " + start + " " + finish + " " + duration + "\n"));
-        }
-        out.close();
-    }
-
-    private void startDumpsysSurfaceFlinger(String view) {
-        if (Boolean.parseBoolean(parameters.getString("dumpsys_enabled"))) {
-            initDumpsysSurfaceFlinger(parameters.getString("package"), view);
-        }
-    }
-
-    private void stopDumpsysSurfaceFlinger(String view, String filename) throws Exception {
-        if (Boolean.parseBoolean(parameters.getString("dumpsys_enabled"))) {
-            File out_file = new File(parameters.getString("output_dir"), filename);
-            exitDumpsysSurfaceFlinger(parameters.getString("package"), view, out_file);
-          }
-    }
-
-    private void startDumpsysGfxInfo() {
-        if (Boolean.parseBoolean(parameters.getString("dumpsys_enabled"))) {
-            initDumpsysGfxInfo(parameters.getString("package"));
-          }
-    }
-
-    private void stopDumpsysGfxInfo(String filename) throws Exception {
-      if (Boolean.parseBoolean(parameters.getString("dumpsys_enabled"))) {
-            File out_file = new File(parameters.getString("output_dir"), filename);
-            exitDumpsysGfxInfo(parameters.getString("package"), out_file);
-          }
-    }
 }

From d77b29165f1e2e5e088a4e15a58b437a84455688 Mon Sep 17 00:00:00 2001
From: James Hartley <james.hartley@arm.com>
Date: Thu, 5 May 2016 11:05:06 +0100
Subject: [PATCH 6/6] Fixes for Reader/Gmail/Photos

Check in missing UiAutomation .class files
Fix generation and deletion of dump sys logs including renaming to a standard [test tag]_[test number].log format
Improved Reader to run across a range of devices with subtlety different layouts and views
---
 wlauto/common/android/BaseUiAutomation.class  | Bin 6748 -> 8225 bytes
 .../common/android/UxPerfUiAutomation$1.class | Bin 917 -> 917 bytes
 .../UxPerfUiAutomation$Direction.class        | Bin 1345 -> 1345 bytes
 ...UxPerfUiAutomation$GestureTestParams.class | Bin 0 -> 1710 bytes
 .../UxPerfUiAutomation$GestureType.class      | Bin 1287 -> 1287 bytes
 .../UxPerfUiAutomation$PinchType.class        | Bin 1249 -> 1249 bytes
 .../android/UxPerfUiAutomation$Timer.class    | Bin 1118 -> 1118 bytes
 .../common/android/UxPerfUiAutomation.class   | Bin 7329 -> 10182 bytes
 wlauto/workloads/gmail/__init__.py            |  31 +++++++++---------
 .../gmail/com.arm.wlauto.uiauto.gmail.jar     | Bin 9695 -> 10848 bytes
 .../com.arm.wlauto.uiauto.googlephotos.jar    | Bin 11215 -> 11107 bytes
 .../com/arm/wlauto/uiauto/UiAutomation.java   |  30 ++++++++++++++---
 wlauto/workloads/reader/__init__.py           |  29 ++++++++--------
 .../reader/com.arm.wlauto.uiauto.reader.jar   | Bin 11674 -> 12445 bytes
 .../com/arm/wlauto/uiauto/UiAutomation.java   |   2 +-
 15 files changed, 55 insertions(+), 37 deletions(-)
 create mode 100644 wlauto/common/android/UxPerfUiAutomation$GestureTestParams.class

diff --git a/wlauto/common/android/BaseUiAutomation.class b/wlauto/common/android/BaseUiAutomation.class
index e7aca274e6ee0c144314a6d14b041cf3826f4f98..168228ae40e3b5d3a7bbcfb1e0db3357b5685211 100644
GIT binary patch
literal 8225
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
TbHi{aE9d75!v`7U5<K#2VUDtZ

delta 2390
zcma)6d013c6#v~}#`orN6&Y|CW<V!tm>gU_jm-Y=3*{dq7BxdFOVLRp2~08DCzr}H
zv%FbimReRSxJ8j!S+=Wfwl8XBt8G?RmZ5ddd&6Vo(~sUC=bn4-`Tfpv&pWFM_T<NQ
z9^1MNz(C<QFapcmxDU%+bikj}pxym$6yX8BTw##5QpYL-58@%-tk&?bhDQu^#WEI;
z>R7|;S_2a63^bxi!+N&dpkbo{FP3T8#Or1qkMSC7HsHhKZ1MzaEgGKGv4z#A_@0=0
zVJmN+Ht-Cd)v=A&=L|fL?K)o2@S=v747`k24CLWe0};H&Y&%%nX<!##=i4_lys6_Y
z4R7<&ZUd(?s~2VO=y;cv_gK8ojy}-wA&34Ei;r1+!i1)vZ4o|Yv4_Q8zTL;-GYy|>
z_@a4^Sm$tHe{+9llSA#-LW4_Cs^LqCukf|RH~3bf80Scwi|-^3;ClgWR^9Ze(dy|M
zevtSPKS}(IgKDTA3E~(0D&Xutt+q<yHyn~E!S5RWkQj?U1p;cMBcMx6L{uQGD!YZ%
zZatDT35V4&J*&rT9A>~@64j`Y_!~zA2CMC^kQ(FeI{^Qnm9Hx$j^c=hV-o)g2)JwN
zswP*~2m4KyLI{T@lB947m)htqh;)%c6XdW&xLFvS#TY4)aYz$VimsxY6e%bb2&tpV
znQD+xJgB=!mADay1$>2dGi##3+PeDSl<L}Ouy<%iZ&OI&p-4p<i*y`O8;qPjJ#bLs
zR@^4BfW_@B7P44`JEic73@LmfQy^FE5xLEc$*s<wIECJ01T`&ZK_w>5M;eu%WSMGC
z&B-gLGXoBiIdCF`k)%nw1w0sq(X<NA$g~%ptTWo}Pa|9()81?1ljHV4GR{K<Aq2h2
zI1@SAQzFXM3QwSr`SanzK*F4l3&<y^?JQ5MU5N37aG^gg!o_4G5yk{MOQO?>sHBrJ
zb=2cOyFHFGp<_rw9B!M<jY%fkWb)x8d@qwDYI0Ph<x@lp(gLxzh`0i6apc62e8#yr
z$VUK|U<$<%AiWBg5@RB7H7;Xb@-&QWxSsAvUaDhU3$i!U#)0;LhZ8}e9dMW|ZNF|z
zC1%lqxrUilNqPZAyf8iEERHxxUVs5MazGr(XI8|C(Or&OVl7j9)3ah6NEh0Hx}cpY
z@%5}2+TPJYwsmA{WjBOY#u{4?^5nK4Jho$cqbQ%zCbQK?Mm)xNJQCB0;0jDPlbY9~
zfs*R!EjOQGJV6W58#CzHbaFD^PH#Ty&8OtEnbgP*YLU6Pk~Ak$a5ZM(DoW~9L`lB}
z8a3twTuZlZ^d;PNxSpD_tsw0G2E^hCEg@@aLe-GbUA20-DF$X(Z5rWo47FnzN<S?(
zC!ftG&4CQ$Vh%l6(sA5#EpD|aqm0=0os@0f|6;qzX7j5GpV_p&lf`GXduQ?8j9bjw
zAMoXsax-)@TWK*>Tp<%n5}Lwq=kBMvb7KPjc>NQrNmGgL%2Z`$cDTL0mL@cTj57%y
zUU6G*te}YqtzX0H$mJ)5(5Pbw+49ujAhbvehPi4w!dE81HQOT%$rHebyK4G%#IHUf
z{*L&#tn&9v7?*2kG_6gr?`r#_d2D95$sbG@Q%zLo^`^b`>!#SXO~GB}xCC|bVsqFC
zdI@XfrUZsi4;2M+Lj0>*gEnj<!?-&>XqUw8Q?ml9F_2A|9i3wCu`%qUIIA-s_uBS8
RwJs}2m|dM>mYNUT@E^=GYs&xt

diff --git a/wlauto/common/android/UxPerfUiAutomation$1.class b/wlauto/common/android/UxPerfUiAutomation$1.class
index 30a97eb30059b5f6db3ceb092e8f0bd180bd0c40..68c6d755ca4e880509a2505c6cf4d6443d7921c2 100644
GIT binary patch
delta 13
UcmbQrK9zk#0yE?M$%)J+03NOc7XSbN

delta 13
UcmbQrK9zk#0yE>x$%)J+03MJ85dZ)H

diff --git a/wlauto/common/android/UxPerfUiAutomation$Direction.class b/wlauto/common/android/UxPerfUiAutomation$Direction.class
index a3b7eb4e3390695dca11eddea3f9669ca3c4a24b..e7808a1fcd9175d29d21320c7f990e9979f257cc 100644
GIT binary patch
delta 31
icmX@eb&zWV2MeR&WKI@+AZf{B2P7+4mH|n5RwV#{-3NvM

delta 31
icmX@eb&zWV2MeS2WKI@+AZf{B2P7+4mH|n5RwV#`jR$T3

diff --git a/wlauto/common/android/UxPerfUiAutomation$GestureTestParams.class b/wlauto/common/android/UxPerfUiAutomation$GestureTestParams.class
new file mode 100644
index 0000000000000000000000000000000000000000..3f074e63e2b1e9400d4732362c1687143e1bb976
GIT binary patch
literal 1710
zcmd6oTTc@~6vzM5mabb?DR=RLf=J79DIlT(5)DSvq(Ksa_ob|`q}?{#t(R}%qsC7m
zNn_%JAHXl;J>HG~nYIhc%l6GaoHOUloHM^Yb7uPH_p8?cW^i3c0^<p^V?vH5rI^yu
zhm0IeOEDwGtd1^R(r{VByg>VoUGb})z5cjtYq&zkodbt}k#$|$TPawTid_+y&*e+S
zjO7(G4+~b+FJ-EZQX7xfZ14VtbCbTJ<vS&J<WQPLfn;NwTaIVv<-CTg0(xKy%!N-K
zL@}{mcHI1Ko&FllwWirp#vqCrwX*HyZPynNS%J2SZ<qPyaevpTj7$rdp*fi=zT~)$
zzbx=H9X>4d%D-wHKI))+*|AN5*h*>J7U;-1uDx0<ZrR?twN;>}D_6=}g-y$Iq}_1F
zWE})Lo5#y$S+hK=NZ(R;gd@?i?u{1VA#OLjMBv$fRJemK$*RgF?v<)+mD`T2R{zmE
zFtukrune5RSp$PuFkm2Qpc6d?7ID%*uN0?o%D{jWi|Em?B(Tu(9XoUgNx5gHV7WV)
zyIXs_YrF?7=i^%-FdI57XsA|#f?^6p)2a_wH*z_Fbl7b%#K)|iPhT8-r;y}`eTg2W
zSz4u8SfyEIAeoeBK|8{ggE&Wdp4JoEZPcUYcn!jQiHJE-L)4tCA!hEQt%kVS8>>Mx
zqct3Rq2h-q2cc2Eg^qVPf%oXf2k!EbIX~edK4X}(bM?%)K#%;5DgvQKqhyY#QHs=2
zHIke$MVD^SJ?EM@=TiUB?L(J*gly9FlJp4P7vg;--ZysJcP9Tqyr0DQrSO*PsRO)J
zfS2N$I$lclslrRiW+fhBWXJN;A{e6;fr$?4Va^@rC!e@6z`vL|bW`_H_fsdRM<D(H
Dwy@6A

literal 0
HcmV?d00001

diff --git a/wlauto/common/android/UxPerfUiAutomation$GestureType.class b/wlauto/common/android/UxPerfUiAutomation$GestureType.class
index 5e9e2410e3850dd666e5ac4eb4d4b30075c461c4..7651f530945e3d4337529cf574c170d8cf773b68 100644
GIT binary patch
delta 31
icmZqYYUkSUg_+T4@>gbkAgRh?2P9Ki8i3?e79{|l3JGHX

delta 31
icmZqYYUkSUg_%)j@>gbkAgRh?2P9Ki8i3?e79{|jx(Q1F

diff --git a/wlauto/common/android/UxPerfUiAutomation$PinchType.class b/wlauto/common/android/UxPerfUiAutomation$PinchType.class
index b1368c088b7ea9d428ee74935ae1e77075460e36..1ee135ef0c94491cd9d880c6ee6d51334ddd39fc 100644
GIT binary patch
delta 31
jcmaFJ`H*wNIc7%V$>*8%f#iQ?J0NMt(f}m)vnT-ow-yRo

delta 31
jcmaFJ`H*wNIc7%P$>*8%f#iQ?J0NMt(f}m)vnT-owZ;lU

diff --git a/wlauto/common/android/UxPerfUiAutomation$Timer.class b/wlauto/common/android/UxPerfUiAutomation$Timer.class
index 4babd8ee9f7bdea95193ce9ee370b154195db72f..3926a1eae8333148a0f018ddbdb5bc6e1b3dd406 100644
GIT binary patch
delta 67
zcmcb|agSreX(nD%22KVu20jLJ24Mz^$v2ohS*;n^8Ehu2G5c`Z16d9XA`Fg`tC?*W
TT_*1Uk{*-40!g3AMl3o2_?Qmv

delta 67
zcmcb|agSreX(nEM22KV820jKu24M!H$v2ohSxp((8O$cDG5c^@0$ElJA`I4(tC?*W
T?I!O4l1`Jq0!g>YMl3o2?;sAQ

diff --git a/wlauto/common/android/UxPerfUiAutomation.class b/wlauto/common/android/UxPerfUiAutomation.class
index ccd5d115010d2109b8ad40226b9be8d7af68f284..03ce92db58fac950197f06f8de4c3028a019f02c 100644
GIT binary patch
literal 10182
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

delta 2483
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
D9Wc1W

diff --git a/wlauto/workloads/gmail/__init__.py b/wlauto/workloads/gmail/__init__.py
index 78a05abe..a02646ab 100755
--- a/wlauto/workloads/gmail/__init__.py
+++ b/wlauto/workloads/gmail/__init__.py
@@ -66,30 +66,29 @@ class Gmail(AndroidUiAutoBenchmark):
     def update_result(self, context):
         super(Gmail, self).update_result(context)
 
-        if self.dumpsys_enabled:
-            self.device.pull_file(self.output_file, context.output_directory)
-            result_file = os.path.join(context.output_directory, self.instrumentation_log)
+        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<key>\w+)\s+(?P<value1>\d+)\s+(?P<value2>\d+)\s+(?P<value3>\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'))
+        with open(result_file, 'r') as wfh:
+            regex = re.compile(r'(?P<key>\w+)\s+(?P<value1>\d+)\s+(?P<value2>\d+)\s+(?P<value3>\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(Gmail, self).teardown(context)
 
         for file in self.device.listdir(self.device.working_directory):
-            if file.startswith (self.name) and file.endswith(".log"):
+            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))
-            if file.startswith (self.name) and file.endswith(".jpg"):
+            if file.endswith(".jpg"):
                 self.device.delete_file(os.path.join(self.device.working_directory, file))
 
         # Force a re-index of the mediaserver cache to pick up new files
diff --git a/wlauto/workloads/gmail/com.arm.wlauto.uiauto.gmail.jar b/wlauto/workloads/gmail/com.arm.wlauto.uiauto.gmail.jar
index 48aabdb73701ffe66b83220b41de60b08f3524b0..1ac26c1657de50badc6608c10b8addc60f76e53a 100644
GIT binary patch
delta 10598
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
A^Z)<=

delta 9436
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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 cf790ce49740a4abeb93a8a4001c0b1ac8abf7c2..41dd7af6796b07324f663dcec21ec441d7901db7 100644
GIT binary patch
delta 10897
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

delta 11006
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

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 b9d9b81e..a8bd6514 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
@@ -20,12 +20,14 @@ public class UiAutomation extends UxPerfUiAutomation {
     public static String TAG = "uxperf_googlephotos";
 
     public Bundle parameters;
-    private long viewTimeout =  TimeUnit.SECONDS.toMillis(10);
+    private int viewTimeoutSecs = 10;
+    private long viewTimeout =  TimeUnit.SECONDS.toMillis(viewTimeoutSecs);
     private LinkedHashMap<String, Timer> timingResults = new LinkedHashMap<String, Timer>();
 
     public void runUiAutomation() throws Exception {
         parameters = getParams();
 
+        confirmLocalFileAccess();
         dismissWelcomeView();
         gesturesTest();
         editPhotoTest();
@@ -33,16 +35,31 @@ public class UiAutomation extends UxPerfUiAutomation {
         writeResultsToFile(timingResults, parameters.getString("output_file"));
     }
 
+    private void confirmLocalFileAccess() throws Exception {
+        // First time run requires confirmation to allow access to local files
+        UiObject allowButton = new UiObject(new UiSelector().textContains("Allow")
+                                                            .className("android.widget.Button"));
+        if (allowButton.waitForExists(timeout)) {
+            allowButton.clickAndWaitForNewWindow(timeout);
+        }
+    }
+
+
     private 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(3); // Pause while splash screen loads
+        sleep(5); // Pause while splash screen loads
 
         UiObject getStartedButton =
-            getUiObjectByResourceId("com.google.android.apps.photos:id/get_started",
-                                    "android.widget.Button");
+            new UiObject (new UiSelector().textContains("Get started")
+                                          .className("android.widget.Button"));
+
+        tapDisplayCentre();
+        waitObject(getStartedButton, 10);
+
         getStartedButton.clickAndWaitForNewWindow();
 
         UiObject welcomeButton =
@@ -78,7 +95,6 @@ public class UiAutomation extends UxPerfUiAutomation {
         testParams.put("pinch_out", new GestureTestParams(GestureType.PINCH, PinchType.OUT, 100, 50));
         testParams.put("pinch_in", new GestureTestParams(GestureType.PINCH, PinchType.IN, 100, 50));
         testParams.put("swipe_right", new GestureTestParams(GestureType.UIDEVICE_SWIPE, Direction.RIGHT, 10));
-        testParams.put("swipe_up", new GestureTestParams(GestureType.UIDEVICE_SWIPE, Direction.UP, 10));
 
         Iterator<Entry<String, GestureTestParams>> it = testParams.entrySet().iterator();
 
@@ -128,6 +144,10 @@ public class UiAutomation extends UxPerfUiAutomation {
 
             timingResults.put(runName, results);
         }
+
+        UiObject navigateUpButton =
+            getUiObjectByDescription("Navigate Up", "android.widget.ImageButton");
+        navigateUpButton.click();
     }
 
     private void editPhotoTest() throws Exception {
diff --git a/wlauto/workloads/reader/__init__.py b/wlauto/workloads/reader/__init__.py
index 53c6fe3d..1a29e00b 100755
--- a/wlauto/workloads/reader/__init__.py
+++ b/wlauto/workloads/reader/__init__.py
@@ -65,21 +65,20 @@ class Reader(AndroidUiAutoBenchmark):
     def update_result(self, context):
         super(Reader, self).update_result(context)
 
-        if self.dumpsys_enabled:
-            self.device.pull_file(self.output_file, context.output_directory)
-            result_file = os.path.join(context.output_directory, self.instrumentation_log)
+        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<key>\w+)\s+(?P<value1>\d+)\s+(?P<value2>\d+)\s+(?P<value3>\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'))
+        with open(result_file, 'r') as wfh:
+            regex = re.compile(r'(?P<key>\w+)\s+(?P<value1>\d+)\s+(?P<value2>\d+)\s+(?P<value3>\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(Reader, self).teardown(context)
@@ -88,6 +87,6 @@ class Reader(AndroidUiAutoBenchmark):
                 self.device.delete_file(os.path.join(self.reader_local_dir, file))
 
         for file in self.device.listdir(self.device.working_directory):
-            if file.startswith (self.name) and file.endswith(".log"):
+            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))
diff --git a/wlauto/workloads/reader/com.arm.wlauto.uiauto.reader.jar b/wlauto/workloads/reader/com.arm.wlauto.uiauto.reader.jar
index aae224998bcb2b6c6b6ed4c10c9a604c8a0542e9..ba3eb3bfb32ae10804ae8101e5bca3bbd19d1e9a 100644
GIT binary patch
delta 12226
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
N&WSwD`A?4z_diWdGg$xt

delta 11458
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

diff --git a/wlauto/workloads/reader/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java b/wlauto/workloads/reader/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java
index f2334102..5255e58e 100755
--- a/wlauto/workloads/reader/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java
+++ b/wlauto/workloads/reader/uiauto/src/com/arm/wlauto/uiauto/UiAutomation.java
@@ -227,7 +227,7 @@ public class UiAutomation extends UxPerfUiAutomation {
             int percent = pair.getValue().percent;
 
             String runName = String.format(TestTag + "_" + pair.getKey());
-            String gfxInfologName =  String.format(TAG + "_" + runName + "_gfxInfo.log");
+            String gfxInfologName =  String.format(runName + "_gfxInfo.log");
             String surfFlingerlogName =  String.format(runName + "_surfFlinger.log");
             String viewName = new String("com.adobe.reader.viewer.ARViewerActivity");