ENABLE_SSH=false
function usage {
- echo >&2 "usage:"
- echo >&2 "$0 (start|stop|test)"
- echo >&2 ""
- echo >&2 "$0 start [--ssh] [--doc] [--sso] [--api] [--workbench] [--keep]"
- echo >&2 " If no switches are given, the default is to start all servers."
+ echo >&2
+ echo >&2 "usage: $0 (start|stop|test) [options]"
+ echo >&2
+ echo >&2 "$0 start options:"
+ echo >&2 " -d [port], --doc[=port] Start documentation server (default port 9898)"
+ echo >&2 " -w [port], --workbench[=port] Start workbench server (default port 9899)"
+ echo >&2 " -s [port], --sso[=port] Start SSO server (default port 9901)"
+ echo >&2 " -a [port], --api[=port] Start API server (default port 9900)"
+ echo >&2 " -k, --keep Start Keep servers"
+ echo >&2 " --ssh Enable SSH access to server containers"
+ echo >&2 " -h, --help Display this help and exit"
+ echo >&2
+ echo >&2 " If no switches are given, the default is to start all"
+ echo >&2 " servers on the default ports."
+ echo >&2
echo >&2 "$0 stop"
+ echo >&2 " Stop all servers."
+ echo >&2
echo >&2 "$0 test [testname] [testname] ..."
echo >&2 " By default, all tests are run."
}
local start_workbench=false
local start_keep=false
+ # NOTE: This requires GNU getopt (part of the util-linux package on Debian-based distros).
+ local TEMP=`getopt -o d::s::a::w::kh \
+ --long doc::,sso::,api::,workbench::,keep,help,ssh \
+ -n "$0" -- "$@"`
+
+ if [ $? != 0 ] ; then echo "Use -h for help"; exit 1 ; fi
+
+ # Note the quotes around `$TEMP': they are essential!
+ eval set -- "$TEMP"
+
while [ $# -ge 1 ]
do
case $1 in
- --doc)
- start_doc=true
+ -d | --doc)
+ case "$2" in
+ "") start_doc=9898; shift 2 ;;
+ *) start_doc=$2; shift 2 ;;
+ esac
;;
- --sso)
- start_sso=true
+ -s | --sso)
+ case "$2" in
+ "") start_sso=9901; shift 2 ;;
+ *) start_sso=$2; shift 2 ;;
+ esac
;;
- --api)
- start_api=true
+ -a | --api)
+ case "$2" in
+ "") start_api=9900; shift 2 ;;
+ *) start_api=$2; shift 2 ;;
+ esac
;;
- --workbench)
- start_workbench=true
+ -w | --workbench)
+ case "$2" in
+ "") start_workbench=9899; shift 2 ;;
+ *) start_workbench=$2; shift 2 ;;
+ esac
;;
- --keep)
+ -k | --keep )
start_keep=true
+ shift
;;
--ssh)
+ # ENABLE_SSH is a global variable
ENABLE_SSH=true
+ shift
+ ;;
+ --)
+ shift
+ break
;;
*)
usage
exit 1
;;
esac
- shift
done
# If no options were selected, then start all servers.
- if $start_doc || $start_sso || $start_api || $start_workbench || $start_keep
+ if [[ $start_doc == false &&
+ $start_sso == false &&
+ $start_api == false &&
+ $start_workbench == false &&
+ $start_keep == false ]]
then
- :
- else
- start_doc=true
- start_sso=true
- start_api=true
- start_workbench=true
- start_keep=true
+ start_doc=9898
+ start_sso=9901
+ start_api=9900
+ start_workbench=9899
+ start_keep=true
+ fi
+
+ if [[ $start_doc != false ]]
+ then
+ start_container "9898:80" "doc_server" '' '' "arvados/doc"
fi
- $start_doc && start_container "9898:80" "doc_server" '' '' "arvados/doc"
- $start_sso && start_container "9901:443" "sso_server" '' '' "arvados/sso"
- $start_api && start_container "9900:443" "api_server" '' "sso_server:sso" "arvados/api"
- $start_workbench && start_container "9899:80" "workbench_server" '' "api_server:api" "arvados/workbench"
+ if [[ $start_sso != false ]]
+ then
+ start_container "9901:443" "sso_server" '' '' "arvados/sso"
+ fi
+
+ if [[ $start_api != false ]]
+ then
+ start_container "9900:443" "api_server" '' "sso_server:sso" "arvados/api"
+ fi
- if $start_keep
+ if [[ $start_workbench != false ]]
+ then
+ start_container "9899:80" "workbench_server" '' "api_server:api" "arvados/workbench"
+ fi
+
+ if [[ $start_keep != false ]]
then
# create `keep_volumes' array with a list of keep mount points
# remove any stale metadata from those volumes before starting them
make_keep_volumes
for v in ${keep_volumes[*]}
do
- [ -f $v/keep/.metadata.yml ] && rm $v/keep/.metadata.yml
+ [ -f $v/keep/.metadata.yml ] && sudo rm $v/keep/.metadata.yml
done
start_container "25107:25107" "keep_server_0" \
"${keep_volumes[0]}:/dev/keep-0" \
local alltests
if [ $# -lt 1 ]
then
- alltests="python-sdk"
+ alltests="python-sdk api"
else
alltests="$@"
fi
echo "testing $testname..."
case $testname in
python-sdk)
- ARVADOS_API_HOST=$(ip_address "api_server")
- ARVADOS_API_HOST_INSECURE=yes
- ARVADOS_API_TOKEN=$(cat api/generated/superuser_token)
+ do_start --api --keep --sso
+ export ARVADOS_API_HOST=$(ip_address "api_server")
+ export ARVADOS_API_HOST_INSECURE=yes
+ export ARVADOS_API_TOKEN=$(cat api/generated/superuser_token)
python -m unittest discover ../sdk/python
;;
+ api)
+ docker run -t -i arvados/api \
+ /usr/src/arvados/services/api/script/rake_test.sh
+ ;;
*)
echo >&2 "unknown test $testname"
;;