diff options
author | Christian Kamm <mail@ckamm.de> | 2019-01-23 17:12:02 +0300 |
---|---|---|
committer | ckamm <mail@ckamm.de> | 2019-02-11 15:35:14 +0300 |
commit | 010abe4c823af3dae7078854d1096f25b8b7225c (patch) | |
tree | 48852485d65dd29243f6e2a5fec69706b4294b76 /test | |
parent | 8ea639e58f2d2599f3f966f9f65a4f29c025ca43 (diff) |
Pin state updates
- unspecified and inherited are different
- move enum to header in common/
- access through Vfs instead of directly in Journal
Diffstat (limited to 'test')
-rw-r--r-- | test/syncenginetestutils.h | 30 | ||||
-rw-r--r-- | test/testsyncvirtualfiles.cpp | 45 |
2 files changed, 54 insertions, 21 deletions
diff --git a/test/syncenginetestutils.h b/test/syncenginetestutils.h index b4f9e89d5..549d0092f 100644 --- a/test/syncenginetestutils.h +++ b/test/syncenginetestutils.h @@ -12,6 +12,7 @@ #include "filesystem.h" #include "syncengine.h" #include "common/syncjournaldb.h" +#include "common/vfs.h" #include "csync_exclude.h" #include <cstring> @@ -1139,12 +1140,41 @@ public: // Ignore temporary files from the download. (This is in the default exclude list, but we don't load it) _syncEngine->excludedFiles().addManualExclude("]*.~*"); + // Ensure we have a valid VfsOff instance "running" + switchToVfs(_syncEngine->syncOptions()._vfs); + // A new folder will update the local file state database on first sync. // To have a state matching what users will encounter, we have to a sync // using an identical local/remote file tree first. syncOnce(); } + void switchToVfs(QSharedPointer<OCC::Vfs> vfs) + { + auto opts = _syncEngine->syncOptions(); + + opts._vfs->stop(); + QObject::disconnect(_syncEngine.get(), 0, opts._vfs.data(), 0); + + opts._vfs = vfs; + _syncEngine->setSyncOptions(opts); + + OCC::VfsSetupParams vfsParams; + vfsParams.filesystemPath = localPath(); + vfsParams.remotePath = ""; + vfsParams.account = _account; + vfsParams.journal = _journalDb.get(); + vfsParams.providerName = "OC-TEST"; + vfsParams.providerVersion = "0.1"; + vfsParams.enableShellIntegration = false; + QObject::connect(_syncEngine.get(), &QObject::destroyed, vfs.data(), [vfs]() { + vfs->stop(); + vfs->unregisterFolder(); + }); + + vfs->start(vfsParams); + } + OCC::AccountPtr account() const { return _account; } OCC::SyncEngine &syncEngine() const { return *_syncEngine; } OCC::SyncJournalDb &syncJournal() const { return *_journalDb; } diff --git a/test/testsyncvirtualfiles.cpp b/test/testsyncvirtualfiles.cpp index 7a3b154cf..bb17f3e5b 100644 --- a/test/testsyncvirtualfiles.cpp +++ b/test/testsyncvirtualfiles.cpp @@ -59,12 +59,15 @@ void markForDehydration(FakeFolder &folder, const QByteArray &path) journal.avoidReadFromDbOnNextSync(record._path); } -SyncOptions vfsSyncOptions(FakeFolder &fakeFolder) +QSharedPointer<Vfs> setupVfs(FakeFolder &folder) { - SyncOptions options; - options._vfs.reset(createVfsFromPlugin(Vfs::WithSuffix).release()); - fakeFolder.syncJournal().setPinStateForPath("", PinState::OnlineOnly); - return options; + auto suffixVfs = QSharedPointer<Vfs>(createVfsFromPlugin(Vfs::WithSuffix).release()); + folder.switchToVfs(suffixVfs); + + // Using this directly doesn't recursively unpin everything + folder.syncJournal().setPinStateForPath("", PinState::OnlineOnly); + + return suffixVfs; } class TestSyncVirtualFiles : public QObject @@ -85,7 +88,7 @@ private slots: QFETCH(bool, doLocalDiscovery); FakeFolder fakeFolder{ FileInfo() }; - fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder)); + setupVfs(fakeFolder); QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &))); @@ -206,7 +209,7 @@ private slots: void testVirtualFileConflict() { FakeFolder fakeFolder{ FileInfo() }; - fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder)); + setupVfs(fakeFolder); QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &))); @@ -277,7 +280,7 @@ private slots: void testWithNormalSync() { FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() }; - fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder)); + setupVfs(fakeFolder); QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &))); @@ -313,7 +316,7 @@ private slots: void testVirtualFileDownload() { FakeFolder fakeFolder{ FileInfo() }; - fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder)); + setupVfs(fakeFolder); QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &))); @@ -381,7 +384,7 @@ private slots: void testVirtualFileDownloadResume() { FakeFolder fakeFolder{ FileInfo() }; - fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder)); + setupVfs(fakeFolder); QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &))); @@ -422,8 +425,7 @@ private slots: void testNewFilesNotVirtual() { FakeFolder fakeFolder{ FileInfo() }; - SyncOptions syncOptions = vfsSyncOptions(fakeFolder); - fakeFolder.syncEngine().setSyncOptions(syncOptions); + setupVfs(fakeFolder); QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); fakeFolder.remoteModifier().mkdir("A"); @@ -443,7 +445,7 @@ private slots: void testDownloadRecursive() { FakeFolder fakeFolder{ FileInfo() }; - fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder)); + setupVfs(fakeFolder); QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); // Create a virtual file for remote files @@ -540,7 +542,7 @@ private slots: void testRenameToVirtual() { FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() }; - fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder)); + setupVfs(fakeFolder); QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &))); @@ -578,7 +580,7 @@ private slots: void testRenameVirtual() { FakeFolder fakeFolder{ FileInfo() }; - fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder)); + setupVfs(fakeFolder); QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &))); @@ -620,7 +622,7 @@ private slots: void testSyncDehydration() { FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() }; - fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder)); + setupVfs(fakeFolder); QVERIFY(fakeFolder.syncOnce()); QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); @@ -697,7 +699,7 @@ private slots: void testWipeVirtualSuffixFiles() { FakeFolder fakeFolder{ FileInfo{} }; - fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder)); + setupVfs(fakeFolder); // Create a suffix-vfs baseline @@ -733,7 +735,7 @@ private slots: QVERIFY(fakeFolder.currentLocalState().find("A/a3.owncloud")); QVERIFY(!fakeFolder.currentLocalState().find("A/B/b1.owncloud")); - fakeFolder.syncEngine().setSyncOptions(SyncOptions{}); + fakeFolder.switchToVfs(QSharedPointer<Vfs>(new VfsOff)); QVERIFY(fakeFolder.syncOnce()); QVERIFY(fakeFolder.currentRemoteState().find("A/a3.owncloud")); // regular upload QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); @@ -742,7 +744,7 @@ private slots: void testNewVirtuals() { FakeFolder fakeFolder{ FileInfo() }; - fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder)); + setupVfs(fakeFolder); QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); auto setPin = [&] (const QByteArray &path, PinState state) { @@ -757,6 +759,7 @@ private slots: setPin("local", PinState::AlwaysLocal); setPin("online", PinState::OnlineOnly); + setPin("unspec", PinState::Unspecified); // Test 1: root is OnlineOnly fakeFolder.remoteModifier().insert("file1"); @@ -782,7 +785,7 @@ private slots: QVERIFY(fakeFolder.currentLocalState().find("file2")); QVERIFY(fakeFolder.currentLocalState().find("online/file2.owncloud")); QVERIFY(fakeFolder.currentLocalState().find("local/file2")); - QVERIFY(fakeFolder.currentLocalState().find("unspec/file2")); + QVERIFY(fakeFolder.currentLocalState().find("unspec/file2.owncloud")); // file1 is unchanged QVERIFY(fakeFolder.currentLocalState().find("file1.owncloud")); @@ -810,7 +813,7 @@ private slots: cleanup(); // Enable suffix vfs - fakeFolder.syncEngine().setSyncOptions(vfsSyncOptions(fakeFolder)); + setupVfs(fakeFolder); // Local changes of suffixed file do nothing fakeFolder.localModifier().appendByte("A/file1.owncloud"); |