summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2015-11-10 16:14:08 +0100
committerRobin Appelman <icewind@owncloud.com>2015-11-19 13:32:00 +0100
commit888df3933df7f3588de11085035d2d3ae9292fb0 (patch)
treeb7976666e9249b0be163b57fb064f3a1ade26919 /tests
parentd006a7c723e4c51a4132b0f8817392bf1f3cd534 (diff)
downloadnextcloud-server-888df3933df7f3588de11085035d2d3ae9292fb0.tar.gz
nextcloud-server-888df3933df7f3588de11085035d2d3ae9292fb0.zip
take the etag of child mounts into account for the folder etag
this replaces shared etag propagation
Diffstat (limited to 'tests')
-rw-r--r--tests/lib/files/cache/changepropagator.php33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/lib/files/cache/changepropagator.php b/tests/lib/files/cache/changepropagator.php
index 1b56da5e97c..9108330eb9b 100644
--- a/tests/lib/files/cache/changepropagator.php
+++ b/tests/lib/files/cache/changepropagator.php
@@ -94,4 +94,37 @@ class ChangePropagator extends \Test\TestCase {
$this->assertEquals(100, $time - $cache->get('foo')['mtime']);
$this->assertEquals(100, $time - $cache->get('foo/bar')['mtime']);
}
+
+ public function testPropagateCrossStorage() {
+ $storage = new Temporary();
+ $this->view->mkdir('/foo');
+ Filesystem::mount($storage, [], $this->view->getAbsolutePath('/foo/submount'));
+ $this->view->mkdir('/foo/submount/bar');
+ $this->view->file_put_contents('/foo/submount/bar/sad.txt', 'qwerty');
+
+ $oldInfo1 = $this->view->getFileInfo('/');
+ $oldInfo2 = $this->view->getFileInfo('/foo');
+ $oldInfo3 = $this->view->getFileInfo('/foo/submount');
+ $oldInfo4 = $this->view->getFileInfo('/foo/submount/bar');
+
+ $time = time() + 50;
+
+ $this->propagator->addChange('/foo/submount/bar/sad.txt');
+ $this->propagator->propagateChanges($time);
+
+ $newInfo1 = $this->view->getFileInfo('/');
+ $newInfo2 = $this->view->getFileInfo('/foo');
+ $newInfo3 = $this->view->getFileInfo('/foo/submount');
+ $newInfo4 = $this->view->getFileInfo('/foo/submount/bar');
+
+ $this->assertEquals($newInfo1->getMTime(), $time);
+ $this->assertEquals($newInfo2->getMTime(), $time);
+ $this->assertEquals($newInfo3->getMTime(), $time);
+ $this->assertEquals($newInfo4->getMTime(), $time);
+
+ $this->assertNotSame($oldInfo1->getEtag(), $newInfo1->getEtag());
+ $this->assertNotSame($oldInfo2->getEtag(), $newInfo2->getEtag());
+ $this->assertNotSame($oldInfo3->getEtag(), $newInfo3->getEtag());
+ $this->assertNotSame($oldInfo4->getEtag(), $newInfo3->getEtag());
+ }
}