Amazing! I'm reading it...
BR Botao Sun On Fri, Apr 13, 2012 at 12:45 AM, Zach Pfeffer <zach.pfef...@linaro.org>wrote: > Awesome YongQin. > > Put this email in a Wiki: > > https://wiki.linaro.org/Platform/Android/IntegrateATestIntoLava > > On 12 April 2012 05:51, YongQin Liu <yongqin....@linaro.org> wrote: > > Hi, All > > > > LAVA is an automated validation architecture, and it now has a test > > framework for running android test tools and parsing the test output. > > Please NOTE that lava-android-test is just used for running the test > tools, > > parsing the test output, and formatting the test result. > > > > Here I will describe how to write and add a test wrapper script for > > lava-android-test, and how to integrate the test into LAVA. > > > > 1. checkout the lava-android-test to your local machine > > bzr branch lp:lava-android-test > > > > 2. if the test tools are just command that can be run on android system, > and > > the output is well formatted, > > then congratulations, you can go directly to step 6. > > You don't need to wrapper script again. > > > > 3. If the test tools has already been build into the android image or in > the > > host image(normal Ubuntu image), > > then you won't need to define some scripts for organizing the test > > tools, you can skip this step, > > Otherwise, put the actual test tools in some place, normally they > are in > > a sub directory of test_definitions, like the busybox test: > > the actual test tool is busybox_test.sh, and it is put in > > the lava_android_test/test_definitions/busybox directory > > > > 4. add a test wrapper script for your test into the test_definitions > > directory. like busybox.py: > > The content of the wrapper script should be something like below: > > Normally, you just need to redefine the red and bold part in > the > > above. > > > > > ############################################################################################### > > > > import os > > > > import lava_android_test.testdef > > > > test_name = 'test_sample' > > > > #linux commands that will be run on the host > before INSTALL_STEPS_ADB_PRE" > > INSTALL_STEPS_HOST_PRE = [] > > #adb commands that will be run before install apk file into android > > INSTALL_STEPS_ADB_PRE = [] > > #APK file path list that will be intalled into android > > APKS= [] > > #adb commands that will be run before install apk file into android > > INSTALL_STEPS_ADB_POST = [] > > #linux commands that will be run on the host after INSTALL_STEPS_ADB_POST > > INSTALL_STEPS_HOST_POST = [] > > > > #linux commands that will be run on the host before RUN_STEPS_ADB_PRE > > RUN_STEPS_HOST_PRE = [] > > #adb commands that will be run before install apk file into android > > RUN_STEPS_ADB_PRE = [] > > #commands that will be run on android > > ADB_SHELL_STEPS = [] > > #adb commands that will be run before install apk file into android > > RUN_STEPS_ADB_POST = [] > > #linux commands that will be run on the host after RUN_STEPS_ADB_POST > > RUN_STEPS_HOST_POST = [] > > > > #pattern to parse the command output to generate the test result. > > PATTERN = "^\s*(?P<test_case_id>\w+)=(?P<result>\w+)\s*$" > > > > inst = > > > lava_android_test.testdef.AndroidTestInstaller(steps_host_pre=INSTALL_STEPS_HOST_PRE, > > > > steps_adb_pre=INSTALL_STEPS_ADB_PRE, > > > > apks=APKS, > > > > steps_adb_post=INSTALL_STEPS_ADB_POST, > > > > steps_host_post=INSTALL_STEPS_HOST_POST) > > > > run = > > > lava_android_test.testdef.AndroidTestRunner(steps_host_pre=RUN_STEPS_HOST_PRE, > > > > steps_adb_pre=RUN_STEPS_ADB_PRE, > > > > adbshell_steps=ADB_SHELL_STEPS, > > > > steps_adb_post=RUN_STEPS_ADB_POST, > > > > steps_host_post=RUN_STEPS_HOST_POST) > > > > parser = lava_android_test.testdef.AndroidTestParser(PATTERN) > > testobj = lava_android_test.testdef.AndroidTest(testname=test_name, > > installer=inst, > > runner=run, > > parser=parser) > > > > > > > ############################################################################################### > > > > And in the command part, you can use > > > > "$(SERIAL)" to represent the device serial number, like: > > RUN_STEPS_HOST_POST = [ 'python > > %s/android-0xbenchmark/android_0xbenchmark_wait.py $(SERIAL)' % curdir] > > > > and > > > > "$(OPTIONS)" to represent the option string passed from command line. > Like > > INSTALL_STEPS_HOST_PRE = [ 'echo $(OPTION)'], > > RUN_STEPS_HOST_PRE = [ 'echo $(OPTION)'], > > > > then you can run lava-android-test install -o "install options string" > > or lava-android-test run -O "run options string" > > > > > > Note: > > Because lava-android-test will be run on lava-lab, and there > will > > be multiple devices connected simultaneously, > > So we should consider to pass the device serial number for each > > test tools. > > If the test tools is defined > > for steps_adb_pre/adbshell_steps/steps_adb_post, > > then there is no need to pass the device serial > > number, lava-android-test will do this for you. > > > > 5. you can > > use "lava-android-test list-tests" to check if the test wrapper > created > > can be recognized, > > use "lava-android-test install ${test_name}" to install the test, > > use "lava-android-test run ${test_name}" to execute the test, > > use "lava-android-test show ${result_id}" to show the output > > the test executed, > > use "lava-android-test parse ${result_id}" to to generate the result > > bundle for the test executed. > > > > And here is a blog about install/test lava-android-test that you can > > reference: > > > > > http://www.linaro.org/linaro-blog/2011/12/01/local-lava-testing-of-android-ics/ > > > > 6. When you have done the above steps and verified your test that works > > well, then you can integrate it in LAVA with the android-build. > > Here is a description about that. > > > https://wiki.linaro.org/Platform/Android/AndroidBuild-LavaIntegration > > > > > > If you have any questions, please contact me. > > Also I have copied it to google docs, > > > https://docs.google.com/a/linaro.org/document/d/1kVyuFZtnMsganZaszQZhgX3QPOF5KXhKvefCUq4Xh3A/edit > > you can comment directly there. > > > > > > Thanks, > > Yongqin Liu > > --------------------------------- > > Mail: yongqin....@linaro.org. > > IRC Nickname: liuyq > > > > _______________________________________________ > > linaro-dev mailing list > > linaro-dev@lists.linaro.org > > http://lists.linaro.org/mailman/listinfo/linaro-dev > > > > > > -- > Zach Pfeffer > Android Platform Team Lead, Linaro Platform Teams > Linaro.org | Open source software for ARM SoCs > Follow Linaro: http://www.facebook.com/pages/Linaro > http://twitter.com/#!/linaroorg - http://www.linaro.org/linaro-blog > > _______________________________________________ > linaro-dev mailing list > linaro-dev@lists.linaro.org > http://lists.linaro.org/mailman/listinfo/linaro-dev >
_______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev