Ejemplo n.º 1
0
 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());
 }