summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-08-26[refactor] Move constructor, use isinstanceVictor Shyba
isinstance is better, as kaliy pointed out, and the constructor is also in a safer place on __init__.py to be explicit. Also re-apply a change from last rebase;
2015-08-26[docs] Fix docstringsVictor Shyba
There were some missing or on incorrect format (sphinx) as drebs and kaliy pointed out.
2015-08-26[bug] fixes small issues pointed by drebsVictor Shyba
* file headers * variable names * missing docstrings * prune_conflicts ** extra: tests failed on a 1-based index bug
2015-08-26[bug] check type before processingVictor Shyba
Necessary methods are on CouchDocument, but we accept a Document as well, in this case self._factory is needed. Will be simpler soon.
2015-08-26[refactor] _process_incoming_doc is a function nowVictor Shyba
This was being calculated inside CouchDatabase, but it is not a persistence responsibility. It clearly doesn't belong to this persistence layer and seeing both sides separated allow us to work better on both parts.
2015-08-26[refactor] prune conflicts is Document's responsibilityVictor Shyba
2015-08-26[refactor] simplify conflicts managementVictor Shyba
Adding, removing and checking conflicts is an operation done by the model, the Database shouldn't be aware of that. Fetching and saving also is not model's responsability. Repetition remove as well.
2015-08-26[refactor] remove unused parameterVictor Shyba
2015-08-26[refactor] removing getters and setters from couch.pyVictor Shyba
This is not needed, the behavior under them is the same as an assignment.
2015-08-26[refactor] splits http_target into 4 modulesVictor Shyba
SoledadHTTPSyncTarget is composed of 4 main groups of responsibility: * api.py - Public and main methods of a SyncTarget * fetch.py - Document fetching logic * send.py - Document sending logic * support.py - Support functions and patches Previous single file had ~600 lines with those 4 logic groups mixed, making it harder to read and understand.
2015-08-26[refactor] simplify send_docs operationsVictor Shyba
Just extracted some common logic to create u1db formatted requests into RequestBody class and created new methods to represent operations done during send_docs. This also removes send_one_doc, but does not add batching yet. The single send behavior still the same, represented by the parameter passed into RequestBody 'remove' method.
2015-08-26[refactor] simplify entity and content typeVictor Shyba
_prepare was being used to concatenate and prepare request body to send or receive data on the format expected by the server. This behavior wasnt clear, so I added a new class to abstract this out. Content type and auth headers was being copied around methods. Now the request method accepts a content_type parameter to remove this duplication.
2015-08-26[refactor] simplify the case of a brand new docVictor Shyba
If a doc is not present on database at all, it will simply get inserted. This commit makes this clear and skips unnecessary checks.
2015-08-26[refactor] extract logging and emitting on targetVictor Shyba
Creating a message, emitting an event and logging afterwards is a single operation outside of of those method's responsabilities.
2015-08-26[refactor] split put_doc_if_newer in two operationsVictor Shyba
Those two operations were mixed on put_doc_if_newer, extracting should make it more clear.
2015-08-26[bug] process put after last BadRequest checkVictor Shyba
If we check for a BadRequest after calling meth_put we will end up on a scenario where the server replies with an error, but everything got processed.
2015-08-26[pkg] fold in changes0.7.2Ivan Alejandro
2015-08-26[pkg] add missing changes filesIvan Alejandro
2015-08-25[style] pep8 fixesKali Kaneko
2015-08-24[refactor] add changes file about simplejson dep removaldrebs
2015-08-24[refactor] remove simplejson dep on serverdrebs
2015-08-24[refactor] remove simplejson dep on clientdrebs
2015-08-24[refactor] remove simplejson dependency on commondrebs
2015-08-24[tests] add sqlite tests to sqlcipherdrebs
Add tests from u1db.tests.test_sqlite_backend.TestSQLitePartialExpandDatabase to soledad sqlcipher tests.
2015-08-24[tests] remove u1db test remote sync target moduledrebs
All tests in that module have been included in soledad's own test modules, so it can be removed so we have less unneeded skipped tests.
2015-08-24[tests] add u1db sync target tests to soledaddrebs
Modify leap.soledad.common.tests.test_sync_target to add: * u1db.tests.test_remote_sync_target.TestRemoteSyncTargets * u1db.tests.test_sync.DatabaseSyncTargetTests
2015-08-24[tests] add missing sync tests to sqlcipherdrebs
Some tests from the original u1db.tests.test_sync.SQLCipherDatabaseSyncTests were missing, this commit adds them back to the soledad sqlcipher tests.
2015-08-20[style] pep8 fixesKali Kaneko
2015-08-20[tests] adapt test for end-of-sync eventdrebs
The soledad sync method was changed to use twisted deferreds, but the test that checks for sync signal was not changed accordingly. This commit fixes that.
2015-08-20[bug] always emit end-of-sync eventdrebs
2015-08-20[tests] add u1db sync tests to soledad couch testsdrebs
2015-08-20[style] pep8'dKali Kaneko
2015-08-20[tests] add u1db sync tests to sqlcipher's testsdrebs
2015-08-20[bug] update target metadata after first receivedrebs
After we receive one document from the target database, we have to update the target metadata or else we will not be able to succesfully return the new generation and transaction id of the target when receiving exactly one document during a sync.
2015-08-20[bug] return tuple in get_sync_infodrebs
Tests actually expect a tuple instead of a list on the return value of get_sync_info().
2015-08-19[style] pep8 cleanupsKali Kaneko
2015-08-19[bug] wait for db init on sync decrypter pooldrebs
Previous to this modification, the initialization of the sync decrypter pool could happen concurrently with other database operations. That could cause the pool to hang because it could be waiting for something that was mistakenly deleted because of the wrong order of database operations. This commit implements a standard which we already use in leap.keymanager and leap.mail which makes some methods wait for the initialization operation before they are actually called. Closes: #7386
2015-08-19[refactor] remove threadpool from sqlcipher backenddrebs
The old strategy for having Soledad sync running asynchronously with other API calls was to have the sync running in its own threadpool. This is not needed now that all sync code uses deferreds and will not block. This commit removes what's left from the old threadpool.
2015-08-19[bug] hold sync lock while running post-sync hooksdrebs
Previous to this modification, the post-sync hooks were run after the sync lock was released. In that scenario, the next sync process could start before the previous sync's post-sync hooks were run. In general, we want the hooks to run while the current sync lock is still locked, even though for some plugins this might not make a difference.
2015-08-18[refactor] rename sync lock and improve docstringsdrebs
2015-08-18[refactor] clarify sync target closingdrebs
2015-08-18[bug] always release lock on spam scriptdrebs
2015-08-17[style] pep8 cleanupKali Kaneko
2015-08-17[tests] add pep8/flake8 ignoresKali Kaneko
2015-08-17[tests] add mutex sync testsdrebs
2015-08-17[tests] fix test_sqlcipher_syncdrebs
2015-08-17[tests] fix test_sync_deferred testdrebs
* Add possibility of passing sync_db and sync_enc_pool to target creation. * Ensure defer_encryption and defer_decryption are True when setting up the test environment.
2015-08-17[tests] fix tests from test_sync moduledrebs
* Remove test to assert database autocreation. We don't have that feature in soledad and so don't need that test here. * Remove redundant test without token authentication. * Fix server setup. * Skip interruptable sync test case, for now.
2015-08-17[bug] add missing parameter to unauthorized errordrebs
2015-08-12[bug] wrong sqlcipher passphrase now raises correctlyBruno Wagner
When you tried to start a local sqlcipher that was created before, with the wrong passphrase, the code was raising a sqlcipher DatabaseError, there were tests covering this but they were expecting a WrongMacError that was never raised. I added code to wrap the DatabaseError and raise a new exception DatabaseAccessError that is specific to soledad and adapted the tests to expect it