Update Python package test procedure.
[arvados.git] / jenkins / run-tests.sh
1 #!/bin/bash
2
3 EXITCODE=0
4
5 COLUMNS=80
6
7 ARVADOS_API_HOST=qr1hi.arvadosapi.com
8
9 title () {
10   printf "\n%*s\n\n" $(((${#title}+$COLUMNS)/2)) "********** $1 **********"
11 }
12
13 source /etc/profile.d/rvm.sh
14 echo $WORKSPACE
15
16 # DOCS
17 title "Starting DOC build"
18 cd "$WORKSPACE"
19 cd doc
20 bundle install --deployment
21 rm -rf .site
22 # Make sure python-epydoc is installed or the next line won't do much good!
23 PYTHONPATH=$WORKSPACE/sdk/python/ bundle exec rake generate baseurl=file://$WORKSPACE/doc/.site/ arvados_workbench_host=workbench.$ARVADOS_API_HOST arvados_api_host=$ARVADOS_API_HOST
24
25 ECODE=$?
26
27 if [[ "$ECODE" != "0" ]]; then
28   title "!!!!!! DOC BUILD FAILED !!!!!!"
29   EXITCODE=$(($EXITCODE + $ECODE))
30 fi
31
32 title "DOC build complete"
33
34 # DOC linkchecker
35 title "Starting DOC linkchecker"
36 cd "$WORKSPACE"
37 cd doc
38 bundle exec rake linkchecker baseurl=file://$WORKSPACE/doc/.site/
39
40 ECODE=$?
41
42 if [[ "$ECODE" != "0" ]]; then
43   title "!!!!!! DOC LINKCHECKER FAILED !!!!!!"
44   EXITCODE=$(($EXITCODE + $ECODE))
45 fi
46
47 title "DOC linkchecker complete"
48
49 # API SERVER
50 title "Starting API server tests"
51 cd "$WORKSPACE"
52 cd services/api
53 bundle install --deployment
54
55 rm -f config/database.yml
56 rm -f config/environments/test.rb
57 cp config/environments/test.rb.example config/environments/test.rb
58
59 # Get test database config
60 cp $HOME/arvados-api-server/database.yml config/
61 # Get test application.yml file
62 cp $HOME/arvados-api-server/application.yml config/
63
64 # Fill in a random secret_token and blob_signing_key for testing
65 SECRET_TOKEN=`echo 'puts rand(2**512).to_s(36)' |ruby`
66 BLOB_SIGNING_KEY=`echo 'puts rand(2**512).to_s(36)' |ruby`
67
68 sed -i'' -e "s:SECRET_TOKEN:$SECRET_TOKEN:" config/application.yml
69 sed -i'' -e "s:BLOB_SIGNING_KEY:$BLOB_SIGNING_KEY:" config/application.yml
70
71 export RAILS_ENV=test
72
73 # Set up empty git repo (for git tests)
74 GITDIR=$WORKSPACE/tmpgit
75 rm -rf $GITDIR
76 mkdir $GITDIR
77 sed -i'' -e "s:/var/cache/git:$GITDIR:" config/application.default.yml
78
79 rm -rf $GITDIR
80 mkdir -p $GITDIR/test
81 cd $GITDIR/test
82 /usr/bin/git init
83 /usr/bin/git config user.email "jenkins@ci.curoverse.com"
84 /usr/bin/git config user.name "Jenkins, CI"
85 touch tmp
86 /usr/bin/git add tmp
87 /usr/bin/git commit -m 'initial commit'
88
89 cd "$WORKSPACE"
90 cd services/api
91
92 bundle exec rake db:drop
93 bundle exec rake db:create
94 bundle exec rake db:setup
95 bundle exec rake test
96
97 ECODE=$?
98
99 if [[ "$ECODE" != "0" ]]; then
100   title "!!!!!! API SERVER TESTS FAILED !!!!!!"
101   EXITCODE=$(($EXITCODE + $ECODE))
102 fi
103
104 title "API server tests complete"
105
106 # Keep
107 title "Starting Keep tests"
108 cd "$WORKSPACE"
109 cd services/keep/src/keep
110 GOPATH=$HOME/gocode go test
111
112 ECODE=$?
113
114 if [[ "$ECODE" != "0" ]]; then
115   title "!!!!!! Keep TESTS FAILED !!!!!!"
116   EXITCODE=$(($EXITCODE + $ECODE))
117 fi
118
119 title "Keep tests complete"
120
121 # WORKBENCH
122 title "Starting workbench tests"
123 cd "$WORKSPACE"
124 cd apps/workbench
125 bundle install --deployment
126
127 echo $PATH
128
129
130 bundle exec rake test
131
132 ECODE=$?
133
134 if [[ "$ECODE" != "0" ]]; then
135   title "!!!!!! WORKBENCH TESTS FAILED !!!!!!"
136   EXITCODE=$(($EXITCODE + $ECODE))
137 fi
138
139 title "Workbench tests complete"
140
141 # Python SDK
142 title "Starting Python SDK tests"
143 cd "$WORKSPACE"
144 cd sdk/cli
145 bundle install --deployment
146
147 # Set up Python SDK and dependencies
148
149 cd "$WORKSPACE"
150 cd sdk/python
151
152 VENVDIR=$(mktemp -d)
153 virtualenv --setuptools "$VENVDIR"
154 GOPATH="$HOME/gocode" "$VENVDIR/bin/python" setup.py test
155
156 ECODE=$?
157
158 if [[ "$ECODE" != "0" ]]; then
159   title "!!!!!! Python SDK TESTS FAILED !!!!!!"
160   EXITCODE=$(($EXITCODE + $ECODE))
161 fi
162
163 "$VENVDIR/bin/python" setup.py egg_info -b ".$(git log --format=format:%ct.%h -n1 .)" sdist rotate --keep=1
164 "$VENVDIR/bin/pip" install dist/arvados-python-client-0.1.*.tar.gz
165
166 ECODE=$?
167
168 if [[ "$ECODE" != "0" ]]; then
169   title "!!!!!! Python SDK install FAILED !!!!!!"
170   EXITCODE=$(($EXITCODE + $ECODE))
171 fi
172
173 cd "$WORKSPACE"
174 cd services/fuse
175
176 # We reuse $VENVDIR from the Python SDK tests above
177 GOPATH="$HOME/gocode" "$VENVDIR/bin/python" setup.py test
178
179 ECODE=$?
180
181 if [[ "$ECODE" != "0" ]]; then
182   title "!!!!!! Fuse TESTS FAILED !!!!!!"
183   EXITCODE=$(($EXITCODE + $ECODE))
184 fi
185
186 "$VENVDIR/bin/python" setup.py egg_info -b ".$(git log --format=format:%ct.%h -n1 .)" sdist rotate --keep=1
187 "$VENVDIR/bin/pip" install dist/arvados_fuse-0.1.*.tar.gz
188
189 ECODE=$?
190
191 if [[ "$ECODE" != "0" ]]; then
192   title "!!!!!! Fuse install FAILED !!!!!!"
193   EXITCODE=$(($EXITCODE + $ECODE))
194 fi
195
196 title "Python SDK tests complete"
197
198 # Clean up $VENVDIR
199 rm -rf "$VENVDIR"
200
201 # The CLI SDK tests require a working API server, so let's skip those for now.
202 exit $EXITCODE
203
204 # CLI SDK
205 title "Starting SDK CLI tests"
206 cd "$WORKSPACE"
207 cd sdk/cli
208 bundle install --deployment
209
210 # Set up Python SDK and dependencies
211 cd ../python
212 rm -rf $HOME/lib/python
213 mkdir $HOME/lib/python
214 PYTHONPATH="$HOME/lib/python" easy_install --install-dir=$HOME/lib/python --upgrade google-api-python-client
215 PYTHONPATH="$HOME/lib/python" python setup.py install --home=$HOME
216
217 cd ../cli
218 mkdir -p /tmp/keep
219 export KEEP_LOCAL_STORE=/tmp/keep
220 PYTHONPATH="$HOME/lib/python" bundle exec rake test
221
222 ECODE=$?
223
224 if [[ "$ECODE" != "0" ]]; then
225   title "!!!!!! SDK CLI TESTS FAILED !!!!!!"
226   EXITCODE=$(($EXITCODE + $ECODE))
227 fi
228
229 title "SDK CLI tests complete"
230
231 exit $EXITCODE