Running tests » History » Version 17
Joshua Randall, 09/11/2015 07:57 AM
| 1 | 1 | Tom Clegg | h1. Running tests |
|---|---|---|---|
| 2 | |||
| 3 | 3 | Tom Clegg | {{toc}} |
| 4 | |||
| 5 | 1 | Tom Clegg | The arvados-dev git repository has a @run-tests.sh@ script which tests (nearly) all of the components in the arvados 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 | |||
| 7 | h2. Background |
||
| 8 | |||
| 9 | You have the arvados source tree at @~/arvados@ and you might have local modifications. |
||
| 10 | |||
| 11 | h2. Download/update the test script |
||
| 12 | |||
| 13 | First time: |
||
| 14 | |||
| 15 | <pre> |
||
| 16 | cd |
||
| 17 | 11 | Tom Clegg | git clone git://git.curoverse.com/arvados-dev.git |
| 18 | 1 | Tom Clegg | </pre> |
| 19 | |||
| 20 | Next times, to get any updates: |
||
| 21 | |||
| 22 | <pre> |
||
| 23 | cd ~/arvados-dev |
||
| 24 | git pull |
||
| 25 | </pre> |
||
| 26 | |||
| 27 | h2. Install prerequisites |
||
| 28 | |||
| 29 | 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: |
||
| 30 | * [[Go]] |
||
| 31 | 13 | Nico César | * "API server dependencies": http://doc.arvados.org/install/install-api-server.html |
| 32 | ** 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> |
||
| 33 | |||
| 34 | 1 | Tom Clegg | * "Workbench dependencies":http://doc.arvados.org/install/install-workbench-app.html (Currently just graphviz. Skip "bundle install".) |
| 35 | 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) |
| 36 | 4 | Tom Clegg | * doc build dependencies: <pre>sudo apt-get install python-epydoc linkchecker</pre> |
| 37 | 8 | Ward Vandewege | * "FUSE driver dependencies":https://arvados.org/projects/arvados/wiki/Hacking_Python_SDK#Prerequisites |
| 38 | 4 | Tom Clegg | * Workbench test suite dependencies (see [[Hacking Workbench]]): <pre> |
| 39 | sudo apt-get install xvfb iceweasel |
||
| 40 | (set -e |
||
| 41 | PJS=phantomjs-1.9.7-linux-x86_64 |
||
| 42 | wget -P /tmp https://bitbucket.org/ariya/phantomjs/downloads/$PJS.tar.bz2 |
||
| 43 | sudo tar -C /usr/local -xjf /tmp/$PJS.tar.bz2 |
||
| 44 | sudo ln -s ../$PJS/bin/phantomjs /usr/local/bin/ |
||
| 45 | ) |
||
| 46 | 2 | Tom Clegg | </pre> |
| 47 | 14 | Nico César | ** version 2.0.x is missdetected see https://github.com/teampoltergeist/poltergeist/issues/595 |
| 48 | 16 | Joshua Randall | * Dependencies specific to testing |
| 49 | ** debian package: lsof (used to configure test environment such as ARVADOS_API_HOST) |
||
| 50 | ** debian package: gitolite3 (required by the sanity checks before testing can start) |
||
| 51 | |||
| 52 | 1 | Tom Clegg | |
| 53 | h2. Run all tests |
||
| 54 | |||
| 55 | Basic usage: |
||
| 56 | |||
| 57 | <pre> |
||
| 58 | ~/arvados-dev/jenkins/run-tests.sh WORKSPACE=~/arvados |
||
| 59 | </pre> |
||
| 60 | |||
| 61 | h2. Save time by skipping some tests |
||
| 62 | |||
| 63 | 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. |
||
| 64 | |||
| 65 | 12 | Tom Clegg | run-tests.sh [...] --skip-install --only apps/workbench apps/workbench_test="TEST=test/integration/websock*rb" |
| 66 | |||
| 67 | 15 | Tom Clegg | run-tests.sh [...] --skip-install --only apps/workbench apps/workbench_test="TESTOPTS=--name=/#6640/" |
| 68 | |||
| 69 | run-tests.sh [...] --skip-install --only sdk/python sdk/python_test="--test-suite tests.test_keep_locator" |
||
| 70 | |||
| 71 | 12 | Tom Clegg | run-tests.sh [...] --skip-install --only sdk/python sdk/python_test="--test-suite tests.test_keep_locator.ArvadosKeepLocatorTest.base_locators" |
| 72 | |||
| 73 | Presumably @[...]@ here includes @--leave-temp@ and the GOPATH, GEMHOME, VENVDIR vars from a previous test run. |
||
| 74 | |||
| 75 | 1 | Tom Clegg | h2. Save more time by skipping install |
| 76 | |||
| 77 | 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. |
||
| 78 | |||
| 79 | When you're not worried about these dependencies going out of sync (e.g., you're only touching Workbench tests) you can install everything once this way: |
||
| 80 | |||
| 81 | <pre> |
||
| 82 | ~/arvados-dev/jenkins/run-tests.sh --only install --leave-temp WORKSPACE=~/arvados |
||
| 83 | </pre> |
||
| 84 | |||
| 85 | After running everything, you'll see something like this: |
||
| 86 | |||
| 87 | <pre> |
||
| 88 | Leaving behind temp dirs: VENVDIR="/tmp/tmp.y3tsTmigio" GOPATH="/tmp/tmp.3r4sSA9F3l" |
||
| 89 | </pre> |
||
| 90 | |||
| 91 | Copy these temp dirs to the end of your run-tests.sh command line, add @--skip-install@, and choose a test suite to run, like this: |
||
| 92 | |||
| 93 | <pre> |
||
| 94 | 9 | Tom Clegg | ~/arvados-dev/jenkins/run-tests.sh --only apps/workbench --skip-install WORKSPACE=~/arvados VENVDIR="/tmp/tmp.y3tsTmigio" GOPATH="/tmp/tmp.3r4sSA9F3l" |
| 95 | 3 | Tom Clegg | </pre> |
| 96 | |||
| 97 | h2. Other options |
||
| 98 | |||
| 99 | For more usage info, try: |
||
| 100 | |||
| 101 | <pre> |
||
| 102 | ~/arvados-dev/jenkins/run-tests.sh --help |
||
| 103 | 1 | Tom Clegg | </pre> |
| 104 | 5 | Tom Clegg | |
| 105 | h1. Deficiencies |
||
| 106 | |||
| 107 | There's currently nowhere to add... |
||
| 108 | * Unit tests for Workbench JavaScript assets (see #4132) |
||
| 109 | * Unit/functional tests for crunch-job (see #4156) |
||
| 110 | * Tests for "arv-run-pipeline-instance" |