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.
pull/350/head
Thomas Müller 9 years ago committed by GitHub
parent 34eec57262
commit d2d99a91a0
  1. 3
      apps/files_sharing/tests/MountProviderTest.php
  2. 2
      lib/private/Files/View.php
  3. 11
      tests/objectstore/start-swift-ceph.sh
  4. 45
      tests/objectstore/wait-for-connection

@ -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 */

@ -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,

@ -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

@ -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);
Loading…
Cancel
Save