summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/cache/fileglobalgc.php10
-rw-r--r--tests/lib/cache/fileglobalgc.php34
2 files changed, 41 insertions, 3 deletions
diff --git a/lib/private/cache/fileglobalgc.php b/lib/private/cache/fileglobalgc.php
index 039992718ab..b07e886f652 100644
--- a/lib/private/cache/fileglobalgc.php
+++ b/lib/private/cache/fileglobalgc.php
@@ -6,6 +6,9 @@ use OC\BackgroundJob\Job;
use OCP\IConfig;
class FileGlobalGC extends Job {
+ // only do cleanup every 5 minutes
+ const CLEANUP_TTL_SEC = 300;
+
public function run($argument) {
$this->gc(\OC::$server->getConfig(), $this->getCacheDir());
}
@@ -39,8 +42,7 @@ class FileGlobalGC extends Job {
public function gc(IConfig $config, $cacheDir) {
$lastRun = $config->getAppValue('core', 'global_cache_gc_lastrun', 0);
$now = time();
- if (($now - $lastRun) < 300) {
- // only do cleanup every 5 minutes
+ if (($now - $lastRun) < self::CLEANUP_TTL_SEC) {
return;
}
$config->setAppValue('core', 'global_cache_gc_lastrun', $now);
@@ -48,6 +50,8 @@ class FileGlobalGC extends Job {
return;
}
$paths = $this->getExpiredPaths($cacheDir, $now);
- array_walk($paths, 'unlink');
+ array_walk($paths, function($file) {
+ unlink($file);
+ });
}
}
diff --git a/tests/lib/cache/fileglobalgc.php b/tests/lib/cache/fileglobalgc.php
index 0b0a4cb002d..4f032538e7d 100644
--- a/tests/lib/cache/fileglobalgc.php
+++ b/tests/lib/cache/fileglobalgc.php
@@ -70,4 +70,38 @@ class FileGlobalGC extends TestCase {
mkdir($this->cacheDir . 'asd');
$this->assertEquals([$this->cacheDir . 'foo'], $this->gc->getExpiredPaths($this->cacheDir, $time));
}
+
+ public function testGcUnlink() {
+ $time = time();
+ $this->addCacheFile('foo', $time - 10);
+ $this->addCacheFile('bar', $time - 10);
+ $this->addCacheFile('asd', $time + 10);
+
+ $config = $this->getMock('\OCP\IConfig');
+ $config->expects($this->once())
+ ->method('getAppValue')
+ ->with('core', 'global_cache_gc_lastrun', 0)
+ ->willReturn($time - \OC\Cache\FileGlobalGC::CLEANUP_TTL_SEC - 1);
+ $config->expects($this->once())
+ ->method('setAppValue');
+
+ $this->gc->gc($config, $this->cacheDir);
+ $this->assertFileNotExists($this->cacheDir . 'foo');
+ $this->assertFileNotExists($this->cacheDir . 'bar');
+ $this->assertFileExists($this->cacheDir . 'asd');
+ }
+
+ public function testGcLastRun() {
+ $time = time();
+
+ $config = $this->getMock('\OCP\IConfig');
+ $config->expects($this->once())
+ ->method('getAppValue')
+ ->with('core', 'global_cache_gc_lastrun', 0)
+ ->willReturn($time);
+ $config->expects($this->never())
+ ->method('setAppValue');
+
+ $this->gc->gc($config, $this->cacheDir);
+ }
}