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

geekbench: Improve UiAutomator timeouts for slow devices, fixes for rooted devices

Tested by running Mate 8 on the lowest cluster at the lowest available frequency

On rooted devices, skip attempting to pull log files from device.  This allows
the benchmark to run to completion without failure.

GB log files are stored in /data/data/com.primatelabs.geekbench/files and
not accessible without root.  On Chromebooks ( which have no adb root
rights) it is possible to copy from this folder manually after the test run.
This commit is contained in:
James Hartley 2016-11-24 16:22:10 +00:00
parent 850fcb24ab
commit 088709f290
3 changed files with 21 additions and 16 deletions

View File

@ -87,6 +87,14 @@ class Geekbench(AndroidUiAutoBenchmark):
Parameter('times', kind=int, default=1,
description=('Specfies the number of times the benchmark will be run in a "tight '
'loop", i.e. without performaing setup/teardown inbetween.')),
Parameter('timeout', kind=int, default=900,
description=('Timeout for a single iteration of the benchmark. This value is '
'multiplied by ``times`` to calculate the overall run timeout. ')),
Parameter('disable_update_result', kind=bool, default=False,
description=('If ``True`` the results file will not be pulled from the devices '
'/data/data/com.primatelabs.geekbench folder. This allows the '
'workload to be run on unrooted devices and the results extracted '
'manually later. ' )),
]
@property
@ -101,11 +109,12 @@ class Geekbench(AndroidUiAutoBenchmark):
super(Geekbench, self).__init__(device, **kwargs)
self.uiauto_params['version'] = self.version
self.uiauto_params['times'] = self.times
self.run_timeout = 10 * 60 * self.times
self.run_timeout = self.timeout * self.times
self.exact_apk_version = self.version
def update_result(self, context):
super(Geekbench, self).update_result(context)
if not self.disable_update_result:
major_version = versiontuple(self.version)[0]
update_method = getattr(self, 'update_result_{}'.format(major_version))
update_method(context)

View File

@ -35,9 +35,8 @@ import java.util.concurrent.TimeUnit;
public class UiAutomation extends UxPerfUiAutomation {
public static String TAG = "geekbench";
public static final int WAIT_TIMEOUT_1SEC = 1000;
public static final long WAIT_TIMEOUT_5MIN = TimeUnit.SECONDS.toMillis(5 * 60);
public static final long WAIT_TIMEOUT_10MIN = TimeUnit.SECONDS.toMillis(10 * 60);
public static final long WAIT_TIMEOUT_5SEC = TimeUnit.SECONDS.toMillis(5);
public static final long WAIT_TIMEOUT_20MIN = TimeUnit.SECONDS.toMillis(20 * 60);
public void runUiAutomation() throws Exception {
Bundle params = getParams();
@ -93,7 +92,7 @@ public class UiAutomation extends UxPerfUiAutomation {
// new UiObject(new UiSelector().textContains("Accept")
new UiObject(new UiSelector().resourceId("android:id/button1")
.className("android.widget.Button"));
if (!acceptButton.waitForExists(WAIT_TIMEOUT_1SEC)) {
if (!acceptButton.waitForExists(WAIT_TIMEOUT_5SEC)) {
throw new UiObjectNotFoundException("Could not find Accept button");
}
acceptButton.click();
@ -103,7 +102,7 @@ public class UiAutomation extends UxPerfUiAutomation {
UiObject runButton =
new UiObject(new UiSelector().textContains("Run Benchmarks")
.className("android.widget.Button"));
if (!runButton.waitForExists(WAIT_TIMEOUT_1SEC)) {
if (!runButton.waitForExists(WAIT_TIMEOUT_5SEC)) {
throw new UiObjectNotFoundException("Could not find Run button");
}
runButton.click();
@ -116,7 +115,7 @@ public class UiAutomation extends UxPerfUiAutomation {
UiObject runButton =
new UiObject(new UiSelector().resourceId("com.primatelabs.geekbench:id/runCpuBenchmarks")
.className("android.widget.Button"));
if (!runButton.waitForExists(WAIT_TIMEOUT_1SEC)) {
if (!runButton.waitForExists(WAIT_TIMEOUT_5SEC)) {
throw new UiObjectNotFoundException("Could not find Run button");
}
runButton.click();
@ -125,7 +124,7 @@ public class UiAutomation extends UxPerfUiAutomation {
public void waitForResultsv2() throws Exception {
UiSelector selector = new UiSelector();
UiObject resultsWebview = new UiObject(selector.className("android.webkit.WebView"));
if (!resultsWebview.waitForExists(WAIT_TIMEOUT_5MIN)) {
if (!resultsWebview.waitForExists(WAIT_TIMEOUT_20MIN)) {
throw new UiObjectNotFoundException("Did not see Geekbench results screen.");
}
}
@ -135,10 +134,7 @@ public class UiAutomation extends UxPerfUiAutomation {
UiObject runningTextView = new UiObject(selector.text("Running Benchmarks...")
.className("android.widget.TextView"));
if (!runningTextView.waitForExists(WAIT_TIMEOUT_1SEC)) {
throw new UiObjectNotFoundException("Did not get to Running Benchmarks... screen.");
}
if (!runningTextView.waitUntilGone(WAIT_TIMEOUT_10MIN)) {
if (!runningTextView.waitUntilGone(WAIT_TIMEOUT_20MIN)) {
throw new UiObjectNotFoundException("Did not get to Geekbench results screen.");
}
}
@ -160,7 +156,7 @@ public class UiAutomation extends UxPerfUiAutomation {
getUiDevice().pressMenu();
UiObject shareButton = new UiObject(selector.text("Share")
.className("android.widget.TextView"));
shareButton.waitForExists(WAIT_TIMEOUT_1SEC);
shareButton.waitForExists(WAIT_TIMEOUT_5SEC);
shareButton.click();
}
}