| Put this email in a Wiki: | https://wiki.linaro.org/Platform/Android/IntegrateATestIntoLava
Thank you for put it into a wiki, Zach! The wiki is a good place. 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}`_ > > Spring, Thanks for your comments. I have updated the wiki and the google doc. Thanks Yongqin Liu > 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. >>> >>> 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