summaryrefslogtreecommitdiffstats
path: root/tests
Commit message (Collapse)AuthorAge
* Minor fixeskey-storage-apiMinijackson2018-07-04
|
* Fix pipelinetest + remove useless commented linesMinijackson2018-07-04
|
* Move Key API into own files + some fixesMinijackson2018-07-04
|
* [Storage] Implement Key APIMinijackson2018-07-04
|
* Test overlap live queriesMinijackson2018-07-04
|
* Avoid overwriting local changes with remote modifications.Christian Mollekopf2018-06-26
| | | | | | | | | | | | | | | | | | | The case we ran into is the following: * Fetching the full payload and marking all messages of a thread as read happens simultaneously. * The local modification to mark as read gets immediately overwritten when the full payload arrives. * Eventually the modification gets replayed to the server though (and the reversal isn't because coming from the source), so on next sync the situation fixes itself. To be able to improve this we try to protect local modifications in that properties that have been modified since baseRevision (which currently isn't, but should be equal to the last to the server replayed revision) are not overwritten. This conflict resolution strategy thus always prefers local modifications. baseRevision is currently set to the current maximum revision of the store at the time when the resource creates the modification.
* Fixed the lost update scenarioChristian Mollekopf2018-06-25
| | | | | | | If we get a fetchMore right between when the revision was updated and the incrementalQuery actually running, we ended up loosing the update because the result provider ended up with a too recent revision after the additional initial query.
* Fixed the thread index.Christian Mollekopf2018-06-19
| | | | | | | | * Modifications could result in index changes because we lost the threadId due to remove + add. A modify was necessary (although we can ignore it for the email case). * The ThreadIndexer would try to lookup and potentially index threads for empty parent ids, which is clearly wrong.
* Implement Overlap queriesRémi Nicole2018-06-19
| | | | | | | | | | | | | | | | | | | | Summary: Notes: - Introduces the concept of queries on multiple properties (which meant changing query's internals a bit) - Dates are stored as well as the "reference" in the index to allow quick filtering without fetching the whole entity - Buckets are weeks starting on Monday (guaranteed by the use of the Julian calendar) - Some size improvements are definitely possible (dates are padded numbers again, not using integer databases, Julian calendar starts at a very old date, etc.) Test Plan: Tested in querytest Reviewers: cmollekopf Reviewed By: cmollekopf Tags: #sink Differential Revision: https://phabricator.kde.org/D13477
* CleanupChristian Mollekopf2018-05-29
|
* Avoid building tests that link to the resource on windows.Christian Mollekopf2018-05-28
| | | | | Because we'd have to properly export the symbols for the linking on windows to work.
* Cleaned up some unnecessary dependencies.Christian Mollekopf2018-05-28
|
* Implement ranged queriesRémi Nicole2018-05-28
| | | | | | | | | | | | | | | Summary: Notes: - For now, only for QDateTime indexes - Invalid QDateTimes are stored in the index (subject to change) - Should be a drop-in replacement from ValueIndexes (except for `In` and `Contains` queries) Reviewers: cmollekopf Tags: #sink Differential Revision: https://phabricator.kde.org/D13105
* Add findAllInRange function in the storage layerRémi Nicole2018-05-24
| | | | | | | | | | | | | | | | | Summary: In preparation of the support for ranged queries. Notes: Since they are pretty similar, it could be nice to refactor `scan` and `findAllInRange` to use common 3rd function Test Plan: This is tested in storagetest.cpp Reviewers: cmollekopf Tags: #sink Differential Revision: https://phabricator.kde.org/D13066
* CleanupChristian Mollekopf2018-05-23
|
* Fixed use of mdb_dbi_openChristian Mollekopf2018-05-23
| | | | | | | | | | | | | | | | | | | | There can only ever be one transaction using mdb_dbi_open running, and that transaction must commit or abort before any other transaction attempts to use mdb_dbi_open. Use delayed dbi merging with write transactions and a temporary transaction for read transactions. We now protect dbi initialization with a mutex and immediately update the sDbis hash. This assumes that the created dbis are indeed We can still violate the only one transaction may use mdb_dbi_open rule if we start a read-only transaction after the write transaction, before the write transaction commits. It does not seem to be something we actually do though. Opening dbis on environment init is further separated out, so we don't end up in the regular openDatabase codepath at all.
* Use VERIFYEXECChristian Mollekopf2018-05-20
|
* Get ctest to find the executable on windowsChristian Mollekopf2018-05-19
|
* Exports for windowsChristian Mollekopf2018-05-19
|
* the right target for generate_export_header.Christian Mollekopf2018-05-19
|
* Moved the bogus message test to the imap test.Christian Mollekopf2018-05-18
| | | | Maildir will happly store anything.
* Test what happens if we add a bogus message to the imap resource.Christian Mollekopf2018-05-18
| | | | This test currently fails because we fail to recover.
* Fixed a readEntity call with empty uidChristian Mollekopf2018-05-17
| | | | | | Filtered entites are still passed through as removal, but if there is no other value for the reduction, the reduction result is empty.
* Restrict the query to the relevant resourceChristian Mollekopf2018-05-14
|
* Filter by senderChristian Mollekopf2018-05-07
|
* Export from sink_test so we can link against it on windowsChristian Mollekopf2018-04-20
|
* More exportsChristian Mollekopf2018-04-20
|
* Windows compatChristian Mollekopf2018-04-19
|
* Change most of Event's properties to extracted propertiesRémi Nicole2018-04-13
| | | | | | | | | | | | | | Summary: Fix T8485 Reviewers: cmollekopf Reviewed By: cmollekopf Tags: #sink Maniphest Tasks: T8485 Differential Revision: https://phabricator.kde.org/D12106
* Use the Dummy instead of Event in the benchmark to restore theChristian Mollekopf2018-04-10
| | | | attachment.
* Avoid missing revision updates while a query is running.Christian Mollekopf2018-04-01
| | | | | Instead we have to remember that something has changed and rerun an incremental query.
* Fixed unusedChristian Mollekopf2018-03-28
|
* Add CalDAV supportRémi Nicole2018-03-27
| | | | | | | | | | | | | | | | | | | | | Summary: Notes: - Add a `webdavcommon` folder for WebDAV generic resource code - Move `davresource` to `carddaveresource` and make it use the WebDAV code - For now it tests the CalDAV resource directly on KolabNow (to be changed) - Only synchronization, not adding / changing / removing WebDAV collections or items (to be implemented) - Only events are currently supported (todo, freebusy, etc. are to be implemented but should be straightforward) Fixes T8224 Reviewers: cmollekopf Tags: #sink Maniphest Tasks: T8224 Differential Revision: https://phabricator.kde.org/D11741
* Make sure we initialize the environment correctly and only set the db ↵Christian Mollekopf2018-03-26
| | | | version when creating it
* Skip crashing testChristian Mollekopf2018-03-26
|
* Fixed more warnings and then disabled themChristian Mollekopf2018-03-25
| | | | ..because there is a boatload more to fix.
* A more stable flagChangeTestChristian Mollekopf2018-03-02
|
* Fixed and tested the upgrade from a database without version.Christian Mollekopf2018-02-28
|
* Properly deal with filtered entities in reduced queries.Christian Mollekopf2018-02-22
| | | | Filtered entities would still end up in the entities list before.
* Deal with removals in reduced queriesChristian Mollekopf2018-02-22
|
* Apply modifications to aggregate valuesChristian Mollekopf2018-02-21
|
* Xapian based fulltext indexingChristian Mollekopf2018-02-11
| | | | | This cuts into the sync performance by about 40%, but gives us fast fulltext searching for all local content.
* Store all BLOB properties inline.Christian Mollekopf2018-02-06
| | | | | | | | | | | | | | | | | | | | | BLOB properties had a couple of intended purposes: * Allow large payloads to be streamed directly to disk, and then be handled by reference. * Allow zero-copy handling. * Keep the database values compact so we can avoid traversing large BLOBS. However, they came at the cost of code-complexity, and we lost all the benefits of our storage layer, such as transactions. Measurements showed, that for email (the intended primary usecase), the overhead is hardly measurable, with most parts performing better, or at least not worse. We additionally also gain file-system independence, which may help on other platforms. The biggest drawback is probably that large payloads need to be written to disk twice, because of the synchronizer queue (once for the queue, once for the actual data).
* CleanupChristian Mollekopf2018-01-24
|
* Track uidvalidity to detect changes behind our back.Christian Mollekopf2018-01-23
|
* Fixed imap testsChristian Mollekopf2018-01-23
| | | | | Adding the mail to cyrus imap somehow broke with cyrus 3.0. We're now creating the mail instead, before trying to sync it.
* We need all parents available, not only oneChristian Mollekopf2018-01-03
|
* Use read-write locks for finer grained control to sDbi and sEnvironmentsChristian Mollekopf2018-01-03
| | | | | | | | | | There are only a few cases where have to access the list of dbis or environments, so we can normally get away with just read-locking. This seems to fix a segfault that was possibly caused be an environment being reused that has already been freed in another thread. The read-only lock when initially retrieving the environment seems to fix that.
* Demonstrate the problem with child indexes entering before parentChristian Mollekopf2018-01-03
| | | | indexes
* Add a working model signal testChristian Mollekopf2018-01-03
|