diff options
-rw-r--r-- | lib/private/cache/fileglobalgc.php | 10 | ||||
-rw-r--r-- | tests/lib/cache/fileglobalgc.php | 34 |
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); + } } |