Merge branch '6263-gitolite-test' refs #6263
[arvados-dev.git] / jenkins / run-tests.sh
index e191b4443bebf9fd6c8d9564acd62786ec87f056..9ca70b86656ec56b9370731cfd23c81b0bee3466 100755 (executable)
@@ -60,6 +60,7 @@ services/dockercleaner
 services/fuse
 services/keepproxy
 services/keepstore
+services/login-sync
 services/nodemanager
 services/arv-git-httpd
 sdk/cli
@@ -176,6 +177,9 @@ sanity_checks() {
         perl -e "use $mod; print \"\$$mod::VERSION\\n\"" \
             || fatal "No $mod. Try: apt-get install perl-modules libcrypt-ssleay-perl libjson-perl"
     done
+    echo -n 'gitolite: '
+    which gitolite \
+        || fatal "No gitolite. Try: apt-get install gitolite3"
 }
 
 rotate_logfile() {
@@ -388,11 +392,13 @@ mkdir -p "$GOPATH/src/git.curoverse.com"
 ln -sfn "$WORKSPACE" "$GOPATH/src/git.curoverse.com/arvados.git" \
     || fatal "symlink failed"
 
-virtualenv --setuptools "$VENVDIR" || fatal "virtualenv $VENVDIR failed"
+if ! [[ -e "$VENVDIR/bin/activate" ]] || ! [[ -e "$VENVDIR/bin/pip" ]]; then
+    virtualenv --setuptools "$VENVDIR" || fatal "virtualenv $VENVDIR failed"
+fi
 . "$VENVDIR/bin/activate"
 
 if (pip install setuptools | grep setuptools-0) || [ "$($VENVDIR/bin/easy_install --version | cut -d\  -f2 | cut -d. -f1)" -lt 18 ]; then
-    pip install --upgrade setuptools
+    pip install --upgrade setuptools pip
 fi
 
 # Note: this must be the last time we change PATH, otherwise rvm will
@@ -411,6 +417,12 @@ pip freeze 2>/dev/null | egrep ^PyYAML= \
     || pip install PyYAML >/dev/null \
     || fatal "pip install PyYAML failed"
 
+# Preinstall forked version of libcloud, because nodemanager "pip install"
+# won't pick it up by default.
+pip freeze 2>/dev/null | egrep ^apache-libcloud==0.18.1.dev1 \
+    || pip install --pre --ignore-installed https://github.com/curoverse/libcloud/archive/apache-libcloud-0.18.1.dev1.zip >/dev/null \
+    || fatal "pip install apache-libcloud failed"
+
 # If Python 3 is available, set up its virtualenv in $VENV3DIR.
 # Otherwise, skip dependent tests.
 PYTHON3=$(which python3)
@@ -558,12 +570,18 @@ install_doc() {
 }
 do_install doc
 
-install_ruby_sdk() {
-    with_test_gemset gem_uninstall_if_exists arvados \
-        && cd "$WORKSPACE/sdk/ruby" \
+install_gem() {
+    gemname=$1
+    srcpath=$2
+    with_test_gemset gem_uninstall_if_exists "$gemname" \
+        && cd "$WORKSPACE/$srcpath" \
         && bundle_install_trylocal \
-        && gem build arvados.gemspec \
-        && with_test_gemset gem install --no-ri --no-rdoc `ls -t arvados-*.gem|head -n1`
+        && gem build "$gemname.gemspec" \
+        && with_test_gemset gem install --no-ri --no-rdoc $(ls -t "$gemname"-*.gem|head -n1)
+}
+
+install_ruby_sdk() {
+    install_gem arvados sdk/ruby
 }
 do_install sdk/ruby ruby_sdk
 
@@ -575,14 +593,15 @@ install_perl_sdk() {
 do_install sdk/perl perl_sdk
 
 install_cli() {
-    with_test_gemset gem_uninstall_if_exists arvados-cli \
-        && cd "$WORKSPACE/sdk/cli" \
-        && bundle_install_trylocal \
-        && gem build arvados-cli.gemspec \
-        && with_test_gemset gem install --no-ri --no-rdoc `ls -t arvados-cli-*.gem|head -n1`
+    install_gem arvados-cli sdk/cli
 }
 do_install sdk/cli cli
 
+install_login-sync() {
+    install_gem arvados-login-sync services/login-sync
+}
+do_install services/login-sync login-sync
+
 # Install the Python SDK early. Various other test suites (like
 # keepproxy) bring up run_test_server.py, which imports the arvados
 # module. We can't actually *test* the Python SDK yet though, because
@@ -719,6 +738,12 @@ test_cli() {
 }
 do_test sdk/cli cli
 
+test_login-sync() {
+    cd "$WORKSPACE/services/login-sync" \
+        && bundle exec rake test TESTOPTS=-v ${testargs[services/login-sync]}
+}
+do_test services/login-sync login-sync
+
 for p in "${pythonstuff[@]}"
 do
     do_test "$p" pip