X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/adedc9a3791fbed1d08da4d8681f1d0e0b36e024..49ceaf0593b0b67523279daaf3775a5e4c8e67c5:/build/run-tests.sh diff --git a/build/run-tests.sh b/build/run-tests.sh index b19eafa41e..766ff1b824 100755 --- a/build/run-tests.sh +++ b/build/run-tests.sh @@ -422,13 +422,6 @@ start_services() { all_services_stopped= fail=1 - # Create config if it hasn't been created already. Normally - # this happens in install_env because there are downstream - # steps like workbench install which require a valid - # config.yml, but when invoked with --skip-install that doesn't - # happen, so make sure to run it here. - eval $(python sdk/python/tests/run_test_server.py setup_config) - cd "$WORKSPACE" \ && eval $(python sdk/python/tests/run_test_server.py start --auth admin) \ && export ARVADOS_TEST_API_HOST="$ARVADOS_API_HOST" \ @@ -477,6 +470,7 @@ stop_services() { && python sdk/python/tests/run_test_server.py stop \ && all_services_stopped=1 deactivate + unset ARVADOS_CONFIG } interrupt() { @@ -640,15 +634,12 @@ install_env() { for d in \ "$GOPATH/src/git.curoverse.com/arvados.git/tmp/GOPATH" \ "$GOPATH/src/git.curoverse.com/arvados.git/tmp" \ + "$GOPATH/src/git.curoverse.com/arvados.git/arvados" \ "$GOPATH/src/git.curoverse.com/arvados.git"; do + [[ -h "$d" ]] && rm "$d" [[ -d "$d" ]] && rmdir "$d" done fi - for d in \ - "$GOPATH/src/git.curoverse.com/arvados.git/arvados" \ - "$GOPATH/src/git.curoverse.com/arvados.git"; do - [[ -h "$d" ]] && rm "$d" - done ln -vsfT "$WORKSPACE" "$GOPATH/src/git.curoverse.com/arvados.git" go get -v github.com/kardianos/govendor cd "$GOPATH/src/git.curoverse.com/arvados.git" @@ -661,14 +652,9 @@ install_env() { . "$VENVDIR/bin/activate" # Needed for run_test_server.py which is used by certain (non-Python) tests. - pip install --no-cache-dir PyYAML \ + pip install --no-cache-dir PyYAML future \ || fatal "pip install PyYAML failed" - # Create config file. The run_test_server script requires PyYAML, - # so virtualenv needs to be active. Downstream steps like - # workbench install which require a valid config.yml. - eval $(python sdk/python/tests/run_test_server.py setup_config) - # Preinstall libcloud if using a fork; otherwise nodemanager "pip # install" won't pick it up by default. if [[ -n "$LIBCLOUD_PIN_SRC" ]]; then @@ -743,12 +729,16 @@ do_test() { case "${1}" in services/api) stop_services + check_arvados_config "$1" ;; gofmt | govendor | doc | lib/cli | lib/cloud/azure | lib/cloud/ec2 | lib/cloud/cloudtest | lib/cmd | lib/dispatchcloud/ssh_executor | lib/dispatchcloud/worker) + check_arvados_config "$1" # don't care whether services are running ;; *) + check_arvados_config "$1" if ! start_services; then + checkexit 1 "$1 tests" title "test $1 -- failed to start services" return 1 fi @@ -757,6 +747,11 @@ do_test() { retry do_test_once ${@} } +go_ldflags() { + version=${ARVADOS_VERSION:-$(git log -n1 --format=%H)-dev} + echo "-X git.curoverse.com/arvados.git/lib/cmd.version=${version} -X main.version=${version}" +} + do_test_once() { unset result @@ -776,7 +771,7 @@ do_test_once() { # before trying "go test". Otherwise, coverage-reporting # mode makes Go show the wrong line numbers when reporting # compilation errors. - go get -ldflags "-X git.curoverse.com/arvados.git/lib/cmd.version=${ARVADOS_VERSION:-$(git log -n1 --format=%H)-dev}" -t "git.curoverse.com/arvados.git/$1" && \ + go get -ldflags "$(go_ldflags)" -t "git.curoverse.com/arvados.git/$1" && \ cd "$GOPATH/src/git.curoverse.com/arvados.git/$1" && \ if [[ -n "${testargs[$1]}" ]] then @@ -828,10 +823,29 @@ do_test_once() { return $result } +check_arvados_config() { + if [[ "$1" = "env" ]] ; then + return + fi + if [[ -z "$ARVADOS_CONFIG" ]] ; then + # Create config file. The run_test_server script requires PyYAML, + # so virtualenv needs to be active. Downstream steps like + # workbench install which require a valid config.yml. + if [[ ! -s "$VENVDIR/bin/activate" ]] ; then + install_env + fi + . "$VENVDIR/bin/activate" + cd "$WORKSPACE" + eval $(python sdk/python/tests/run_test_server.py setup_config) + deactivate + fi +} + do_install() { if [[ -n "${skip[install]}" || ( -n "${only_install}" && "${only_install}" != "${1}" && "${only_install}" != "${2}" ) ]]; then return 0 fi + check_arvados_config "$1" retry do_install_once ${@} } @@ -845,7 +859,7 @@ do_install_once() { result=1 elif [[ "$2" == "go" ]] then - go get -ldflags "-X git.curoverse.com/arvados.git/lib/cmd.version=${ARVADOS_VERSION:-$(git log -n1 --format=%H)-dev}" -t "git.curoverse.com/arvados.git/$1" + go get -ldflags "$(go_ldflags)" -t "git.curoverse.com/arvados.git/$1" elif [[ "$2" == "pip" ]] then # $3 can name a path directory for us to use, including trailing @@ -966,11 +980,15 @@ install_services/api() { && git --git-dir internal.git init \ || return 1 - cd "$WORKSPACE/services/api" \ - && RAILS_ENV=test bundle exec rails db:environment:set \ - && RAILS_ENV=test bundle exec rake db:drop \ - && RAILS_ENV=test bundle exec rake db:setup \ - && RAILS_ENV=test bundle exec rake db:fixtures:load + + (cd "$WORKSPACE/services/api" + export RAILS_ENV=test + if bundle exec rails db:environment:set ; then + bundle exec rake db:drop + fi + bundle exec rake db:setup \ + && bundle exec rake db:fixtures:load + ) } declare -a pythonstuff @@ -1039,7 +1057,7 @@ test_govendor() { test_services/api() { rm -f "$WORKSPACE/services/api/git-commit.version" cd "$WORKSPACE/services/api" \ - && env RAILS_ENV=test ${short:+RAILS_TEST_SHORT=1} bundle exec rake test TESTOPTS='-v -d' ${testargs[services/api]} + && eval env RAILS_ENV=test ${short:+RAILS_TEST_SHORT=1} bundle exec rake test TESTOPTS=\'-v -d\' ${testargs[services/api]} } test_sdk/ruby() { @@ -1076,47 +1094,32 @@ test_services/nodemanager_integration() { test_apps/workbench_units() { local TASK="test:units" - if [[ -n "${testargs[apps/workbench]}" ]] || [[ -n "${testargs[apps/workbench_units]}" ]]; then - TASK="test" - fi cd "$WORKSPACE/apps/workbench" \ - && env RAILS_ENV=test ${short:+RAILS_TEST_SHORT=1} bundle exec rake ${TASK} TESTOPTS='-v -d' ${testargs[apps/workbench]} ${testargs[apps/workbench_units]} + && eval env RAILS_ENV=test ${short:+RAILS_TEST_SHORT=1} bundle exec rake ${TASK} TESTOPTS=\'-v -d\' ${testargs[apps/workbench]} ${testargs[apps/workbench_units]} } test_apps/workbench_functionals() { local TASK="test:functionals" - if [[ -n "${testargs[apps/workbench]}" ]] || [[ -n "${testargs[apps/workbench_functionals]}" ]]; then - TASK="test" - fi cd "$WORKSPACE/apps/workbench" \ - && env RAILS_ENV=test ${short:+RAILS_TEST_SHORT=1} bundle exec rake ${TASK} TESTOPTS='-v -d' ${testargs[apps/workbench]} ${testargs[apps/workbench_functionals]} + && eval env RAILS_ENV=test ${short:+RAILS_TEST_SHORT=1} bundle exec rake ${TASK} TESTOPTS=\'-v -d\' ${testargs[apps/workbench]} ${testargs[apps/workbench_functionals]} } test_apps/workbench_integration() { local TASK="test:integration" - if [[ -n "${testargs[apps/workbench]}" ]] || [[ -n "${testargs[apps/workbench_integration]}" ]]; then - TASK="test" - fi cd "$WORKSPACE/apps/workbench" \ - && env RAILS_ENV=test ${short:+RAILS_TEST_SHORT=1} bundle exec rake ${TASK} TESTOPTS='-v -d' ${testargs[apps/workbench]} ${testargs[apps/workbench_integration]} + && eval env RAILS_ENV=test ${short:+RAILS_TEST_SHORT=1} bundle exec rake ${TASK} TESTOPTS=\'-v -d\' ${testargs[apps/workbench]} ${testargs[apps/workbench_integration]} } test_apps/workbench_benchmark() { local TASK="test:benchmark" - if [[ -n "${testargs[apps/workbench]}" ]] || [[ -n "${testargs[apps/workbench_benchmark]}" ]]; then - TASK="test" - fi cd "$WORKSPACE/apps/workbench" \ - && env RAILS_ENV=test ${short:+RAILS_TEST_SHORT=1} bundle exec rake ${TASK} ${testargs[apps/workbench_benchmark]} + && eval env RAILS_ENV=test ${short:+RAILS_TEST_SHORT=1} bundle exec rake ${TASK} ${testargs[apps/workbench_benchmark]} } test_apps/workbench_profile() { local TASK="test:profile" - if [[ -n "${testargs[apps/workbench]}" ]] || [[ -n "${testargs[apps/workbench_profile]}" ]]; then - TASK="test" - fi cd "$WORKSPACE/apps/workbench" \ - && env RAILS_ENV=test ${short:+RAILS_TEST_SHORT=1} bundle exec rake ${TASK} ${testargs[apps/workbench_profile]} + && eval env RAILS_ENV=test ${short:+RAILS_TEST_SHORT=1} bundle exec rake ${TASK} ${testargs[apps/workbench_profile]} } install_deps() {