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

Reply via email to