public function testBatchedPropagation() { $this->storage->mkdir('foo/baz'); $this->storage->mkdir('asd'); $this->storage->file_put_contents('asd/file.txt', 'bar'); $this->storage->file_put_contents('foo/baz/file.txt', 'bar'); $this->storage->getScanner()->scan(''); $paths = ['', 'foo', 'foo/bar', 'asd', 'foo/baz']; $oldInfos = $this->getFileInfos($paths); $propagator = $this->storage->getPropagator(); $propagator->beginBatch(); $propagator->propagateChange('asd/file.txt', time(), 10); $propagator->propagateChange('foo/bar/file.txt', time(), 2); $newInfos = $this->getFileInfos($paths); // no changes until we finish the batch foreach ($oldInfos as $i => $oldInfo) { $this->assertEquals($oldInfo->getSize(), $newInfos[$i]->getSize()); $this->assertEquals($oldInfo->getEtag(), $newInfos[$i]->getEtag()); $this->assertEquals($oldInfo->getMTime(), $newInfos[$i]->getMTime()); } $propagator->commitBatch(); $newInfos = $this->getFileInfos($paths); foreach ($oldInfos as $i => $oldInfo) { if ($oldInfo->getPath() !== 'foo/baz') { $this->assertNotEquals($oldInfo->getEtag(), $newInfos[$i]->getEtag()); } } $this->assertEquals($oldInfos['']->getSize() + 12, $newInfos['']->getSize()); $this->assertEquals($oldInfos['asd']->getSize() + 10, $newInfos['asd']->getSize()); $this->assertEquals($oldInfos['foo']->getSize() + 2, $newInfos['foo']->getSize()); $this->assertEquals($oldInfos['foo/bar']->getSize() + 2, $newInfos['foo/bar']->getSize()); $this->assertEquals($oldInfos['foo/baz']->getSize(), $newInfos['foo/baz']->getSize()); }