diff options
author | Jörn Friedrich Dreyer <jfd@butonic.de> | 2015-09-28 16:38:01 +0200 |
---|---|---|
committer | Jörn Friedrich Dreyer <jfd@butonic.de> | 2015-10-06 16:27:25 +0200 |
commit | 5646e39248d9ac2bade491dc99c88a10b3dfbc34 (patch) | |
tree | a330a10aa0979d00b3449205c95cf484af6d03b2 /tests/objectstore/start-swift-ceph.sh | |
parent | bb4246c9a8dc40d844ad94492cb40ece5bd35ef6 (diff) | |
download | nextcloud-server-5646e39248d9ac2bade491dc99c88a10b3dfbc34.tar.gz nextcloud-server-5646e39248d9ac2bade491dc99c88a10b3dfbc34.zip |
test objectstore with ceph docker
use default config for swift primary storage test config
allow testsuite to complete
fix timeout, script cleanup, enable debug for now
use btrfs loopback device, requires privileged container and absolute path
throw exception when storage has problems
debug by echo ...
sleep more, more debug
Diffstat (limited to 'tests/objectstore/start-swift-ceph.sh')
-rwxr-xr-x | tests/objectstore/start-swift-ceph.sh | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/tests/objectstore/start-swift-ceph.sh b/tests/objectstore/start-swift-ceph.sh new file mode 100755 index 00000000000..91a813f8bb3 --- /dev/null +++ b/tests/objectstore/start-swift-ceph.sh @@ -0,0 +1,108 @@ +#!/bin/bash +# +# ownCloud +# +# This script start a docker container to test the files_external tests +# against. It will also change the files_external config to use the docker +# container as testing environment. This is reverted in the stop step.W +# +# Set environment variable DEBUG to print config file +# +# @author Morris Jobke +# @author Robin McCorkell +# @copyright 2015 ownCloud + +if ! command -v docker >/dev/null 2>&1; then + echo "No docker executable found - skipped docker setup" + exit 0; +fi + +echo "Docker executable found - setup docker" + + +docker_image=xenopathic/ceph-keystone + +echo "Fetch recent ${docker_image} docker image" +docker pull ${docker_image} + +# retrieve current folder to place the config in the parent folder +thisFolder="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +port=5034 + +user=test +pass=testing +tenant=testenant +region=testregion +service=testceph + +container=`docker run -d \ + -e KEYSTONE_PUBLIC_PORT=${port} \ + -e KEYSTONE_ADMIN_USER=${user} \ + -e KEYSTONE_ADMIN_PASS=${pass} \ + -e KEYSTONE_ADMIN_TENANT=${tenant} \ + -e KEYSTONE_ENDPOINT_REGION=${region} \ + -e KEYSTONE_SERVICE=${service} \ + -e OSD_SIZE=300 \ + -v ${thisFolder}/entrypoint.sh:/entrypoint.sh \ + --privileged \ + --entrypoint /entrypoint.sh ${docker_image}` + +host=`docker inspect $container | grep IPAddress | cut -d '"' -f 4` + + +echo "${docker_image} container: $container" + +# put container IDs into a file to drop them after the test run (keep in mind that multiple tests run in parallel on the same host) +echo $container >> $thisFolder/dockerContainerCeph.$EXECUTOR_NUMBER.swift + +echo -n "Waiting for ceph initialization" +starttime=$(date +%s) +# support for GNU netcat and BSD netcat +while ! (nc -c -w 1 ${host} 80 </dev/null >&/dev/null \ + || nc -w 1 ${host} 80 </dev/null >&/dev/null); do + sleep 1 + echo -n '.' + if (( $(date +%s) > starttime + 160 )); then + echo + echo "[ERROR] Waited 120 seconds, no response" >&2 + exit 1 + fi +done +echo +sleep 20 # the keystone server also needs some time to fully initialize + +cat > $thisFolder/swift.config.php <<DELIM +<?php +\$CONFIG = array ( +'objectstore' => array( + 'class' => 'OC\\Files\\ObjectStore\\Swift', + 'arguments' => array( + 'username' => '$user', + 'password' => '$pass', + 'container' => 'owncloud-autotest$EXECUTOR_NUMBER', + 'autocreate' => true, + 'region' => '$region', + 'url' => 'http://$host:$port/v2.0', + 'tenantName' => '$tenant', + 'serviceName' => '$service', + ), +), +); + +DELIM + +if [ -n "$DEBUG" ]; then + echo "############## DEBUG info ###############" + echo "### Docker info" + docker info + echo "### Docker images" + docker images + echo "### current mountpoints" + mount + echo "### contents of $thisFolder/swift.config.php" + cat $thisFolder/swift.config.php + echo "### contents of $thisFolder/dockerContainerCeph.$EXECUTOR_NUMBER.swift" + cat $thisFolder/dockerContainerCeph.$EXECUTOR_NUMBER.swift + echo "############## DEBUG info end ###########" +fi |