summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2017-05-16 10:10:25 -0500
committerGitHub <noreply@github.com>2017-05-16 10:10:25 -0500
commit78e6c2dea417f17db52648f6819ab20889e2554c (patch)
tree2c64ca14e90a276338e41fc76061b90854c48c61
parent15f7fe022b222cdc080719d8585df29c8259053a (diff)
parent0e66c2a38aa86df2b6a1273b0cf4ad95485ce6e7 (diff)
downloadnextcloud-server-78e6c2dea417f17db52648f6819ab20889e2554c.tar.gz
nextcloud-server-78e6c2dea417f17db52648f6819ab20889e2554c.zip
Merge pull request #4666 from nextcloud/enable-redis-cluster
Add redis cluster tests to our CI jobs
-rw-r--r--.drone.yml18
-rwxr-xr-xautotest.sh2
-rw-r--r--lib/private/Memcache/Redis.php10
-rw-r--r--tests/redis-cluster.config.php20
4 files changed, 44 insertions, 6 deletions
diff --git a/.drone.yml b/.drone.yml
index 2080de5a123..f26e5d3f870 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -526,6 +526,17 @@ pipeline:
when:
matrix:
TEST: memcache-memcached
+ memcache-redis-cluster:
+ image: nextcloudci/php7.0:php7.0-7
+ commands:
+ - sleep 10
+ - ./autotest.sh sqlite tests/lib/Memcache/RedisTest.php
+ - wget https://codecov.io/bash -O codecov.sh
+ - sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
+ - sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-clover-sqlite.xml; fi"
+ when:
+ matrix:
+ TEST: memcache-redis-cluster
matrix:
include:
- TESTS: checkers
@@ -582,6 +593,8 @@ matrix:
- TESTS: sqlite-php7.0-samba-native
- TESTS: sqlite-php7.0-samba-non-native
- TEST: memcache-memcached
+ - TEST: memcache-redis-cluster
+ ENABLE_REDIS_CLUSTER: true
- TESTS: sqlite-php7.0-webdav-apache
ENABLE_REDIS: true
- DB: NODB
@@ -618,6 +631,11 @@ services:
when:
matrix:
ENABLE_REDIS: true
+ cache-cluster:
+ image: grokzen/redis-cluster
+ when:
+ matrix:
+ ENABLE_REDIS_CLUSTER: true
postgres:
image: postgres
environment:
diff --git a/autotest.sh b/autotest.sh
index b00946d0c02..069488a3346 100755
--- a/autotest.sh
+++ b/autotest.sh
@@ -184,6 +184,8 @@ function execute_tests {
if [ "$ENABLE_REDIS" == "true" ] ; then
cp tests/redis.config.php config/redis.config.php
+ elif [ "$ENABLE_REDIS_CLUSTER" == "true" ] ; then
+ cp tests/redis-cluster.config.php config/redis.config.php
fi
_DB=$DB
diff --git a/lib/private/Memcache/Redis.php b/lib/private/Memcache/Redis.php
index a154d08deca..dd7e929a828 100644
--- a/lib/private/Memcache/Redis.php
+++ b/lib/private/Memcache/Redis.php
@@ -79,12 +79,10 @@ class Redis extends Cache implements IMemcacheTTL {
public function clear($prefix = '') {
$prefix = $this->getNameSpace() . $prefix . '*';
- $it = null;
- self::$cache->setOption(\Redis::OPT_SCAN, \Redis::SCAN_RETRY);
- while ($keys = self::$cache->scan($it, $prefix)) {
- self::$cache->del($keys);
- }
- return true;
+ $keys = self::$cache->keys($prefix);
+ $deleted = self::$cache->del($keys);
+
+ return count($keys) === $deleted;
}
/**
diff --git a/tests/redis-cluster.config.php b/tests/redis-cluster.config.php
new file mode 100644
index 00000000000..c7df2a91854
--- /dev/null
+++ b/tests/redis-cluster.config.php
@@ -0,0 +1,20 @@
+<?php
+
+$CONFIG = [
+ 'memcache.local' => '\\OC\\Memcache\\Redis',
+ 'memcache.distributed' => '\\OC\\Memcache\\Redis',
+ 'memcache.locking' => '\\OC\\Memcache\\Redis',
+ 'redis.cluster' => [
+ 'seeds' => [ // provide some/all of the cluster servers to bootstrap discovery, port required
+ 'localhost:7000',
+ 'localhost:7001',
+ 'localhost:7002',
+ 'localhost:7003',
+ 'localhost:7004',
+ 'localhost:7005'
+ ],
+ 'timeout' => 0.0,
+ 'read_timeout' => 0.0,
+ 'failover_mode' => \RedisCluster::FAILOVER_ERROR
+ ],
+];