diff options
author | Thomas Müller <DeepDiver1975@users.noreply.github.com> | 2016-07-05 08:54:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-05 08:54:51 +0200 |
commit | d2d99a91a0bb47ab4f2116692f363b90a736711b (patch) | |
tree | a68250d1e2a7b2f25d2062504a741b8dbf0b1540 | |
parent | 34eec5726297d1720f5390a567609b07e2cbdd9f (diff) | |
download | nextcloud-server-d2d99a91a0bb47ab4f2116692f363b90a736711b.tar.gz nextcloud-server-d2d99a91a0bb47ab4f2116692f363b90a736711b.zip |
fix swift primary object store test (#25281)
* Wait for socket to be open
* Fix call on null
* Allow DB access for MountProviderTest
Makes unit tests pass when using object store, since their FS access is
actually oc_filecache DB access. It is currently not possible to mock
or bypass the logic from "SharedMount::verifyMountPoint()" triggered by
this test.
-rw-r--r-- | apps/files_sharing/tests/MountProviderTest.php | 3 | ||||
-rw-r--r-- | lib/private/Files/View.php | 2 | ||||
-rwxr-xr-x | tests/objectstore/start-swift-ceph.sh | 11 | ||||
-rwxr-xr-x | tests/objectstore/wait-for-connection | 45 |
4 files changed, 59 insertions, 2 deletions
diff --git a/apps/files_sharing/tests/MountProviderTest.php b/apps/files_sharing/tests/MountProviderTest.php index f69098cde7b..90d9f0a8567 100644 --- a/apps/files_sharing/tests/MountProviderTest.php +++ b/apps/files_sharing/tests/MountProviderTest.php @@ -30,6 +30,9 @@ use OCP\Share\IShare; use OCP\Share\IManager; use OCP\Files\Mount\IMountPoint; +/** + * @group DB + */ class MountProviderTest extends \Test\TestCase { /** @var MountProvider */ diff --git a/lib/private/Files/View.php b/lib/private/Files/View.php index 31549c93cb2..7d9771e6394 100644 --- a/lib/private/Files/View.php +++ b/lib/private/Files/View.php @@ -1980,7 +1980,7 @@ class View { $mount = $this->getMountForLock($absolutePath, $lockMountPoint); if ($mount) { $storage = $mount->getStorage(); - if ($storage->instanceOfStorage('\OCP\Files\Storage\ILockingStorage')) { + if ($storage && $storage->instanceOfStorage('\OCP\Files\Storage\ILockingStorage')) { $storage->releaseLock( $mount->getInternalPath($absolutePath), $type, diff --git a/tests/objectstore/start-swift-ceph.sh b/tests/objectstore/start-swift-ceph.sh index 089aab6a648..bbf483c2897 100755 --- a/tests/objectstore/start-swift-ceph.sh +++ b/tests/objectstore/start-swift-ceph.sh @@ -30,6 +30,7 @@ thisFolder="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # create readiness notification socket notify_sock=$(readlink -f "$thisFolder"/dockerContainerCeph.$EXECUTOR_NUMBER.swift.sock) +rm -f "$notify_sock" # in case an unfinished test left one behind mkfifo "$notify_sock" port=5034 @@ -67,7 +68,13 @@ if [[ $ready != 'READY=1' ]]; then docker logs $container exit 1 fi -sleep 1 +if ! "$thisFolder"/wait-for-connection ${host} 80 600; then + echo "[ERROR] Waited 600 seconds, no response" >&2 + docker logs $container + exit 1 +fi +echo "Waiting another 15 seconds" +sleep 15 cat > $thisFolder/swift.config.php <<DELIM <?php @@ -101,5 +108,7 @@ if [ -n "$DEBUG" ]; then cat $thisFolder/swift.config.php echo "### contents of $thisFolder/dockerContainerCeph.$EXECUTOR_NUMBER.swift" cat $thisFolder/dockerContainerCeph.$EXECUTOR_NUMBER.swift + echo "### docker logs" + docker logs $container echo "############## DEBUG info end ###########" fi diff --git a/tests/objectstore/wait-for-connection b/tests/objectstore/wait-for-connection new file mode 100755 index 00000000000..2c480fb733e --- /dev/null +++ b/tests/objectstore/wait-for-connection @@ -0,0 +1,45 @@ +#!/usr/bin/php +<?php + +$timeout = 60; + +switch ($argc) { +case 4: + $timeout = (float)$argv[3]; +case 3: + $host = $argv[1]; + $port = (int)$argv[2]; + break; +default: + fwrite(STDERR, 'Usage: '.$argv[0].' host port [timeout]'."\n"); + exit(2); +} + +if ($timeout < 0) { + fwrite(STDERR, 'Timeout must be greater than zero'."\n"); + exit(2); +} +if ($port < 1) { + fwrite(STDERR, 'Port must be an integer greater than zero'."\n"); + exit(2); +} + +$socketTimeout = (float)ini_get('default_socket_timeout'); +if ($socketTimeout > $timeout) { + $socketTimeout = $timeout; +} + +$stopTime = time() + $timeout; +do { + $sock = @fsockopen($host, $port, $errno, $errstr, $socketTimeout); + if ($sock !== false) { + fclose($sock); + fwrite(STDOUT, "\n"); + exit(0); + } + sleep(1); + fwrite(STDOUT, '.'); +} while (time() < $stopTime); + +fwrite(STDOUT, "\n"); +exit(1); |