add tests for reusing existing data in scanner

This commit is contained in:
Robin Appelman 2013-06-17 18:03:57 +02:00
parent 398fe8bf32
commit 2ed0e6e915
2 changed files with 21 additions and 5 deletions

View File

@ -119,7 +119,7 @@ class Scanner {
$reuse = ($recursive === self::SCAN_SHALLOW) ? self::REUSE_ETAG | self::REUSE_SIZE : 0; $reuse = ($recursive === self::SCAN_SHALLOW) ? self::REUSE_ETAG | self::REUSE_SIZE : 0;
} }
$this->scanFile($path, $reuse); $this->scanFile($path, $reuse);
return $this->scanChildren($path, $recursive); return $this->scanChildren($path, $recursive, $reuse);
} }
/** /**
@ -165,9 +165,7 @@ class Scanner {
$size += $childSize; $size += $childSize;
} }
} }
if ($size !== -1) { $this->cache->put($path, array('size' => $size));
$this->cache->put($path, array('size' => $size));
}
} }
return $size; return $size;
} }

View File

@ -104,7 +104,7 @@ class Scanner extends \PHPUnit_Framework_TestCase {
$this->assertNotEquals($cachedDataFolder['size'], -1); $this->assertNotEquals($cachedDataFolder['size'], -1);
} }
function testBackgroundScan(){ function testBackgroundScan() {
$this->fillTestFolders(); $this->fillTestFolders();
$this->storage->mkdir('folder2'); $this->storage->mkdir('folder2');
$this->storage->file_put_contents('folder2/bar.txt', 'foobar'); $this->storage->file_put_contents('folder2/bar.txt', 'foobar');
@ -126,6 +126,24 @@ class Scanner extends \PHPUnit_Framework_TestCase {
$this->assertFalse($this->cache->getIncomplete()); $this->assertFalse($this->cache->getIncomplete());
} }
public function testReuseExisting() {
$this->fillTestFolders();
$this->scanner->scan('');
$oldData = $this->cache->get('');
$this->storage->unlink('folder/bar.txt');
$this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_SHALLOW, \OC\Files\Cache\Scanner::REUSE_SIZE);
$newData = $this->cache->get('');
$this->assertNotEquals($oldData['etag'], $newData['etag']);
$this->assertEquals($oldData['size'], $newData['size']);
$oldData = $newData;
$this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_SHALLOW, \OC\Files\Cache\Scanner::REUSE_ETAG);
$newData = $this->cache->get('');
$this->assertEquals($oldData['etag'], $newData['etag']);
$this->assertEquals(-1, $newData['size']);
}
function setUp() { function setUp() {
$this->storage = new \OC\Files\Storage\Temporary(array()); $this->storage = new \OC\Files\Storage\Temporary(array());
$this->scanner = new \OC\Files\Cache\Scanner($this->storage); $this->scanner = new \OC\Files\Cache\Scanner($this->storage);