Test definitions in version control

Test definitions in version control

LAVA supports git and bazaar version control for use with test definitions and this is the recommended way to host and use test definitions for LAVA. When a repository is listed in the JSON, the entire repository is checked out into the test definition directory. This allows YAML files in the repository to reliably access scripts and other files which are part of the repository, inside the test image.:

{
   "command": "lava_test_shell",
   "parameters": {
       "testdef_repos": [
           {
               "git-repo": "https://git.linaro.org/people/neil.williams/temp-functional-tests.git",
               "testdef": "multinode/multinode02.yaml"
           }
       ],
       "timeout": 900
   }
}

When this test starts, the entire repository will be available in the current working directory of the test. Therefore, multinode/multinode02.yaml can include instructions to execute multinode/get_ip.sh.

It is also useful to have the JSON files in the repository, this helps others who may want to use your test definitions but it is also useful when using the Submit Job support in the LAVA web interface. Simply enter the full path to the JSON file in your repository and LAVA will replace the URL with the contents of the file before submission.:

http://git.linaro.org/people/neil.williams/temp-functional-tests.git/blob_plain/HEAD:/singlenode/kvm-single-node.json

(When copying and pasting this example, ensure you remove the trailing line ending and paste only a single line.)

There are numerous example test repositories in use, including:

Using specific revisions of a test definition

If a specific revision is specified as a parameter in the JSON, that revision will be used instead of HEAD.:

{
   "command": "lava_test_shell",
   "parameters": {
       "testdef_repos": [
           {
               "git-repo": "https://git.linaro.org/people/neil.williams/temp-functional-tests.git",
               "testdef": "multinode/multinode02.yaml",
               "revision": "3d555378"
           }
       ],
       "timeout": 900
   }
}

Sharing the contents of test definitions

A YAML file can clone another repository by specifying the address of the repository to clone:

install:
    bzr-repos:
        - lp:lava-test
    git-repos:
        - git://git.linaro.org/people/davelong/lt_ti_lava.git

run:
    steps:
        - cd lt_ti_lava
        - echo "now in the git cloned directory"

This allows a collection of LAVA test definitions to re-use other YAML custom scripts without duplication. The tests inside the other repository will not be executed.

Adding test definition dependencies

If your test depends on other tests to be executed before you run the current test, add an explicit dependency in the YAML:

test-case-deps:
  - git-repo: git://git.linaro.org/qa/test-definitions.git
    testdef: common/passfail.yaml
  - bzr-repo: lp:~stylesen/lava-dispatcher/sampletestdefs-bzr
    testdef: testdef.yaml
  - url: http://people.linaro.org/~senthil.kumaran/deps_sample.yaml

The test cases specified within test-case-deps section will be fetched from the given repositories or url and then executed in the same specified order.

Test repository for functional tests in LAVA

LAVA regularly runs a set of test definitions to check for regressions and the set is available for others to use as a template for their own tests:

* http://git.linaro.org/lava-team/lava-functional-tests.git

Results of these tests are available in this bundle stream page: