X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/62b3435fc45adff01541c508be22e10be83427ce..6b1a602cf1de1b6488c7d6b55e8d99ca8f707160:/build/run-tests.sh diff --git a/build/run-tests.sh b/build/run-tests.sh index 7bc023f0b6..0f996f77e9 100755 --- a/build/run-tests.sh +++ b/build/run-tests.sh @@ -3,8 +3,6 @@ # # SPDX-License-Identifier: AGPL-3.0 -. `dirname "$(readlink -f "$0")"`/libcloud-pin.sh - COLUMNS=80 . `dirname "$(readlink -f "$0")"`/run-library.sh @@ -42,7 +40,7 @@ sdk/python_test="--test-suite tests.test_keep_locator" Restrict Python SDK tests to the given class apps/workbench_test="TEST=test/integration/pipeline_instances_test.rb" Restrict Workbench tests to the given file -services/arv-git-httpd_test="-check.vv" +services/githttpd_test="-check.vv" Show all log messages, even when tests pass (also works with services/keepstore_test etc.) ARVADOS_DEBUG=1 @@ -88,13 +86,13 @@ lib/cloud/cloudtest lib/dispatchcloud lib/dispatchcloud/container lib/dispatchcloud/scheduler -lib/dispatchcloud/ssh_executor +lib/dispatchcloud/sshexecutor lib/dispatchcloud/worker lib/mount lib/pam lib/service services/api -services/arv-git-httpd +services/githttpd services/crunchstat services/dockercleaner services/fuse @@ -160,11 +158,16 @@ only_install= temp= temp_preserve= +ignore_sigint= + clear_temp() { if [[ -z "$temp" ]]; then - # we didn't even get as far as making a temp dir + # we did not even get as far as making a temp dir : elif [[ -z "$temp_preserve" ]]; then + # Go creates readonly dirs in the module cache, which cause + # "rm -rf" to fail unless we chmod first. + chmod -R u+w "$temp" rm -rf "$temp" else echo "Leaving behind temp dirs in $temp" @@ -241,7 +244,7 @@ sanity_checks() { || 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/" + || fatal "No npm. Try: wget -O- https://nodejs.org/dist/v10.23.1/node-v10.23.1-linux-x64.tar.xz | sudo tar -C /usr/local -xJf - && sudo ln -s ../node-v10.23.1-linux-x64/bin/{node,npm} /usr/local/bin/" echo -n 'cadaver: ' cadaver --version | grep -w cadaver \ || fatal "No cadaver. Try: apt-get install cadaver" @@ -409,7 +412,7 @@ start_services() { return 0 fi . "$VENV3DIR/bin/activate" - echo 'Starting API, controller, keepproxy, keep-web, arv-git-httpd, ws, and nginx ssl proxy...' + echo 'Starting API, controller, keepproxy, keep-web, githttpd, ws, and nginx ssl proxy...' if [[ ! -d "$WORKSPACE/services/api/log" ]]; then mkdir -p "$WORKSPACE/services/api/log" fi @@ -437,8 +440,8 @@ start_services() { && python3 sdk/python/tests/run_test_server.py start_keep-web \ && checkpidfile keep-web \ && checkhealth WebDAV \ - && python3 sdk/python/tests/run_test_server.py start_arv-git-httpd \ - && checkpidfile arv-git-httpd \ + && python3 sdk/python/tests/run_test_server.py start_githttpd \ + && checkpidfile githttpd \ && checkhealth GitHTTP \ && python3 sdk/python/tests/run_test_server.py start_ws \ && checkpidfile ws \ @@ -460,7 +463,7 @@ stop_services() { . "$VENV3DIR/bin/activate" || return cd "$WORKSPACE" \ && python3 sdk/python/tests/run_test_server.py stop_nginx \ - && python3 sdk/python/tests/run_test_server.py stop_arv-git-httpd \ + && python3 sdk/python/tests/run_test_server.py stop_githttpd \ && python3 sdk/python/tests/run_test_server.py stop_ws \ && python3 sdk/python/tests/run_test_server.py stop_keep-web \ && python3 sdk/python/tests/run_test_server.py stop_keep_proxy \ @@ -472,13 +475,16 @@ stop_services() { } interrupt() { + if [[ -n "$ignore_sigint" ]]; then + echo >&2 "ignored SIGINT" + return + fi failures+=("($(basename $0) interrupted)") exit_cleanly } trap interrupt INT setup_ruby_environment() { - set -x if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then source "$HOME/.rvm/scripts/rvm" using_rvm=true @@ -515,10 +521,10 @@ setup_ruby_environment() { || fatal 'rvm gemset setup' rvm env - (bundle version | grep -q 2.0.2) || gem install bundler -v 2.0.2 + (bundle version | grep -q 2.2.19) || gem install --no-document bundler -v 2.2.19 bundle="$(which bundle)" echo "$bundle" - "$bundle" version | grep 2.0.2 || fatal 'install bundler' + "$bundle" version | grep 2.2.19 || fatal 'install bundler' else # When our "bundle install"s need to install new gems to # satisfy dependencies, we want them to go where "gem install @@ -539,24 +545,29 @@ setup_ruby_environment() { tmpdir_gem_home="$(env - PATH="$PATH" HOME="$GEMHOME" gem env gempath | cut -f1 -d:)" PATH="$tmpdir_gem_home/bin:$PATH" - export GEM_PATH="$tmpdir_gem_home" + export GEM_PATH="$tmpdir_gem_home:$(gem env gempath)" echo "Will install dependencies to $(gem env gemdir)" - echo "Will install arvados gems to $tmpdir_gem_home" + echo "Will install bundler and arvados gems to $tmpdir_gem_home" echo "Gem search path is GEM_PATH=$GEM_PATH" - bundle="$(gem env gempath | cut -f1 -d:)/bin/bundle" + bundle="bundle" ( export HOME=$GEMHOME - bundlers="$(gem list --details bundler)" - versions=(1.11.0 1.17.3 2.0.2) + versions=(2.2.19) for v in ${versions[@]}; do - if ! echo "$bundlers" | fgrep -q "($v)"; then - gem install --user $(for v in ${versions[@]}; do echo bundler:${v}; done) + if ! gem list --installed --version "${v}" bundler >/dev/null; then + gem install --no-document --user $(for v in ${versions[@]}; do echo bundler:${v}; done) break fi done "$bundle" version | tee /dev/stderr | grep -q 'version 2' - ) #|| fatal 'install bundler' ## This is needed for now. + ) || fatal 'install bundler' + if test -d /var/lib/arvados-arvbox/ ; then + # Inside arvbox, use bundler-installed binstubs. The + # system bundler and rail's own bin/bundle refuse to work. + # I don't know why. + bundle=binstubs/bundle + fi fi } @@ -642,20 +653,24 @@ initialize() { install_env() { go mod download || fatal "Go deps failed" - which goimports >/dev/null || go get golang.org/x/tools/cmd/goimports || fatal "Go setup failed" + which goimports >/dev/null || go install golang.org/x/tools/cmd/goimports@latest || fatal "Go setup failed" setup_virtualenv "$VENV3DIR" + . "$VENV3DIR/bin/activate" # Needed for run_test_server.py which is used by certain (non-Python) tests. + # pdoc3 needed to generate the Python SDK documentation. ( set -e + "${VENV3DIR}/bin/pip3" install wheel "${VENV3DIR}/bin/pip3" install PyYAML - "${VENV3DIR}/bin/pip3" install httplib2 + "${VENV3DIR}/bin/pip3" install httplib2 "${VENV3DIR}/bin/pip3" install future "${VENV3DIR}/bin/pip3" install google-api-python-client "${VENV3DIR}/bin/pip3" install ciso8601 "${VENV3DIR}/bin/pip3" install pycurl "${VENV3DIR}/bin/pip3" install ws4py + "${VENV3DIR}/bin/pip3" install pdoc3 cd "$WORKSPACE/sdk/python" python3 setup.py install ) || fatal "installing PyYAML and sdk/python failed" @@ -703,7 +718,7 @@ do_test() { stop_services check_arvados_config "$1" ;; - gofmt | doc | lib/cli | lib/cloud/azure | lib/cloud/ec2 | lib/cloud/cloudtest | lib/cmd | lib/dispatchcloud/ssh_executor | lib/dispatchcloud/worker) + gofmt | doc | lib/cli | lib/cloud/azure | lib/cloud/ec2 | lib/cloud/cloudtest | lib/cmd | lib/dispatchcloud/sshexecutor | lib/dispatchcloud/worker) check_arvados_config "$1" # don't care whether services are running ;; @@ -939,7 +954,7 @@ install_services/api() { if [[ ! -e "$cert.pem" || "$(date -r "$cert.pem" +%s)" -lt 1512659226 ]]; then ( dir="$WORKSPACE/services/api/tmp" - set -ex + set -e openssl req -newkey rsa:2048 -nodes -subj '/C=US/ST=State/L=City/CN=localhost' -out "$cert.csr" -keyout "$cert.key"