aboutsummaryrefslogtreecommitdiff
path: root/android_bench_suite/autotest.diff
diff options
context:
space:
mode:
Diffstat (limited to 'android_bench_suite/autotest.diff')
-rw-r--r--android_bench_suite/autotest.diff1057
1 files changed, 0 insertions, 1057 deletions
diff --git a/android_bench_suite/autotest.diff b/android_bench_suite/autotest.diff
deleted file mode 100644
index c2fed83b..00000000
--- a/android_bench_suite/autotest.diff
+++ /dev/null
@@ -1,1057 +0,0 @@
-diff --git a/server/site_tests/android_Binder/android_Binder.py b/server/site_tests/android_Binder/android_Binder.py
-new file mode 100644
-index 000000000..b233b586a
---- /dev/null
-+++ b/server/site_tests/android_Binder/android_Binder.py
-@@ -0,0 +1,57 @@
-+# Tests for android Binder
-+from __future__ import print_function
-+
-+import bench_config
-+import logging
-+import os
-+import re
-+
-+from autotest_lib.server import test
-+
-+class android_Binder(test.test):
-+ version = 1
-+
-+ def run_once(self, host=None):
-+ self.client = host
-+
-+ out_dir = os.path.join(bench_config.android_home,
-+ 'out/target/product/' + bench_config.product)
-+
-+ # Set binary directories
-+ lib_dir = os.path.join(out_dir, 'system/lib/libbinder.so')
-+ lib_dir_DUT = '/system/lib/libbinder.so'
-+ lib64_dir = os.path.join(out_dir, 'system/lib64/libbinder.so')
-+ lib64_dir_DUT = '/system/lib64/libbinder.so'
-+ bench_dir = os.path.join(out_dir,
-+ 'symbols/data/nativetest64',
-+ 'binderThroughputTest/binderThroughputTest')
-+ bench_dir_DUT = os.path.join('/data/local/tmp',
-+ 'binderThroughputTest')
-+
-+ # Push binary to the device
-+ print('Pushing binaries of Binder benchmark onto device!')
-+ host.send_file(bench_dir, bench_dir_DUT, delete_dest=True)
-+ host.send_file(lib_dir, lib_dir_DUT, delete_dest=True)
-+ host.send_file(lib64_dir, lib64_dir_DUT, delete_dest=True)
-+
-+ # Make sure the binary is executable
-+ self.client.run('chmod u+x ' + bench_dir_DUT)
-+
-+ print('Running tests on the device...')
-+ # First run creates bench_result
-+ self.client.run('taskset %s /data/local/tmp/'
-+ 'binderThroughputTest > /data/local/tmp/bench_result'
-+ % os.getenv('TEST_MODE'))
-+ # Next 4 runs add to bench_result
-+ for i in range(4):
-+ self.client.run('taskset %s /data/local/tmp/'
-+ 'binderThroughputTest >> '
-+ '/data/local/tmp/bench_result'
-+ % os.getenv('TEST_MODE'))
-+
-+ # Pull result from the device
-+ out_dir = bench_config.bench_suite_dir
-+ result_dir_DUT = '/data/local/tmp/bench_result'
-+
-+ host.get_file(result_dir_DUT, out_dir, delete_dest=True)
-+ print('Result has been pulled back to file bench_result!')
-diff --git a/server/site_tests/android_Binder/bench_config.py b/server/site_tests/android_Binder/bench_config.py
-new file mode 100644
-index 000000000..20f685eb9
---- /dev/null
-+++ b/server/site_tests/android_Binder/bench_config.py
-@@ -0,0 +1,19 @@
-+#!/bin/bash/python
-+import os
-+
-+home = os.environ["HOME"]
-+
-+android_home = os.getenv("ANDROID_HOME",
-+ default=os.path.join(home,
-+ 'android_source/master-googleplex/'))
-+bench_suite_dir = os.getenv('BENCH_SUITE_DIR',
-+ default=os.path.join(android_home,
-+ 'benchtoolchain'))
-+
-+synthmark_dir = 'framework/native/libs/binder'
-+
-+real_synthmark_dir = os.path.join(android_home, synthmark_dir)
-+
-+out_dir = os.path.join(android_home, 'out')
-+
-+product = os.getenv("PRODUCT", default="generic")
-diff --git a/server/site_tests/android_Binder/control b/server/site_tests/android_Binder/control
-new file mode 100644
-index 000000000..d91854b11
---- /dev/null
-+++ b/server/site_tests/android_Binder/control
-@@ -0,0 +1,19 @@
-+#Control
-+
-+NAME = "Binder"
-+AUTHOR = "Zhizhou Yang"
-+ATTRIBUTES = "suite:android_toolchain_benchmark"
-+TIME = "MEDIUM"
-+TEST_CATEGORY = "Functional"
-+TEST_CLASS = "application"
-+TEST_TYPE = "server"
-+
-+DOC = """
-+
-+"""
-+
-+def run_binder_test(machine):
-+ host = hosts.create_host(machine)
-+ job.run_test("android_Binder", host=host)
-+
-+parallel_simple(run_binder_test, machines)
-diff --git a/server/site_tests/android_Dex2oat/android_Dex2oat.py b/server/site_tests/android_Dex2oat/android_Dex2oat.py
-new file mode 100644
-index 000000000..dd6af0b53
---- /dev/null
-+++ b/server/site_tests/android_Dex2oat/android_Dex2oat.py
-@@ -0,0 +1,70 @@
-+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-+# Use of this source code is governed by a BSD-style license that can be
-+# found in the LICENSE file.
-+
-+import bench_config
-+import time
-+import logging
-+import os
-+import re
-+
-+from autotest_lib.client.common_lib import error
-+from autotest_lib.server import test
-+
-+class android_Dex2oat(test.test):
-+ version = 1
-+
-+ def run_once(self, host=None):
-+ self.client = host
-+
-+ out_dir = os.path.join(bench_config.android_home,
-+ 'out/target/product/',
-+ bench_config.product)
-+
-+ # Set binary directories
-+ bench_dir = os.path.join(out_dir, 'system/lib/libart-compiler.so')
-+ bench_dir_DUT = '/system/lib/libart-compiler.so'
-+ bench64_dir = os.path.join(out_dir, 'system/lib64/libart-compiler.so')
-+ bench64_dir_DUT = '/system/lib64/libart-compiler.so'
-+
-+ # Push libart-compiler.so to the device
-+ print('Pushing binaries of newly generated library onto device!')
-+ host.send_file(bench_dir, bench_dir_DUT, delete_dest=True)
-+ host.send_file(bench64_dir, bench64_dir_DUT, delete_dest=True)
-+
-+ # Set testcase directories
-+ test_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)),
-+ 'dex2oat_input')
-+ test_dir_DUT = '/data/local/tmp/'
-+
-+ # Push testcases to the device
-+ print('Pushing tests onto device!')
-+ host.send_file(test_dir, test_dir_DUT, delete_dest=True)
-+
-+ # Open file to write the result
-+ with open(os.path.join(bench_config.bench_suite_dir,
-+ 'bench_result'), 'w') as f:
-+
-+ # There are two benchmarks, chrome and camera.
-+ for i in range(2):
-+ f.write('Test %d:\n' % i)
-+ total_time = 0
-+ # Run benchmark for several times for accurancy
-+ for j in range(3):
-+ f.write('Iteration %d: ' % j)
-+ result = self.client.run('time taskset %s dex2oat'
-+ ' --dex-file=data/local/tmp/dex2oat_input/test%d.apk'
-+ ' --oat-file=data/local/tmp/dex2oat_input/test%d.oat'
-+ % (os.getenv('TEST_MODE'), i+1, i+1))
-+ # Find and record real time of the run
-+ time_str = ''
-+ for t in result.stdout.split() + result.stderr.split():
-+ if 'm' in t and 's' in t:
-+ time_str = t.split('m')
-+ break
-+ time_sec = float(time_str[0]) * 60
-+ time_sec += float(time_str[1].split('s')[0])
-+ f.write('User Time: %.2f seconds\n' % time_sec)
-+ total_time += time_sec
-+
-+ f.write('Total elapsed time: %.2f seconds.\n\n' % total_time)
-diff --git a/server/site_tests/android_Dex2oat/bench_config.py b/server/site_tests/android_Dex2oat/bench_config.py
-new file mode 100644
-index 000000000..d2855f22c
---- /dev/null
-+++ b/server/site_tests/android_Dex2oat/bench_config.py
-@@ -0,0 +1,15 @@
-+#!/bin/bash/python
-+import os
-+
-+home = os.environ["HOME"]
-+
-+android_home = os.getenv("ANDROID_HOME",
-+ default=os.path.join(home,
-+ 'android_source/master-googleplex/'))
-+bench_suite_dir = os.getenv('BENCH_SUITE_DIR',
-+ default=os.path.join(android_home,
-+ 'benchtoolchain'))
-+
-+out_dir = os.path.join(android_home, 'out')
-+
-+product = os.getenv("PRODUCT", default="generic")
-diff --git a/server/site_tests/android_Dex2oat/control b/server/site_tests/android_Dex2oat/control
-new file mode 100644
-index 000000000..763864f3a
---- /dev/null
-+++ b/server/site_tests/android_Dex2oat/control
-@@ -0,0 +1,21 @@
-+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-+# Use of this source code is governed by a BSD-style license that can be
-+# found in the LICENSE file.
-+
-+NAME = "Dex2oat"
-+AUTHOR = "Zhizhou Yang"
-+ATTRIBUTES = "suite:android_toolchain_benchmark"
-+TIME = "SHORT"
-+TEST_CATEGORY = "Functional"
-+TEST_CLASS = "kernel"
-+TEST_TYPE = "server"
-+
-+DOC = """
-+
-+"""
-+
-+def run_dex2oat(machine):
-+ host = hosts.create_host(machine)
-+ job.run_test("android_Dex2oat", host=host)
-+
-+parallel_simple(run_dex2oat, machines)
-diff --git a/server/site_tests/android_Hwui/android_Hwui.py b/server/site_tests/android_Hwui/android_Hwui.py
-new file mode 100644
-index 000000000..d1837e042
---- /dev/null
-+++ b/server/site_tests/android_Hwui/android_Hwui.py
-@@ -0,0 +1,67 @@
-+# Tests for android Hwui
-+from __future__ import print_function
-+
-+import bench_config
-+import logging
-+import os
-+import re
-+
-+from autotest_lib.server import test
-+
-+class android_Hwui(test.test):
-+ version = 1
-+
-+ def run_once(self, host=None):
-+ self.client = host
-+
-+ out_dir = os.path.join(bench_config.android_home,
-+ 'out/target/product/' + bench_config.product)
-+
-+ lib_dir = os.path.join(out_dir, 'system/lib/libhwui.so')
-+ lib_dir_DUT = '/system/lib/libhwui.so'
-+ lib64_dir = os.path.join(out_dir, 'system/lib64/libhwui.so')
-+ lib64_dir_DUT = '/system/lib64/libhwui.so'
-+ bench_dir = os.path.join(out_dir,
-+ 'symbols/data/nativetest64/',
-+ 'hwuimicro/hwuimicro')
-+ bench_dir_DUT = '/data/local/tmp/hwuimicro'
-+
-+ # Push binary to the device
-+ print('Pushing Hwui benchmark onto device!')
-+ host.send_file(bench_dir, bench_dir_DUT, delete_dest=True)
-+ host.send_file(lib_dir, lib_dir_DUT, delete_dest=True)
-+ host.send_file(lib64_dir, lib64_dir_DUT, delete_dest=True)
-+
-+ # Make sure the binary is executable
-+ self.client.run('chmod u+x ' + bench_dir_DUT)
-+
-+
-+ print('Running tests on the device...')
-+ self.client.run('taskset %s /data/local/tmp/hwuimicro'
-+ ' > /data/local/tmp/bench_result'
-+ % os.getenv('TEST_MODE'))
-+
-+ # Pull result from the device
-+ out_dir = bench_config.bench_suite_dir
-+ result_dir_DUT = '/data/local/tmp/bench_result'
-+
-+ host.get_file(result_dir_DUT, out_dir, delete_dest=True)
-+
-+ # Update total time of the test
-+ t = 0
-+ with open(os.path.join(out_dir, 'bench_result'), 'r') as fin:
-+
-+ for lines in fin:
-+ line = lines.split()
-+ print(line)
-+
-+ # Check if there is test result in this line
-+ if len(line) == 8:
-+ # Accumulate the Run time for the testcase
-+ t += int(line[2])
-+
-+ # Append total time to the file
-+ with open(os.path.join(out_dir, 'bench_result'), 'a') as fout:
-+ fout.write('\nTotal elapsed time: %d ns.\n' % t)
-+
-+ print('Result has been pulled back to file bench_result!')
-diff --git a/server/site_tests/android_Hwui/bench_config.py b/server/site_tests/android_Hwui/bench_config.py
-new file mode 100644
-index 000000000..a98d259f9
---- /dev/null
-+++ b/server/site_tests/android_Hwui/bench_config.py
-@@ -0,0 +1,19 @@
-+#!/bin/bash/python
-+import os
-+
-+home = os.environ["HOME"]
-+
-+android_home = os.getenv("ANDROID_HOME",
-+ default=os.path.join(home,
-+ 'android_source/master-googleplex/'))
-+bench_suite_dir = os.getenv('BENCH_SUITE_DIR',
-+ default=os.path.join(android_home,
-+ 'benchtoolchain'))
-+
-+hwui_dir = 'frameworks/base/libs/hwui/'
-+
-+real_hwui_dir = os.path.join(android_home, hwui_dir)
-+
-+out_dir = os.path.join(android_home, 'out')
-+
-+product = os.getenv("PRODUCT", default="generic")
-diff --git a/server/site_tests/android_Hwui/control b/server/site_tests/android_Hwui/control
-new file mode 100644
-index 000000000..89c47da20
---- /dev/null
-+++ b/server/site_tests/android_Hwui/control
-@@ -0,0 +1,19 @@
-+#Control
-+
-+NAME = "Hwui"
-+AUTHOR = "Zhizhou Yang"
-+ATTRIBUTES = "suite:android_toolchain_benchmark"
-+TIME = "MEDIUM"
-+TEST_CATEGORY = "Functional"
-+TEST_CLASS = "library"
-+TEST_TYPE = "server"
-+
-+DOC = """
-+
-+"""
-+
-+def run_hwui_test(machine):
-+ host = hosts.create_host(machine)
-+ job.run_test("android_Hwui", host=host)
-+
-+parallel_simple(run_hwui_test, machines)
-diff --git a/server/site_tests/android_Panorama/android_Panorama.py b/server/site_tests/android_Panorama/android_Panorama.py
-new file mode 100644
-index 000000000..db2a29cde
---- /dev/null
-+++ b/server/site_tests/android_Panorama/android_Panorama.py
-@@ -0,0 +1,53 @@
-+# Tests for android Panorama
-+from __future__ import print_function
-+
-+import bench_config
-+import logging
-+import os
-+import re
-+
-+from autotest_lib.server import test
-+
-+class android_Panorama(test.test):
-+ version = 1
-+
-+ def run_once(self, host=None):
-+ self.client = host
-+
-+ out_dir = os.path.join(bench_config.android_home,
-+ 'out/target/product/' + bench_config.product)
-+
-+ # Set binary directories
-+ bench_dir = os.path.join(out_dir,
-+ 'data/local/tmp/panorama_bench64')
-+ bench_dir_DUT = '/data/local/tmp/panorama_bench64'
-+
-+ # Set tests directories
-+ tests_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)),
-+ 'panorama_input')
-+ tests_dir_DUT = '/data/local/tmp/panorama_input/'
-+
-+ # Push binary to the device
-+ print('Pushing binaries of Panorama benchmark onto device!')
-+ host.send_file(bench_dir, bench_dir_DUT, delete_dest=True)
-+
-+ # Make sure the binary is executable
-+ self.client.run('chmod u+x ' + bench_dir_DUT)
-+
-+ # Push testcases to the device
-+ print('Pushing tests onto device!')
-+ host.send_file(tests_dir, tests_dir_DUT, delete_dest=True)
-+
-+ print('Running tests on the device...')
-+ self.client.run('taskset %s /data/local/tmp/panorama_bench64 '
-+ '/data/local/tmp/panorama_input/panorama_input/test '
-+ '/data/local/tmp/panorama.ppm'
-+ ' > /data/local/tmp/bench_result'
-+ % os.getenv('TEST_MODE'))
-+
-+ # Pull result from the device
-+ out_dir = bench_config.bench_suite_dir
-+ result_dir_DUT = '/data/local/tmp/bench_result'
-+
-+ host.get_file(result_dir_DUT, out_dir, delete_dest=True)
-+ print('Result has been pulled back to file bench_result!')
-diff --git a/server/site_tests/android_Panorama/bench_config.py b/server/site_tests/android_Panorama/bench_config.py
-new file mode 100644
-index 000000000..075beec76
---- /dev/null
-+++ b/server/site_tests/android_Panorama/bench_config.py
-@@ -0,0 +1,19 @@
-+#!/bin/bash/python
-+import os
-+
-+home = os.environ["HOME"]
-+
-+android_home = os.getenv("ANDROID_HOME",
-+ default=os.path.join(home,
-+ 'android_source/master-googleplex/'))
-+bench_suite_dir = os.getenv('BENCH_SUITE_DIR',
-+ default=os.path.join(android_home,
-+ 'benchtoolchain'))
-+
-+panorama_dir = 'perftests/panorama/'
-+
-+real_panorama_dir = os.path.join(android_home, panorama_dir)
-+
-+out_dir = os.path.join(android_home, 'out')
-+
-+product = os.getenv("PRODUCT", default="generic")
-diff --git a/server/site_tests/android_Panorama/control b/server/site_tests/android_Panorama/control
-new file mode 100644
-index 000000000..3cd589eed
---- /dev/null
-+++ b/server/site_tests/android_Panorama/control
-@@ -0,0 +1,19 @@
-+#Control
-+
-+NAME = "Panorama"
-+AUTHOR = "Zhizhou Yang"
-+ATTRIBUTES = "suite:android_toolchain_benchmark"
-+TIME = "MEDIUM"
-+TEST_CATEGORY = "Functional"
-+TEST_CLASS = "application"
-+TEST_TYPE = "server"
-+
-+DOC = """
-+
-+"""
-+
-+def run_panorama_test(machine):
-+ host = hosts.create_host(machine)
-+ job.run_test("android_Panorama", host=host)
-+
-+parallel_simple(run_panorama_test, machines)
-diff --git a/server/site_tests/android_SetDevice/android_SetDevice.py b/server/site_tests/android_SetDevice/android_SetDevice.py
-new file mode 100644
-index 000000000..7a7134d58
---- /dev/null
-+++ b/server/site_tests/android_SetDevice/android_SetDevice.py
-@@ -0,0 +1,77 @@
-+# Set device modes such as cpu frequency
-+from __future__ import print_function
-+
-+import logging
-+import os
-+import re
-+import time
-+
-+from autotest_lib.server import test
-+
-+def _get_cat_value(result):
-+ return result.stdout.split('\n')[0]
-+
-+class android_SetDevice(test.test):
-+ version = 1
-+
-+ def run_once(self, host=None):
-+ self.client = host
-+
-+ # Disable GPU
-+ self.client.run('setprop debug.rs.default-GPU-driver 1')
-+
-+ # Freeze system
-+ # Stop perfd, mpdecision and thermal-engine to ensure setting runs
-+ # without unexpected errors.
-+ self.client.run('stop thermal-engine')
-+ self.client.run('stop mpdecision')
-+ self.client.run('stop perfd')
-+
-+ # Set airplane mode on the device
-+ self.client.run('settings put global airplane_mode_on 1')
-+
-+ print('Setting frequency on the device...')
-+ frequency = os.getenv('FREQUENCY')
-+
-+ # Get number of cores on device
-+ result = self.client.run('ls /sys/devices/system/cpu/ '
-+ '| grep cpu[0-9].*')
-+ cores = result.stdout.splitlines()
-+ for core in cores:
-+ if core.startswith('cpu'):
-+ # First set all cores online
-+ online = os.path.join('/sys/devices/system/cpu', core, 'online')
-+ online_status = _get_cat_value(self.client.run('cat %s' % online))
-+ if online_status == '0':
-+ self.client.run('echo %s > %s' % ('1', online))
-+
-+ freq_path = os.path.join('/sys/devices/system/cpu', core,
-+ 'cpufreq')
-+
-+ # Check if the frequency user entered is legal or not.
-+ available_freq = self.client.run('cat %s/'
-+ 'scaling_available_frequencies'
-+ % (freq_path))
-+ available_freq_list = _get_cat_value(available_freq).split()
-+
-+ if frequency not in available_freq_list:
-+ raise ValueError('Wrong freqeuncy input, '
-+ 'please select from: \n%s'
-+ % (' '.join(available_freq_list)))
-+
-+ # Set frequency
-+ self.client.run('echo %s > %s/scaling_min_freq'
-+ % (frequency, freq_path))
-+ self.client.run('echo %s > %s/scaling_max_freq'
-+ % (frequency, freq_path))
-+
-+ # Sleep for 2 seconds, let device update the frequency.
-+ time.sleep(2)
-+
-+ # Get current frequency
-+ freq = self.client.run('cat %s/cpuinfo_cur_freq' % freq_path)
-+ f = _get_cat_value(freq)
-+ if f != frequency:
-+ raise RuntimeError('Expected frequency for %s to be %s, '
-+ 'but is %s' % (core, frequency, f))
-+ print('CPU frequency has been set to %s' % (frequency))
-diff --git a/server/site_tests/android_SetDevice/control b/server/site_tests/android_SetDevice/control
-new file mode 100644
-index 000000000..85163706d
---- /dev/null
-+++ b/server/site_tests/android_SetDevice/control
-@@ -0,0 +1,19 @@
-+# Control
-+
-+NAME = "SetDevice"
-+AUTHOR = "Zhizhou Yang"
-+ATTRIBUTES = "suite:android_toolchain_benchmark"
-+TIME = "MEDIUM"
-+TEST_CATEGORY = "Functional"
-+TEST_CLASS = "application"
-+TEST_TYPE = "server"
-+
-+DOC = """
-+Set the core frequency and which core online for devices.
-+"""
-+
-+def run_set_device_test(machine):
-+ host = hosts.create_host(machine)
-+ job.run_test("android_SetDevice", host=host)
-+
-+parallel_simple(run_set_device_test, machines)
-diff --git a/server/site_tests/android_Skia/android_Skia.py b/server/site_tests/android_Skia/android_Skia.py
-new file mode 100644
-index 000000000..fc8d09dab
---- /dev/null
-+++ b/server/site_tests/android_Skia/android_Skia.py
-@@ -0,0 +1,65 @@
-+# Tests for android Skia
-+from __future__ import print_function
-+
-+import bench_config
-+import logging
-+import os
-+import re
-+
-+from autotest_lib.server import test
-+
-+class android_Skia(test.test):
-+ version = 1
-+
-+ def run_once(self, host=None):
-+ self.client = host
-+
-+ out_dir = os.path.join(bench_config.android_home,
-+ 'out/target/product/' + bench_config.product)
-+
-+ # Set binary directories
-+ lib_dir = os.path.join(out_dir, 'system/lib/libskia.so')
-+ lib_dir_DUT = '/system/lib/libskia.so'
-+ lib64_dir = os.path.join(out_dir, 'system/lib64/libskia.so')
-+ lib64_dir_DUT = '/system/lib64/libskia.so'
-+ bench_dir = os.path.join(out_dir,
-+ 'data/nativetest64/',
-+ 'skia_nanobench/skia_nanobench')
-+ bench_dir_DUT = '/data/local/tmp/skia_nanobench'
-+
-+ # Push binary to the device
-+ print('Pushing Skia benchmark onto device!')
-+ host.send_file(bench_dir, bench_dir_DUT, delete_dest=True)
-+ host.send_file(lib_dir, lib_dir_DUT, delete_dest=True)
-+ host.send_file(lib64_dir, lib64_dir_DUT, delete_dest=True)
-+
-+ # Make sure the binary is executable
-+ self.client.run('chmod u+x ' + bench_dir_DUT)
-+
-+ # Set resource directory
-+ resource_dir = os.path.join(bench_config.real_skia_dir, 'resources')
-+ resource_dir_DUT = '/data/local/tmp/skia_resources/'
-+
-+ # Push binary to the device
-+ print('Pushing Skia resources onto device!')
-+ host.send_file(resource_dir, resource_dir_DUT, delete_dest=True)
-+
-+ # Run tests
-+ print('Running tests on the device...')
-+ try:
-+ self.client.run('taskset %s ./data/local/tmp/skia_nanobench'
-+ ' --outResultsFile /data/local/tmp/bench_result'
-+ ' --samples 25'
-+ ' --config nonrendering'
-+ % os.getenv('TEST_MODE'))
-+ except:
-+ # Ignore Abort caused failure
-+ None
-+
-+ # Pull result from the device
-+ out_dir = bench_config.bench_suite_dir
-+ result_dir_DUT = '/data/local/tmp/bench_result'
-+
-+ host.get_file(result_dir_DUT, out_dir, delete_dest=True)
-+
-+ print('Result has been pulled back to file bench_result!')
-diff --git a/server/site_tests/android_Skia/bench_config.py b/server/site_tests/android_Skia/bench_config.py
-new file mode 100644
-index 000000000..5d38d452f
---- /dev/null
-+++ b/server/site_tests/android_Skia/bench_config.py
-@@ -0,0 +1,19 @@
-+#!/bin/bash/python
-+import os
-+
-+home = os.environ["HOME"]
-+
-+android_home = os.getenv("ANDROID_HOME",
-+ default=os.path.join(home,
-+ 'android_source/master-googleplex/'))
-+bench_suite_dir = os.getenv('BENCH_SUITE_DIR',
-+ default=os.path.join(android_home,
-+ 'benchtoolchain'))
-+
-+skia_dir = 'external/skia'
-+
-+real_skia_dir = os.path.join(android_home, skia_dir)
-+
-+out_dir = os.path.join(android_home, 'out')
-+
-+product = os.getenv("PRODUCT", default="generic")
-diff --git a/server/site_tests/android_Skia/control b/server/site_tests/android_Skia/control
-new file mode 100644
-index 000000000..e38195a8c
---- /dev/null
-+++ b/server/site_tests/android_Skia/control
-@@ -0,0 +1,19 @@
-+#Control
-+
-+NAME = "Skia"
-+AUTHOR = "Zhizhou Yang"
-+ATTRIBUTES = "suite:android_toolchain_benchmark"
-+TIME = "MEDIUM"
-+TEST_CATEGORY = "Functional"
-+TEST_CLASS = "library"
-+TEST_TYPE = "server"
-+
-+DOC = """
-+
-+"""
-+
-+def run_skia_test(machine):
-+ host = hosts.create_host(machine)
-+ job.run_test("android_Skia", host=host)
-+
-+parallel_simple(run_skia_test, machines)
-diff --git a/server/site_tests/android_Synthmark/android_Synthmark.py b/server/site_tests/android_Synthmark/android_Synthmark.py
-new file mode 100644
-index 000000000..b317bd0f3
---- /dev/null
-+++ b/server/site_tests/android_Synthmark/android_Synthmark.py
-@@ -0,0 +1,48 @@
-+# Tests for android Synthmark
-+from __future__ import print_function
-+
-+import bench_config
-+import logging
-+import os
-+import re
-+
-+from autotest_lib.server import test
-+
-+class android_Synthmark(test.test):
-+ version = 1
-+
-+ def run_once(self, host=None):
-+ self.client = host
-+
-+ out_dir = os.path.join(bench_config.android_home,
-+ 'out/target/product/' + bench_config.product)
-+
-+ # Set binary directories
-+ bench_dir = os.path.join(out_dir,
-+ 'symbols/system/bin/synthmark')
-+ bench_dir_DUT = '/data/local/tmp/synthmark'
-+
-+ # Push binary to the device
-+ print('Pushing binaries of Synthmark benchmark onto device!')
-+ host.send_file(bench_dir, bench_dir_DUT, delete_dest=True)
-+
-+ # Make sure the binary is executable
-+ self.client.run('chmod u+x ' + bench_dir_DUT)
-+
-+ print('Running tests on the device...')
-+ # First run creates bench_result
-+ self.client.run('taskset %s /data/local/tmp/synthmark'
-+ ' > /data/local/tmp/bench_result'
-+ % os.getenv('TEST_MODE'))
-+ # Next 4 runs add to bench_result
-+ for i in range(4):
-+ self.client.run('taskset %s /data/local/tmp/synthmark'
-+ ' >> /data/local/tmp/bench_result'
-+ % os.getenv('TEST_MODE'))
-+
-+ # Pull result from the device
-+ out_dir = bench_config.bench_suite_dir
-+ result_dir_DUT = '/data/local/tmp/bench_result'
-+
-+ host.get_file(result_dir_DUT, out_dir, delete_dest=True)
-+ print('Result has been pulled back to file bench_result!')
-diff --git a/server/site_tests/android_Synthmark/bench_config.py b/server/site_tests/android_Synthmark/bench_config.py
-new file mode 100644
-index 000000000..7d7aacacd
---- /dev/null
-+++ b/server/site_tests/android_Synthmark/bench_config.py
-@@ -0,0 +1,19 @@
-+#!/bin/bash/python
-+import os
-+
-+home = os.environ["HOME"]
-+
-+android_home = os.getenv("ANDROID_HOME",
-+ default=os.path.join(home,
-+ 'android_source/master-googleplex/'))
-+bench_suite_dir = os.getenv('BENCH_SUITE_DIR',
-+ default=os.path.join(android_home,
-+ 'benchtoolchain'))
-+
-+synthmark_dir = 'synthmark'
-+
-+real_synthmark_dir = os.path.join(android_home, synthmark_dir)
-+
-+out_dir = os.path.join(android_home, 'out')
-+
-+product = os.getenv("PRODUCT", default="generic")
-diff --git a/server/site_tests/android_Synthmark/control b/server/site_tests/android_Synthmark/control
-new file mode 100644
-index 000000000..144766351
---- /dev/null
-+++ b/server/site_tests/android_Synthmark/control
-@@ -0,0 +1,19 @@
-+#Control
-+
-+NAME = "Synthmark"
-+AUTHOR = "Zhizhou Yang"
-+ATTRIBUTES = "suite:android_toolchain_benchmark"
-+TIME = "MEDIUM"
-+TEST_CATEGORY = "Functional"
-+TEST_CLASS = "application"
-+TEST_TYPE = "server"
-+
-+DOC = """
-+
-+"""
-+
-+def run_synthmark_test(machine):
-+ host = hosts.create_host(machine)
-+ job.run_test("android_Synthmark", host=host)
-+
-+parallel_simple(run_synthmark_test, machines)
-diff --git a/site_utils/set_device.py b/site_utils/set_device.py
-new file mode 100755
-index 000000000..abb8a8dcc
---- /dev/null
-+++ b/site_utils/set_device.py
-@@ -0,0 +1,110 @@
-+#!/usr/bin/python
-+from __future__ import print_function
-+
-+import argparse
-+import common
-+import logging
-+import os
-+import sys
-+
-+# Turn the logging level to INFO before importing other autotest code, to avoid
-+# having failed import logging messages confuse the test_droid user.
-+logging.basicConfig(level=logging.INFO)
-+
-+# Unfortunately, autotest depends on external packages for assorted
-+# functionality regardless of whether or not it is needed in a particular
-+# context. Since we can't depend on people to import these utilities in any
-+# principled way, we dynamically download code before any autotest imports.
-+try:
-+ import chromite.lib.terminal # pylint: disable=unused-import
-+ import django.http # pylint: disable=unused-import
-+except ImportError:
-+ # Ensure the chromite site-package is installed.
-+ import subprocess
-+ build_externals_path = os.path.join(
-+ os.path.dirname(os.path.dirname(os.path.realpath(__file__))),
-+ 'utils', 'build_externals.py')
-+ subprocess.check_call([build_externals_path, '--names_to_check',
-+ 'chromiterepo', 'django'])
-+ # Restart the script so python now finds the autotest site-packages.
-+ sys.exit(os.execv(__file__, sys.argv))
-+
-+from autotest_lib.client.common_lib import utils
-+from autotest_lib.server.hosts import adb_host
-+from autotest_lib.site_utils import test_runner_utils
-+from autotest_lib.site_utils import tester_feedback
-+
-+def _parse_arguments_internal(argv):
-+ """
-+ Parse command line arguments
-+
-+ @param argv: argument list to parse
-+
-+ @returns: tuple of parsed arguments and argv suitable for remote runs
-+
-+ @raises SystemExit if arguments are malformed, or required arguments
-+ are not present.
-+ """
-+
-+ parser = argparse.ArgumentParser(description='Set device cpu cores and '
-+ 'frequency.')
-+
-+ parser.add_argument('-s', '--serials', metavar='SERIALS',
-+ help='Comma separate list of device serials under '
-+ 'test.')
-+ parser.add_argument('-r', '--remote', metavar='REMOTE',
-+ default='localhost',
-+ help='hostname[:port] if the ADB device is connected '
-+ 'to a remote machine. Ensure this workstation '
-+ 'is configured for passwordless ssh access as '
-+ 'users "root" or "adb"')
-+ parser.add_argument('-q', '--frequency', type=int, default=960000,
-+ help='Specify the CPU frequency of the device, lower '
-+ 'frequency will slow down the performance but '
-+ 'reduce noise.')
-+
-+ return parser.parse_args(argv)
-+
-+def main(argv):
-+ """
-+ Entry point for set_device script.
-+
-+ @param argv: arguments list
-+ """
-+ arguments = _parse_arguments_internal(argv)
-+
-+ serials = arguments.serials
-+ if serials is None:
-+ result = utils.run(['adb', 'devices'])
-+ devices = adb_host.ADBHost.parse_device_serials(result.stdout)
-+ if len(devices) != 1:
-+ logging.error('Could not detect exactly one device; please select '
-+ 'one with -s: %s', devices)
-+ return 1
-+ serials = devices[0]
-+
-+ autotest_path = os.path.dirname(os.path.dirname(
-+ os.path.realpath(__file__)))
-+ site_utils_path = os.path.join(autotest_path, 'site_utils')
-+ realpath = os.path.realpath(__file__)
-+ site_utils_path = os.path.realpath(site_utils_path)
-+ host_attributes = {'serials': serials,
-+ 'os_type': 'android'}
-+ results_directory = test_runner_utils.create_results_directory(None)
-+
-+ logging.info('Start setting CPU frequency on the device...')
-+
-+ os.environ['FREQUENCY'] = str(arguments.frequency)
-+
-+ set_device = ['SetDevice']
-+ if test_runner_utils.perform_run_from_autotest_root(
-+ autotest_path, argv, set_device, arguments.remote,
-+ host_attributes=host_attributes,
-+ results_directory=results_directory):
-+ logging.error('Error while setting device!')
-+ return 1
-+
-+ return 0
-+
-+if __name__ == '__main__':
-+ sys.exit(main(sys.argv[1:]))
-diff --git a/site_utils/test_bench.py b/site_utils/test_bench.py
-new file mode 100755
-index 000000000..4d0773ad9
---- /dev/null
-+++ b/site_utils/test_bench.py
-@@ -0,0 +1,133 @@
-+#!/usr/bin/python
-+from __future__ import print_function
-+
-+import argparse
-+import common
-+import logging
-+import os
-+import sys
-+
-+# Turn the logging level to INFO before importing other autotest
-+# code, to avoid having failed import logging messages confuse the
-+# test_droid user.
-+logging.basicConfig(level=logging.INFO)
-+
-+# Unfortunately, autotest depends on external packages for assorted
-+# functionality regardless of whether or not it is needed in a particular
-+# context.
-+# Since we can't depend on people to import these utilities in any principled
-+# way, we dynamically download code before any autotest imports.
-+try:
-+ import chromite.lib.terminal # pylint: disable=unused-import
-+ import django.http # pylint: disable=unused-import
-+except ImportError:
-+ # Ensure the chromite site-package is installed.
-+ import subprocess
-+ build_externals_path = os.path.join(
-+ os.path.dirname(os.path.dirname(os.path.realpath(__file__))),
-+ 'utils', 'build_externals.py')
-+ subprocess.check_call([build_externals_path, '--names_to_check',
-+ 'chromiterepo', 'django'])
-+ # Restart the script so python now finds the autotest site-packages.
-+ sys.exit(os.execv(__file__, sys.argv))
-+
-+from autotest_lib.client.common_lib import utils
-+from autotest_lib.server.hosts import adb_host
-+from autotest_lib.site_utils import test_runner_utils
-+from autotest_lib.site_utils import tester_feedback
-+
-+def _parse_arguments_internal(argv):
-+ """
-+ Parse command line arguments
-+
-+ @param argv: argument list to parse
-+
-+ @returns: tuple of parsed arguments and argv suitable for remote runs
-+
-+ @raises SystemExit if arguments are malformed, or required arguments
-+ are not present.
-+ """
-+
-+ parser = argparse.ArgumentParser(description='Run remote tests.')
-+
-+ parser.add_argument('-b', '--bench', metavar='BENCH', required=True,
-+ help='Select the benchmark want to be run for '
-+ 'test.')
-+ parser.add_argument('-s', '--serials', metavar='SERIALS',
-+ help='Comma separate list of device serials under '
-+ 'test.')
-+ parser.add_argument('-r', '--remote', metavar='REMOTE',
-+ default='localhost',
-+ help='hostname[:port] if the ADB device is connected '
-+ 'to a remote machine. Ensure this workstation '
-+ 'is configured for passwordless ssh access as '
-+ 'users "root" or "adb"')
-+ parser.add_argument('-m', '--mode', default='little',
-+ help='Two modes can be chosen, little mode runs on a '
-+ 'single core of Cortex-A53, while big mode runs '
-+ 'on single core of Cortex-A57.')
-+
-+ return parser.parse_args(argv)
-+
-+def main(argv):
-+ """
-+ Entry point for test_bench script.
-+
-+ @param argv: arguments list
-+ """
-+ arguments = _parse_arguments_internal(argv)
-+
-+ serials = arguments.serials
-+ if serials is None:
-+ result = utils.run(['adb', 'devices'])
-+ devices = adb_host.ADBHost.parse_device_serials(result.stdout)
-+ if len(devices) != 1:
-+ logging.error('Could not detect exactly one device; please select '
-+ 'one with -s: %s', devices)
-+ return 1
-+ serials = devices[0]
-+
-+ autotest_path = os.path.dirname(os.path.dirname(
-+ os.path.realpath(__file__)))
-+ site_utils_path = os.path.join(autotest_path, 'site_utils')
-+ realpath = os.path.realpath(__file__)
-+ site_utils_path = os.path.realpath(site_utils_path)
-+ host_attributes = {'serials': serials,
-+ 'os_type': 'android'}
-+ results_directory = test_runner_utils.create_results_directory(None)
-+
-+ bench = arguments.bench
-+
-+ benchlist = ['Panorama', 'Skia', 'Dex2oat', 'Hwui', "Synthmark", "Binder"]
-+
-+ logging.info('Start testing benchmark on the device...')
-+
-+ if bench not in benchlist:
-+ logging.error('Please select one benchmark from the list below: \n%s',
-+ '\n'.join(benchlist))
-+ return 1
-+
-+ # Use taskset command to run benchmarks with different CPU core settings.
-+ #
-+ # TEST_MODE variable is set to either 7 or 56 for coremask in taskset.
-+ #
-+ # While Nexus 6P has 8 cores and 5X has 6 cores. CPU number 0-3 in both
-+ # devices belongs to Cortex 53, which are slow. CPU number 4-5 in 5X and 4-7
-+ # in 6P belongs to Cortex 57, which are fast.
-+ #
-+ # So we set 7(0x00000111) for little mode, that runs the benchmark on three
-+ # slow cores; 56(0x00111000) for big mode, that runs the benchmark on two
-+ # fast and one slow cores.
-+ os.environ['TEST_MODE'] = '7' if arguments.mode == 'little' else '56'
-+
-+ tests = [bench]
-+
-+ if test_runner_utils.perform_run_from_autotest_root(
-+ autotest_path, argv, tests, arguments.remote,
-+ host_attributes=host_attributes,
-+ results_directory=results_directory):
-+ logging.error('Error while testing on device.')
-+ return 1
-+
-+if __name__ == '__main__':
-+ sys.exit(main(sys.argv[1:]))