aboutsummaryrefslogtreecommitdiffstats
path: root/tests/objectstore/start-swift-ceph.sh
diff options
context:
space:
mode:
authorJörn Friedrich Dreyer <jfd@butonic.de>2015-09-28 16:38:01 +0200
committerJörn Friedrich Dreyer <jfd@butonic.de>2015-10-06 16:27:25 +0200
commit5646e39248d9ac2bade491dc99c88a10b3dfbc34 (patch)
treea330a10aa0979d00b3449205c95cf484af6d03b2 /tests/objectstore/start-swift-ceph.sh
parentbb4246c9a8dc40d844ad94492cb40ece5bd35ef6 (diff)
downloadnextcloud-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-xtests/objectstore/start-swift-ceph.sh108
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