Merge branch 'master' into 12018-sync-groups-tool
[arvados.git] / build / run-tests.sh
index d865f77f78fdf25510afcafd17e0ecd0b0fecb9a..e1e83edbc8c85f9e0a8f84dd0ccc6a613d5d8d8a 100755 (executable)
@@ -1,4 +1,7 @@
 #!/bin/bash
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
 
 . `dirname "$(readlink -f "$0")"`/libcloud-pin.sh
 
@@ -72,13 +75,14 @@ services/arv-git-httpd
 services/crunchstat
 services/dockercleaner
 services/fuse
+services/health
 services/keep-web
 services/keepproxy
 services/keepstore
 services/keep-balance
 services/login-sync
 services/nodemanager
-services/nodemanager-integration
+services/nodemanager_integration
 services/crunch-run
 services/crunch-dispatch-local
 services/crunch-dispatch-slurm
@@ -92,6 +96,7 @@ sdk/go/arvados
 sdk/go/arvadosclient
 sdk/go/dispatch
 sdk/go/keepclient
+sdk/go/health
 sdk/go/httpserver
 sdk/go/manifest
 sdk/go/blockdigest
@@ -99,6 +104,7 @@ sdk/go/streamer
 sdk/go/stats
 sdk/go/crunchrunner
 sdk/cwl
+tools/arv-sync-groups
 tools/crunchstat-summary
 tools/keep-exercise
 tools/keep-rsync
@@ -200,6 +206,12 @@ sanity_checks() {
     echo -n 'gitolite: '
     which gitolite \
         || fatal "No gitolite. Try: apt-get install gitolite3"
+    echo -n 'npm: '
+    npm --version \
+        || fatal "No npm. Try: wget -O- https://nodejs.org/dist/v6.11.2/node-v6.11.2-linux-x64.tar.xz | sudo tar -C /usr/local -xJf - && sudo ln -s ../node-v6.11.2-linux-x64/bin/{node,npm} /usr/local/bin/"
+    echo -n 'cadaver: '
+    cadaver --version | grep -w cadaver \
+          || fatal "No cadaver. Try: apt-get install cadaver"
 }
 
 rotate_logfile() {
@@ -464,11 +476,21 @@ pip freeze 2>/dev/null | egrep ^apache-libcloud==$LIBCLOUD_PIN \
     || pip install --pre --ignore-installed https://github.com/curoverse/libcloud/archive/apache-libcloud-$LIBCLOUD_PIN.zip >/dev/null \
     || fatal "pip install apache-libcloud failed"
 
-# Uninstall old llfuse (<1.0), because services/fuse "pip install"
-# won't upgrade it by default.
-if pip freeze | egrep '^llfuse==0'; then
-    yes | pip uninstall 'llfuse<1.0'
-fi
+# We need an unreleased (as of 2017-08-17) llfuse bugfix, otherwise our fuse test suite deadlocks.
+pip freeze | grep -x llfuse==1.2.0 || (
+    set -e
+    yes | pip uninstall llfuse || true
+    cython --version || fatal "no cython; try sudo apt-get install cython"
+    cd "$temp"
+    (cd python-llfuse 2>/dev/null || git clone https://github.com/curoverse/python-llfuse)
+    cd python-llfuse
+    git checkout 620722fd990ea642ddb8e7412676af482c090c0c
+    git checkout setup.py
+    sed -i -e "s:'1\\.2':'1.2.0':" setup.py
+    python setup.py build_cython
+    python setup.py install --force
+) || fatal "llfuse fork failed"
+pip freeze | grep -x llfuse==1.2.0 || fatal "error: installed llfuse 1.2.0 but '$(pip freeze | grep llfuse)' ???"
 
 # Deactivate Python 2 virtualenv
 deactivate
@@ -541,6 +563,9 @@ do_test() {
         apps/workbench_units | apps/workbench_functionals | apps/workbench_integration)
             suite=apps/workbench
             ;;
+        services/nodemanager | services/nodemanager_integration)
+            suite=services/nodemanager_suite
+            ;;
         *)
             suite="${1}"
             ;;
@@ -771,6 +796,7 @@ gostuff=(
     sdk/go/arvadosclient
     sdk/go/blockdigest
     sdk/go/dispatch
+    sdk/go/health
     sdk/go/httpserver
     sdk/go/manifest
     sdk/go/streamer
@@ -779,6 +805,7 @@ gostuff=(
     lib/crunchstat
     services/arv-git-httpd
     services/crunchstat
+    services/health
     services/keep-web
     services/keepstore
     sdk/go/keepclient
@@ -791,6 +818,7 @@ gostuff=(
     tools/keep-block-check
     tools/keep-exercise
     tools/keep-rsync
+    tools/arv-sync-groups
 )
 for g in "${gostuff[@]}"
 do
@@ -800,7 +828,8 @@ done
 install_workbench() {
     cd "$WORKSPACE/apps/workbench" \
         && mkdir -p tmp/cache \
-        && RAILS_ENV=test bundle_install_trylocal
+        && RAILS_ENV=test bundle_install_trylocal \
+        && RAILS_ENV=test RAILS_GROUPS=assets bundle exec rake npm:install
 }
 do_install apps/workbench workbench
 
@@ -855,11 +884,11 @@ test_login-sync() {
 }
 do_test services/login-sync login-sync
 
-test_nodemanager-integration() {
+test_nodemanager_integration() {
     cd "$WORKSPACE/services/nodemanager" \
-        && tests/integration_test.py ${testargs[services/nodemanager-integration]}
+        && tests/integration_test.py ${testargs[services/nodemanager_integration]}
 }
-do_test services/nodemanager-integration nodemanager-integration
+do_test services/nodemanager_integration nodemanager_integration
 
 for p in "${pythonstuff[@]}"
 do