Scanner: additional tests for reusing etags during scanning

This commit is contained in:
Robin Appelman 2013-08-12 15:37:15 +02:00
parent 5ebff8cfc4
commit 1877a42a0d
2 changed files with 92 additions and 0 deletions

View File

@ -143,6 +143,24 @@ class Scanner extends \PHPUnit_Framework_TestCase {
$newData = $this->cache->get(''); $newData = $this->cache->get('');
$this->assertEquals($oldData['etag'], $newData['etag']); $this->assertEquals($oldData['etag'], $newData['etag']);
$this->assertEquals(-1, $newData['size']); $this->assertEquals(-1, $newData['size']);
$this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_RECURSIVE);
$oldData = $this->cache->get('');
$this->assertNotEquals(-1, $oldData['size']);
$this->scanner->scanFile('', \OC\Files\Cache\Scanner::REUSE_ETAG + \OC\Files\Cache\Scanner::REUSE_SIZE);
$newData = $this->cache->get('');
$this->assertEquals($oldData['etag'], $newData['etag']);
$this->assertEquals($oldData['size'], $newData['size']);
$this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_RECURSIVE, \OC\Files\Cache\Scanner::REUSE_ETAG + \OC\Files\Cache\Scanner::REUSE_SIZE);
$newData = $this->cache->get('');
$this->assertEquals($oldData['etag'], $newData['etag']);
$this->assertEquals($oldData['size'], $newData['size']);
$this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_SHALLOW, \OC\Files\Cache\Scanner::REUSE_ETAG + \OC\Files\Cache\Scanner::REUSE_SIZE);
$newData = $this->cache->get('');
$this->assertEquals($oldData['etag'], $newData['etag']);
$this->assertEquals($oldData['size'], $newData['size']);
} }
public function testRemovedFile() { public function testRemovedFile() {

View File

@ -0,0 +1,74 @@
<?php
/**
* Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
namespace Test\Files\Utils;
use OC\Files\Mount\Mount;
use OC\Files\Storage\Temporary;
class TestScanner extends \OC\Files\Utils\Scanner {
/**
* @var \OC\Files\Mount\Mount[] $mounts
*/
private $mounts = array();
/**
* @param \OC\Files\Mount\Mount $mount
*/
public function addMount($mount) {
$this->mounts[] = $mount;
}
protected function getMounts($dir) {
return $this->mounts;
}
}
class Scanner extends \PHPUnit_Framework_TestCase {
public function testReuseExistingRoot() {
$storage = new Temporary(array());
$mount = new Mount($storage, '');
$cache = $storage->getCache();
$storage->mkdir('folder');
$storage->file_put_contents('foo.txt', 'qwerty');
$storage->file_put_contents('folder/bar.txt', 'qwerty');
$scanner = new TestScanner('');
$scanner->addMount($mount);
$scanner->scan('');
$this->assertTrue($cache->inCache('folder/bar.txt'));
$oldRoot = $cache->get('');
$scanner->scan('');
$newRoot = $cache->get('');
$this->assertEquals($oldRoot, $newRoot);
}
public function testReuseExistingFile() {
$storage = new Temporary(array());
$mount = new Mount($storage, '');
$cache = $storage->getCache();
$storage->mkdir('folder');
$storage->file_put_contents('foo.txt', 'qwerty');
$storage->file_put_contents('folder/bar.txt', 'qwerty');
$scanner = new TestScanner('');
$scanner->addMount($mount);
$scanner->scan('');
$this->assertTrue($cache->inCache('folder/bar.txt'));
$old = $cache->get('folder/bar.txt');
$scanner->scan('');
$new = $cache->get('folder/bar.txt');
$this->assertEquals($old, $new);
}
}