Age | Commit message (Collapse) | Author |
|
We are using a single CouchDB install, which may cause tests to overlap
since many of them uses the same database name, hurting isolation. This
change tries to use uuid on most of it. Also changes for couch_url and
couch_port introduced by removal of CouchDB process.
|
|
This process per test gives a lot of headache, this is why we are
removing it. With it we would need to try to start and stop properly on
each test case. This fails badly when a test fail and, depending on how
it fails, it freezes my pc. Also, it is very heavy for a CI to run a
database process for each test case.
|
|
|
|
From:
[refactor] removing getters and setters from couch.py
_couch_url was a private variable with getter and setter doing the same
as a public variable. It is accessed all over the code, so being private
with getters and setters didnt make sense. This commit fixes the tests
to also follow this style from now on.
|
|
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;
|
|
* file headers
* variable names
* missing docstrings
* prune_conflicts
** extra: tests failed on a 1-based index bug
|
|
Necessary methods are on CouchDocument, but we accept a Document as
well, in this case self._factory is needed.
Will be simpler soon.
|
|
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.
|
|
|
|
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.
|
|
|
|
This is not needed, the behavior under them is the same as an
assignment.
|
|
If a doc is not present on database at all, it will simply get inserted.
This commit makes this clear and skips unnecessary checks.
|
|
Those two operations were mixed on put_doc_if_newer, extracting should
make it more clear.
|
|
|
|
|
|
Add tests from u1db.tests.test_sqlite_backend.TestSQLitePartialExpandDatabase
to soledad sqlcipher tests.
|
|
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.
|
|
Modify leap.soledad.common.tests.test_sync_target to add:
* u1db.tests.test_remote_sync_target.TestRemoteSyncTargets
* u1db.tests.test_sync.DatabaseSyncTargetTests
|
|
Some tests from the original u1db.tests.test_sync.SQLCipherDatabaseSyncTests
were missing, this commit adds them back to the soledad sqlcipher tests.
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
* 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.
|
|
* 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.
|
|
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
|
|
test_db_sync_autocreate was using yield but didn't have the
inlineCallbacks decorator, that made it a generator but the
trial tests don't support generators. Fixed this
|
|
It was inheriting from twisted testcase in both u1db_tests.TestCase
and in BaseSoledadTest, removed u1db testcase and everything is ok now
|
|
Fixed pep8 warnings after latest PR
|
|
* redefine the BaseLeapTest class so it inherits from
twisted.trial.unittest.TestCase.
* allow passing the source_replica_uid when creating the sync target. This
is needed because the SoledadHTTPSyncTarget needs to be instantiated with
the source_replica_uid passed as a parameter.
* close the sync target in tests that use it.
* raise and U1DBError instead of an Exception on failure_and_retry test,
because otherwise the u1db http app server will re-raise the Exception and
twisted's WSGI server will raise the exception
* set defer_decryption=False in some sync_exchange() calls so the call
is consistent with soledad instantiation in tests and the new signature of
that method.
* yield get_sync_info() in tests that use this method.
|
|
While #7370 is being researched, it doesnt make sense to have this test
running for now. Will be enabled again after investigation finishes.
|
|
As suggested by drebs, the callback chaining can put None to sync,
bringing undesired behavior.
|
|
Some calls to soledad_sync_target were being made with
a full path, but the the method itself handles that, so I
removed the extraneous calls those problems
|
|
The first test to be run in the TestSoledadParseReceivedDocResponse
suite was erroring with connection refused, that is because it
actually connects to the server, but wasn't setting it up, I changed
it to inherit the simpler SoledadWithCouchServerMixin and adapted the
setUp and tearDown, now it works everytime with no problems
|
|
The encryption pool could be stopped twice and would break
on the second attempt because it deletes the encryption queue
variable. Added a condition to make sure it only deletes the
encryption queue if it exists, making it more idempotent
|
|
Test sync now doesn't inherit from u1db tests, it's
tests will now be run and were failing, so I fixed them.
Sync deferred will not be correctly handled in these tests.
I also pulled over a method from the u1db test and there seems
to be a pattern, I'll try to deduplicate these methods as soon
as it gets clearer
|
|
Pulled the requirement for the test scenario in sqlcipher sync so
we could remove the dependency on the u1db test_sync
|
|
Sqlcipher sync tests were not being run because they were inheriting
from a u1db class that was having the tests skipped, I removed that
dependency and fixed the tests (they were expecting the synchronous,
old http_target api).
|
|
Test_http_target was using u1db test_sync in a lot of places,
I removed those references on the last changes and am removing
the dependency at once in this one
|
|
Removed inherit from u1db test that was causing these tests
to be ignored, the tests were broken with the latest changes
to the sync_target, so I fixed them, no tests are being skipped
on test_sync_target anymore
|
|
Sync very large files will now fail early because it was exploding
the memory, it needs some love, but for now I'll just make it fail
and open an issue to take a better look at it
|
|
Changes threading.lock to DeferredLock and checks syncing attribute by
looking into the lock state.
Also, applies more of startTwistedServer on tests that relies on
HTTP/1.1.
Fixes mock for events
|
|
Two spaces before class, not one
|