This project is used to run benchmark applications in:
ssh://linaro-private.git.linaro.org/srv/linaro-private.git.linaro.org/people/yongqinliu/benchmark-apks.git

1. Steps to build and run linaro.android.jar under the root of android source:
* have a fully built Android source tree
* build the test:
  mmm external/thirdparty-benchmarks
* deploy the test:
  adb push ${OUT}/data/local/tmp/linaro.android.jar /data/local/tmp/
* run the test:
  adb shell uiautomator runtest linaro.android.jar \
    -c org.linaro.benchmarks.BenchmarksTestCase#${test_method}

2. Steps to build and run linaro.android.jar under the root of android source:
* Download the android from http://developer.android.com/sdk/index.html
* unpack the sdk to some place of your local. like /tmp/android-sdk-linux/
* export the ANDROID_HOME environment variable. like:
  export ANDROID_HOME=/tmp/android-sdk-linux/
* install the ant command. like:
  sudo apt-get install ant
* build the test
  ./build.sh
* deploy the test:
  adb push bin/thirdparty-benchmarks.jar /data/local/tmp/
* run the test:
  adb shell uiautomator runtest linaro.android.jar \
    -c org.linaro.benchmarks.BenchmarksTestCase#${test_method}

3. Steps to create new tests off it:
* open file src/org/linaro/benchmarks/BenchmarksTestCase.java
* add method like testLinpack

4. steps to run the scripts in benchmarks-script directory
* checkout this git repository
* run command like "monkeyrunner benchmarks-script/antutu/run.py" for antutu test

5. wiki for reference:
   https://wiki.linaro.org/Platform/Android/AutomatedThirdPartyBenchmarks

6. mail: linaro-android@linaro.org

