Great! Some more code for adding a new case: Add in MANIFEST.in if there is a folder for the test case: include lava_android_test/test_definitions/${test_folder}/*
Add an entry in doc/tests.rst and document if more: + * `${test_name}`_ On 13 April 2012 06:10, Botao Sun <botao....@linaro.org> wrote: > 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 > > -- Best wishes, Spring Zhang
_______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev