aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: a82d1685e6f306b1946b9321c5866647656e887a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# Test Definitions
A test suite works with and without [LAVA](http://lavasoftware.org/). The following two
sets of automated tests are supported.

- `automated/linux/`
- `automated/android/`

For each test case, both the test script and the corresponding test definition files are
provided in the same folder and are named after the test case name. Test scripts are
self-contained and work independently. Test definition files in YAML format are provided
for test runs with local test-runner and within LAVA.

## Installation
Installing the latest development version:

    git clone https://github.com/Linaro/test-definitions
    cd ./test-definitions
    . ./automated/bin/setenv.sh
    pip install -r ${REPO_PATH}/automated/utils/requirements.txt

If the above succeeds, try:

    test-runner -h

## Running test
### Running test script
#### linux

    cd ./automated/linux/smoke/
    ./smoke.sh

Skip package installation:

    ./smoke.sh -s true

#### android

    cd ./automated/android/dd-wr-speed/
    ./dd-wr-speed.sh

Specify SN when more than one device connected:

    ./dd-wr-speed.sh -s "serial_no"

Specify other params:

    ./dd-wr-speed.sh -i "10" -p "/dev/block/mmcblk1p1"

### Using test-runner
#### single test run

    test-runner -d ./automated/linux/smoke/smoke.yaml

skip package install:

    test-runner -d ./automated/linux/smoke/smoke.yaml -s

#### running test plan

Run a set of tests defined in agenda file:
    
    test-runner -p ./plans/linux-example.yaml

Apply test plan overlay to skip, amend or add tests:
    
    test-runner -p ./plans/linux-example.yaml -O test-plan-overlay-example.yaml

## Collecting result

### Using test script
Test script normally puts test log and parsed results to its own `output` directory. e.g.
    
    automated/linux/smoke/output

### Using test-runner
test-runner needs a separate directory outside the repo to store test and result files.
The directory defaults to `$HOME/output` and can be changed with `-o <dir>`. test-runner
converts test definition file to `run.sh` and then parses its stdout. Results
will be saved to results.{json,csv} by test. e.g.
    
    /root/output/smoke_9879e7fd-a8b6-472d-b266-a20b05d52ed1/result.csv

When using the same output directory for multiple tests, test-runner combines results
from all tests and save them to `${OUTPUT}/results.{json,csv}`. e.g.
    
    /root/output/result.json

## Contributing

Please use Github for pull requests: https://github.com/Linaro/test-definitions/pulls

https://git.linaro.org/qa/test-definitions.git is a read-only mirror. New changes in the
github repo will be pushed to the mirror every 10 minutes.

Refer to [test writing guidelines](docs/test-writing-guidelines.md) to modify
or add test. 

Changes need to be able to pass sanity check, which by default checks files in the most
recent commit:

    ./sanity-check.sh

To develop locally, there are Dockerfiles in test/ that can be used to simulate
target environments. The easiest way to use is to run `test.sh
[debian|centos]`. test.sh will run validate.py, and then build the Docker
environment specified, run plans/linux-example.yaml, and then drop into a bash
shell inside the container so that things like /root/output can be inspected.
It is not (yet) a pass/fail test; merely a development helper and validation
environment.