13306: test_with_arvbox.sh can test either python2 or python3
[arvados.git] / sdk / cwl / test_with_arvbox.sh
1 #!/bin/sh
2 # Copyright (C) The Arvados Authors. All rights reserved.
3 #
4 # SPDX-License-Identifier: Apache-2.0
5
6 set -x
7
8 if ! which arvbox >/dev/null ; then
9     export PATH=$PATH:$(readlink -f $(dirname $0)/../../tools/arvbox/bin)
10 fi
11
12 reset_container=1
13 leave_running=0
14 config=dev
15 tag="latest"
16 pythoncmd=python
17
18 while test -n "$1" ; do
19     arg="$1"
20     case "$arg" in
21         --no-reset-container)
22             reset_container=0
23             shift
24             ;;
25         --leave-running)
26             leave_running=1
27             shift
28             ;;
29         --config)
30             config=$2
31             shift ; shift
32             ;;
33         --tag)
34             tag=$2
35             shift ; shift
36             ;;
37         --build)
38             build=1
39             shift
40             ;;
41         --pythoncmd)
42             pythoncmd=$2
43             shift ; shift
44             ;;
45         -h|--help)
46             echo "$0 [--no-reset-container] [--leave-running] [--config dev|localdemo] [--tag docker_tag] [--build] [--pythoncmd python[23]]"
47             exit
48             ;;
49         *)
50             break
51             ;;
52     esac
53 done
54
55 if test -z "$ARVBOX_CONTAINER" ; then
56    export ARVBOX_CONTAINER=cwltest
57 fi
58
59 if test $reset_container = 1 ; then
60     arvbox stop
61     docker rm $ARVBOX_CONTAINER
62     arvbox reset -f
63 fi
64
65 arvbox start $config $tag
66
67 arvbox pipe <<EOF
68 set -eu -o pipefail
69
70 . /usr/local/lib/arvbox/common.sh
71
72 export PYCMD=$pythoncmd
73
74 if test $config = dev ; then
75   cd /usr/src/arvados/sdk/cwl
76   \$PYCMD setup.py sdist
77   pip_install \$(ls -r dist/arvados-cwl-runner-*.tar.gz | head -n1)
78 fi
79
80 if [ \$PYCMD = "python3" ]; then
81     pip3 install cwltest
82 else
83     pip3 install cwltest
84 fi
85
86 mkdir -p /tmp/cwltest
87 cd /tmp/cwltest
88 if ! test -d common-workflow-language ; then
89   git clone https://github.com/common-workflow-language/common-workflow-language.git
90 fi
91 cd common-workflow-language
92 git pull
93 export ARVADOS_API_HOST=localhost:8000
94 export ARVADOS_API_HOST_INSECURE=1
95 export ARVADOS_API_TOKEN=\$(cat /var/lib/arvados/superuser_token)
96
97
98 if test -n "$build" ; then
99    /usr/src/arvados/build/build-dev-docker-jobs-image.sh
100 elif test "$tag" = "latest" ; then
101   arv-keepdocker --pull arvados/jobs $tag
102 else
103   jobsimg=\$(curl https://versions.arvados.org/v1/commit/$tag | python -c "import json; import sys; sys.stdout.write(json.load(sys.stdin)['Versions']['Docker']['arvados/jobs'])")
104   arv-keepdocker --pull arvados/jobs \$jobsimg
105   docker tag arvados/jobs:\$jobsimg arvados/jobs:latest
106   arv-keepdocker arvados/jobs latest
107 fi
108
109 cat >/tmp/cwltest/arv-cwl-jobs <<EOF2
110 #!/bin/sh
111 exec arvados-cwl-runner --api=jobs \\\$@
112 EOF2
113 chmod +x /tmp/cwltest/arv-cwl-jobs
114
115 cat >/tmp/cwltest/arv-cwl-containers <<EOF2
116 #!/bin/sh
117 exec arvados-cwl-runner --api=containers \\\$@
118 EOF2
119 chmod +x /tmp/cwltest/arv-cwl-containers
120
121 env
122 exec ./run_test.sh RUNNER=/tmp/cwltest/arv-cwl-containers EXTRA=--compute-checksum $@
123 EOF
124
125 CODE=$?
126
127 if test $leave_running = 0 ; then
128     arvbox stop
129 fi
130
131 exit $CODE