nextcloud-desktop/test
Olivier Goffart 64014dd374 Upload: Store the size in the UploadInfo, and compare it when resolving potential conflict
This is about the conflicts that happens when the file has been uploaded
correctly to the server, but the etag was not recieved because the connection
was closed before we got the reply.

We used to compare only the mtime when comparing the uploaded file and the
existing file.  However, to be perfectly correct, we also should check the
size.

This was found because TestChunkingNG::connectionDroppedBeforeEtagRecieved is
flaky. Example of faillure found in https://drone.owncloud.com/owncloud/client/481/5
while testing PR #6626

(very trimmed log:)

06-29 07:58:02:015 [ info sync.csync.csync ]:	## Starting local discovery ##
06-29 07:58:02:016 [ info sync.csync.updater ]:	Database entry found, compare: 1530259082 <-> 1530259051, etag:  <-> 1644a8c8750, inode: 1935629 <-> 1935629, size: 301 <-> 300, perms: 0 <-> ff, type: 0 <-> 0, checksum:  <-> SHA1:cc9adedebe27a6259efb8d6ed09f4f2eff559ad1, ignore: 0
06-29 07:58:02:016 [ info sync.csync.updater ]:	file: A/a0, instruction: INSTRUCTION_EVAL <<=
06-29 07:58:02:972 [ warning sync.networkjob ]:	QNetworkReply::NetworkError(OperationCanceledError) "Connection timed out" QVariant(Invalid)
.. next sync...
06-29 07:58:02:980 [ info sync.engine ]:	#### Discovery start ####################################################
06-29 07:58:02:981 [ info sync.csync.csync ]:	## Starting local discovery ##
06-29 07:58:02:983 [ info sync.csync.updater ]:	Database entry found, compare: 1530259082 <-> 1530259051, etag:  <-> 1644a8c8750, inode: 1935629 <-> 1935629, size: 302 <-> 300, perms: 0 <-> ff, type: 0 <-> 0, checksum:  <-> SHA1:cc9adedebe27a6259efb8d6ed09f4f2eff559ad1, ignore: 0
06-29 07:58:02:983 [ info sync.csync.updater ]:	file: A/a0, instruction: INSTRUCTION_EVAL <<=
06-29 07:58:02:985 [ info sync.csync.csync ]:	## Starting remote discovery ##
06-29 07:58:02:985 [ info sync.networkjob ]:	OCC::LsColJob created for "http://localhost/owncloud" + "" "OCC::DiscoverySingleDirectoryJob"
06-29 07:58:02:987 [ info sync.csync.updater ]:	Database entry found, compare: 1530259082 <-> 1530259051, etag: 1644a8c8b26 <-> 1644a8c8750, inode: 0 <-> 1935629, size: 301 <-> 300, perms: ff <-> ff, type: 0 <-> 0, checksum: SHA1:5adcdac9608ae0811247f07f4cf1ab0a2ef99154 <-> SHA1:cc9adedebe27a6259efb8d6ed09f4f2eff559ad1, ignore: 0
06-29 07:58:02:987 [ info sync.csync.updater ]:	file: A/a0, instruction: INSTRUCTION_EVAL <<=
06-29 07:58:02:989 [ info sync.csync.csync ]:	Update detection for remote replica took 0.004 seconds walking 13 files
06-29 07:58:02:990 [ info sync.engine ]:	#### Discovery end ####################################################  9 ms
06-29 07:58:02:990 [ info sync.database ]:	Updating file record for path: "A/a0" inode: 1935629 modtime: 1530259082 type: 0 etag: "1644a8c8b26" fileId: "16383ea4" remotePerm: "WDNVCKR" fileSize: 301 checksum: "SHA1:cc9adedebe27a6259efb8d6ed09f4f2eff559ad1"
06-29 07:58:02:990 [ info sync.csync.reconciler ]:	INSTRUCTION_UPDATE_METADATA    client file: A/a0
06-29 07:58:02:990 [ info sync.csync.csync ]:	Reconciliation for local replica took  0 seconds visiting  13  files.
06-29 07:58:02:990 [ info sync.csync.reconciler ]:	INSTRUCTION_UPDATE_METADATA    server dir:  A
06-29 07:58:02:990 [ info sync.csync.csync ]:	Reconciliation for remote replica took  0 seconds visiting  13  files.
06-29 07:58:02:990 [ info sync.engine ]:	#### Reconcile end ####################################################  9 ms
06-29 07:58:02:990 [ info sync.database ]:	Updating local metadata for: "A/a0" 1530259082 302 1935629
FAIL!  : TestChunkingNG::connectionDroppedBeforeEtagRecieved(small file) '!fakeFolder.syncOnce()' returned FALSE. ()
2018-07-04 17:26:56 +02:00
..
benchmarks benchlargesync: Do several syncs 2017-09-25 12:49:55 +02:00
csync Rename ocsync library to ${APPLICATION_EXECUTABLE}_csync 2018-06-20 11:23:16 +02:00
manual/favlink License: Adjust license of GPLv2 source files to GPLv2+ 2016-10-25 11:06:54 +02:00
mockserver Use QDateTime::currentDateTimeUtc instead of the non utc version 2017-09-26 16:14:17 +02:00
scripts t9.pl: Make more reliable 2017-10-05 14:13:10 +02:00
CMakeLists.txt Rename Placeholders to Virtual Files in code #6531 2018-05-23 09:57:00 +02:00
owncloud_add_test.cmake Build system: Get rid of QtVersionAbstraction.cmake 2018-01-13 13:58:17 +01:00
stub.cpp test/stub: add some call required by the next patches 2017-09-21 14:05:39 +02:00
syncenginetestutils.h Ensure GETFileJob notices finishing #6581 2018-06-13 16:44:24 +02:00
test_journal.db test_journal.db: Add checksumtype table 2017-06-22 15:11:49 +02:00
testallfilesdeleted.cpp SyncEngine: _hasNoneFiles should be set when there are INSTRUCTION_UPDATE_METADATA 2017-09-28 11:15:36 +02:00
testblacklist.cpp Blacklist: remember the X-Request-ID 2018-05-15 18:11:01 +02:00
testchecksumvalidator.cpp Move SyncJournalDB to src/common 2017-09-18 14:00:52 +02:00
testchunkingng.cpp TestChunkingNG: Remove unneeded test code 2018-05-15 09:42:54 +02:00
testconcaturl.cpp Utility: use QUrlQuery 2017-12-08 16:15:17 +01:00
testdownload.cpp Ensure GETFileJob notices finishing #6581 2018-06-13 16:44:24 +02:00
testexcludedfiles.cpp Conflicts: Change tags to be more user friendly #6365 2018-04-03 14:03:03 +02:00
testfilesystem.cpp Move Utility to a new common static library 2017-09-05 17:25:19 +02:00
testfolder.cpp Move Utility to a new common static library 2017-09-05 17:25:19 +02:00
testfolderman.cpp Fix the TestFolderMan on Windows 2017-12-15 14:51:00 +01:00
testfolderwatcher.cpp Show a tray message when a folder watcher becomes unreliable #6119 2018-04-24 13:06:50 +02:00
testinotifywatcher.cpp Move Utility to a new common static library 2017-09-05 17:25:19 +02:00
testlocaldiscovery.cpp LocalDiscoveryTracker: Add unit test #6120 2018-04-19 10:58:46 +02:00
testnetrcparser.cpp For tests we do not need a xserver running. 2016-05-12 11:34:21 +02:00
testoauth.cpp TestOAuth: Don't have global static QObject 2018-06-29 10:57:24 +02:00
testowncloudpropagator.cpp For tests we do not need a xserver running. 2016-05-12 11:34:21 +02:00
testownsql.cpp OwnSql: Fixup after feedback for #6388 2018-03-15 19:30:21 +01:00
testplan.txt Minor typos in client test section 2015-09-10 18:11:44 +05:45
testsyncconflict.cpp Conflicts: Change tags to be more user friendly #6365 2018-04-03 14:03:03 +02:00
testsyncengine.cpp Ensure GETFileJob notices finishing #6581 2018-06-13 16:44:24 +02:00
testsyncfileitem.cpp For tests we do not need a xserver running. 2016-05-12 11:34:21 +02:00
testsyncfilestatustracker.cpp Excludes: Refactor for pending improvements 2017-12-07 14:38:21 +01:00
testsyncjournaldb.cpp Merge remote-tracking branch 'origin/2.4' 2018-02-16 10:17:19 +01:00
testsyncmove.cpp Conflicts: Change tags to be more user friendly #6365 2018-04-03 14:03:03 +02:00
testsyncvirtualfiles.cpp Virtual Files: Allow to download a folder recursively from the socket API 2018-05-30 11:57:57 +02:00
testupdater.cpp For tests we do not need a xserver running. 2016-05-12 11:34:21 +02:00
testuploadreset.cpp Upload: Store the size in the UploadInfo, and compare it when resolving potential conflict 2018-07-04 17:26:56 +02:00
testutility.cpp Utility::fsCasePreserving: remove UNIT_TESTING ifdef 2018-02-21 11:28:31 +01:00
testxmlparse.cpp TextXmlParse: Add truncated-xml testcase #6317 2018-01-22 14:05:08 +01:00