Running tests » History » Version 28
Eric Biagiotti, 01/09/2019 02:12 PM
1 | 1 | Tom Clegg | h1. Running tests |
---|---|---|---|
2 | |||
3 | 3 | Tom Clegg | {{toc}} |
4 | |||
5 | 23 | Ward Vandewege | The arvados git repository has a @run-tests.sh@ script which tests (nearly) all of the components in the source tree. Jenkins at https://ci.curoverse.com uses this exact script, so running it _before pushing a new master_ is a good way to predict whether Jenkins will fail your build and start pestering you by IRC. |
6 | 1 | Tom Clegg | |
7 | h2. Background |
||
8 | |||
9 | You have the arvados source tree at @~/arvados@ and you might have local modifications. |
||
10 | |||
11 | h2. Install prerequisites |
||
12 | |||
13 | The test script doesn't (yet) check for all prerequisites up front, so you'll save some time by installing these things before going any attempting to run tests: |
||
14 | * [[Go]] |
||
15 | 13 | Nico César | * "API server dependencies": http://doc.arvados.org/install/install-api-server.html |
16 | ** Install debian packages, ruby, bundler. Create "arvados" postgres user with permission to create databases. You don't need to run "bundle install", though.) <pre>createuser arvados --createdb --pwprompt</pre> |
||
17 | |||
18 | 1 | Tom Clegg | * "Workbench dependencies":http://doc.arvados.org/install/install-workbench-app.html (Currently just graphviz. Skip "bundle install".) |
19 | 17 | Joshua Randall | ** make sure that the user who will run the tests can successfully start nginx (write access may be required for /var/log/nginx and /var/lib/nginx) |
20 | 4 | Tom Clegg | * doc build dependencies: <pre>sudo apt-get install python-epydoc linkchecker</pre> |
21 | 8 | Ward Vandewege | * "FUSE driver dependencies":https://arvados.org/projects/arvados/wiki/Hacking_Python_SDK#Prerequisites |
22 | 4 | Tom Clegg | * Workbench test suite dependencies (see [[Hacking Workbench]]): <pre> |
23 | sudo apt-get install xvfb iceweasel |
||
24 | (set -e |
||
25 | 1 | Tom Clegg | PJS=phantomjs-1.9.7-linux-x86_64 |
26 | 4 | Tom Clegg | wget -P /tmp https://bitbucket.org/ariya/phantomjs/downloads/$PJS.tar.bz2 |
27 | sudo tar -C /usr/local -xjf /tmp/$PJS.tar.bz2 |
||
28 | sudo ln -s ../$PJS/bin/phantomjs /usr/local/bin/ |
||
29 | ) |
||
30 | </pre> |
||
31 | 2 | Tom Clegg | ** version 2.0.x is missdetected see https://github.com/teampoltergeist/poltergeist/issues/595 |
32 | 14 | Nico César | * Dependencies specific to testing |
33 | 16 | Joshua Randall | ** debian package: lsof (used to configure test environment such as ARVADOS_API_HOST) |
34 | ** debian package: gitolite3 (required by the sanity checks before testing can start) |
||
35 | |||
36 | 1 | Tom Clegg | |
37 | 16 | Joshua Randall | h2. Run all tests |
38 | 1 | Tom Clegg | |
39 | Basic usage: |
||
40 | |||
41 | <pre> |
||
42 | 23 | Ward Vandewege | ~/arvados/build/run-tests.sh WORKSPACE=~/arvados |
43 | 1 | Tom Clegg | </pre> |
44 | |||
45 | h2. Save time by skipping install |
||
46 | |||
47 | Normally, even when you're running only one component's test suite, @run-tests.sh@ still runs the _install_ recipe for all of the components. This addresses dependencies between components: for example, Workbench tests expect the Python and CLI SDKs to be installed. It also installs third party dependencies (e.g., ruby gems and python modules). |
||
48 | 20 | Tom Clegg | |
49 | 1 | Tom Clegg | When you're not worried about these dependencies going out of sync (e.g., you're only touching Workbench tests) you can save time by preserving your install dir between test runs. Install everything once this way: |
50 | 21 | Tom Clegg | |
51 | 18 | Tom Clegg | <pre> |
52 | 1 | Tom Clegg | mkdir -p ~/.cache/arvados-build |
53 | 23 | Ward Vandewege | ~/arvados/build/run-tests.sh WORKSPACE=~/arvados --temp ~/.cache/arvados-build --only install |
54 | 22 | Joshua Randall | </pre> |
55 | 1 | Tom Clegg | |
56 | On subsequent tests, you can add @--skip-install@ and choose a single test suite to run, like this: |
||
57 | |||
58 | <pre> |
||
59 | 23 | Ward Vandewege | ~/arvados/build/run-tests.sh WORKSPACE=~/arvados --temp ~/.cache/arvados-build --skip-install --only apps/workbench |
60 | 1 | Tom Clegg | </pre> |
61 | |||
62 | Or: |
||
63 | |||
64 | <pre> |
||
65 | 23 | Ward Vandewege | ~/arvados/build/run-tests.sh WORKSPACE=~/arvados --temp ~/.cache/arvados-build --only-install apps/workbench --only apps/workbench |
66 | 1 | Tom Clegg | </pre> |
67 | 18 | Tom Clegg | |
68 | 20 | Tom Clegg | h2. Save time by skipping some tests |
69 | |||
70 | Running all tests takes a while. You don't want to do this after each tiny change. You can use the --skip and --only arguments to select specific components. Some components also accept component-specific arguments to select specific test classes/cases. |
||
71 | |||
72 | run-tests.sh [...] --skip-install --only apps/workbench apps/workbench_test="TEST=test/integration/websock*rb" |
||
73 | |||
74 | 27 | Tom Clegg | run-tests.sh [...] --skip-install --only apps/workbench apps/workbench_test="TESTOPTS=--name=/.*#6640.*/" |
75 | 20 | Tom Clegg | |
76 | 28 | Eric Biagiotti | run-tests.sh [...] --skip-install --only sdk/python sdk/python_test="--test-suite=tests.test_keep_locator" |
77 | 20 | Tom Clegg | |
78 | 28 | Eric Biagiotti | run-tests.sh [...] --skip-install --only sdk/python sdk/python_test="--test-suite=tests.test_keep_locator.ArvadosKeepLocatorTest.base_locators" |
79 | 20 | Tom Clegg | |
80 | Presumably @[...]@ here includes a @--temp@ argument (see above). |
||
81 | |||
82 | 3 | Tom Clegg | h2. Other options |
83 | |||
84 | For more usage info, try: |
||
85 | |||
86 | <pre> |
||
87 | 23 | Ward Vandewege | ~/arvados/build/run-tests.sh --help |
88 | 1 | Tom Clegg | </pre> |
89 | 5 | Tom Clegg | |
90 | 24 | Radhika Chippada | h2. Running workbench diagnostics tests |
91 | |||
92 | You can run workbench diagnostics tests against any production server. |
||
93 | |||
94 | 26 | Radhika Chippada | Update your workbench application.yml to add a "diagnostics" section with the login token and pipeline details. The below example configuration is to run the "qr1hi-p5p6p-ftcb0o61u4yd2zr" pipeline in "qr1hi" environment. |
95 | 24 | Radhika Chippada | |
96 | <pre> |
||
97 | diagnostics: |
||
98 | secret_token: useanicelongrandomlygeneratedsecrettokenstring |
||
99 | arvados_workbench_url: https://workbench.qr1hi.arvadosapi.com |
||
100 | user_tokens: |
||
101 | 26 | Radhika Chippada | active: yourcurrenttokenintheenvironmenttowhichyouarepointing |
102 | 24 | Radhika Chippada | pipelines_to_test: |
103 | pipeline_1: |
||
104 | template_uuid: qr1hi-p5p6p-ftcb0o61u4yd2zr |
||
105 | input_paths: [] |
||
106 | max_wait_seconds: 300 |
||
107 | </pre> |
||
108 | |||
109 | 26 | Radhika Chippada | You can now run the "qr1hi" diagnostics tests using the following command: |
110 | 24 | Radhika Chippada | <pre> |
111 | cd $ARVADOS_HOME |
||
112 | 25 | Radhika Chippada | RAILS_ENV=diagnostics bundle exec rake TEST=test/diagnostics/pipeline_test.rb |
113 | 24 | Radhika Chippada | </pre> |
114 | |||
115 | 5 | Tom Clegg | h1. Deficiencies |
116 | |||
117 | There's currently nowhere to add... |
||
118 | * Unit tests for Workbench JavaScript assets (see #4132) |
||
119 | * Unit/functional tests for crunch-job (see #4156) |
||
120 | * Tests for "arv-run-pipeline-instance" |