13306: select between "conformance" and "integration" in test_with_arvbox.sh
[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 suite=conformance
18
19 while test -n "$1" ; do
20     arg="$1"
21     case "$arg" in
22         --no-reset-container)
23             reset_container=0
24             shift
25             ;;
26         --leave-running)
27             leave_running=1
28             shift
29             ;;
30         --config)
31             config=$2
32             shift ; shift
33             ;;
34         --tag)
35             tag=$2
36             shift ; shift
37             ;;
38         --build)
39             build=1
40             shift
41             ;;
42         --pythoncmd)
43             pythoncmd=$2
44             shift ; shift
45             ;;
46         --suite)
47             suite=$2
48             shift ; shift
49             ;;
50         -h|--help)
51             echo "$0 [--no-reset-container] [--leave-running] [--config dev|localdemo] [--tag docker_tag] [--build] [--pythoncmd python(2|3)] [--suite (integration|conformance)]"
52             exit
53             ;;
54         *)
55             break
56             ;;
57     esac
58 done
59
60 if test -z "$ARVBOX_CONTAINER" ; then
61    export ARVBOX_CONTAINER=cwltest
62 fi
63
64 if test $reset_container = 1 ; then
65     arvbox stop
66     docker rm $ARVBOX_CONTAINER
67     arvbox reset -f
68 fi
69
70 arvbox start $config $tag
71
72 arvbox pipe <<EOF
73 set -eu -o pipefail
74
75 . /usr/local/lib/arvbox/common.sh
76
77 export PYCMD=$pythoncmd
78
79 if test $config = dev ; then
80   cd /usr/src/arvados/sdk/cwl
81   \$PYCMD setup.py sdist
82   pip_install \$(ls -r dist/arvados-cwl-runner-*.tar.gz | head -n1)
83 fi
84
85 set -x
86
87 if [ \$PYCMD = "python3" ]; then
88     pip3 install cwltest
89 else
90     pip3 install cwltest
91 fi
92
93 mkdir -p /tmp/cwltest
94 cd /tmp/cwltest
95 if ! test -d common-workflow-language ; then
96   git clone https://github.com/common-workflow-language/common-workflow-language.git
97 fi
98 cd common-workflow-language
99 git pull
100 export ARVADOS_API_HOST=localhost:8000
101 export ARVADOS_API_HOST_INSECURE=1
102 export ARVADOS_API_TOKEN=\$(cat /var/lib/arvados/superuser_token)
103
104
105 if test -n "$build" ; then
106    /usr/src/arvados/build/build-dev-docker-jobs-image.sh
107 elif test "$tag" = "latest" ; then
108   arv-keepdocker --pull arvados/jobs $tag
109 else
110   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'])")
111   arv-keepdocker --pull arvados/jobs \$jobsimg
112   docker tag arvados/jobs:\$jobsimg arvados/jobs:latest
113   arv-keepdocker arvados/jobs latest
114 fi
115
116 cat >/tmp/cwltest/arv-cwl-jobs <<EOF2
117 #!/bin/sh
118 exec arvados-cwl-runner --api=jobs \\\$@
119 EOF2
120 chmod +x /tmp/cwltest/arv-cwl-jobs
121
122 cat >/tmp/cwltest/arv-cwl-containers <<EOF2
123 #!/bin/sh
124 exec arvados-cwl-runner --api=containers \\\$@
125 EOF2
126 chmod +x /tmp/cwltest/arv-cwl-containers
127
128 env
129 if [[ "$suite" = "conformance" ]] ; then
130    exec ./run_test.sh RUNNER=/tmp/cwltest/arv-cwl-containers EXTRA=--compute-checksum $@
131 elif [[ "$suite" = "integration" ]] ; then
132    cd /usr/src/arvados/sdk/cwl/tests
133    exec ./arvados-tests.sh $@
134 fi
135 EOF
136
137 CODE=$?
138
139 if test $leave_running = 0 ; then
140     arvbox stop
141 fi
142
143 exit $CODE