Age | Commit message (Collapse) | Author |
|
Soledad's events server might be a pain for tests because if it is not
properly initialized and shut down there might be parts of the server
missing or leftover in the reactor after tests are run. With the recent
changes to the way tests are invocated, there's the need to further
isolate events server startup for benchmarks, otherwise it will conflict
with other tests. This commit moves the events server setup to inside
the pytest_collection_modifyitems() hook, where we can check if the
benchmark subdir was selected and properly start the events server if
needed.
|
|
Use subdir path to select/deselect benchmark tests.
Because of the way pytest and pytest benchamrk select/deselect tests, it
makes more sense for this test suite to use a --subdir option to select
only a subset of tests and a blacklist of subdirectories that should not
be run unless explicitelly asked to.
This commit adds a --subdir option, that will deselect all tests no in
./tests/<subdir> when the option is passed to pytest. Also, a blacklist
is added so, unless explicitelly added as a --subdir, tests in
blacklisted subdirectories will not be run.
The reasons for this modification are:
- pytest-benchmarks selects/deselects tests based on the type of their
fixtures. This means that fixtures have to be instantiated previous to
test selection/deselection, something that may cause side effects that
we want to avoid.
- the usual test suite is run for all benchmarks, while some tests
should only be run in specific situations (as is the case of
benchmarks and responsiveness tests). It is saner to implement subdir
selection than marking all tests with pytest marks and using them to
select/deselect.
|
|
|
|
|
|
Hardcoded and repeated user uuids can lead to accidental concurrent
operations between test cases, breaking isolation and creating random
failures. This commit improves it a bit.
|
|
Adds two new columns for sync status and retries. Also some initial
rough logic for upload retry limiting.
-- Resolves: #8823
-- Related: #8822
|
|
|
|
- create payloads before running tests
- use different group names for different amount/sizes
- move legacy index creation to setup function
- limit concurrency on blobmanager to 2 (same as thread pool size)
- add a VACUUM call to observe blobs db size decreasing between tests
- properly cleanup server between blobs test runs
- refactor blobs pipeline so it makes more sense and is easier to read
|
|
|
|
Schema was using a default value instead of using the one passed as a
parameter. Additional test for formatter is also included.
-- Related: #8867
|
|
|
|
-- Related: #8867
|
|
-- Related: #8867
|
|
This way the file gets copied during package install.
-- Related: #8867
|
|
-- Related: #8867
|
|
-- Related: #8867
|
|
-- Related: #8867
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This value was hardcoded on client, but it's assumed to be default by
the server and there is no need for it to be hardcoded.
-- Resolves: #8882
|
|
A reported bug on namespace feature was that we couldn't delete a
namespaced blob after a cold start, since the client wasn't able to
check which namespace it belongs.
This commits completes the tracking of namespace over client site code,
making it possible to query and store namespce information on disk,
through sqlcipher.
-- Resolves: #8882
|
|
This commit is complementary to the previous one. It adds a test for the
reported bug (listing default namespace was listing others) and fixes
it.
-- Related: #8882
|
|
All blobs were being stored in a single folder when using namespaces,
this commits adds path partitioning as discussed on #8882, which should
help with a large number of files (each folder will hold a smaller
subset, allowing the use of better filesystem walk strategies).
Also, the default empty namespace is now called 'default' to prevent it
from listing other namespaces contents. So everything will always use
namespaces, with the option to use it explicitly or just fall to the
default one.
-- Related: #8882
|
|
|
|
|
|
|
|
Adds a IncomingBox implementation that can be used by the incoming loop
to interact with the server. Includes end to end test from message
creation on Incoming API to callback consumer.
-- Related: #8914
|
|
|
|
Clients will query for blobs flagged PENDING so they can start
processing. This commit adds flagging, but still in a hacky way as the
backend requires the flags as a json string inside a request. A refactor
to separate request handling from the backend itself will solve it in
the near future.
-- Related: #8874
|
|
|
|
This class implements a process flow between the ones defined at #8881
and #8874. It uses a LoopingCall to keep running in a loop and accepts
IIncomingBoxConsumers defined by soledad users, such as leap mail.
- Resolves: #8874
|
|
Improves error handling, add missing header to __init__.py and remove
mkdirs from flags methods. This is a commit from code review on !117.
|
|
Improve test naming, creates a "count" method and filter flags files
properly.
|
|
filter_flag parameter can now be used to filter listing blobs by a
specific flags. Eg: I can ask for blobs on incoming namespace flagged as pending.
-- Resolves: #8913
|
|
Using a parameter, just like the other methods are doing.
-- Resolves: #8873
|
|
By using `only_count=True` parameter, instead of returning a full list,
server just count the amount of blobs.
-- Resolves: #8871
|
|
IncomingBox spec has a flags feature for the processing flow of
messages. This commit adds it using a .flags file.
-- Resolves: #8869
|
|
Refactor suggested from !105 review.
|
|
|
|
'namespace' argument is supported by backend but not yet exposed on API
for clients. Since IncomingBox makes heavy usage of it, this commit
exposes the argument as a query string for clients to use it.
|
|
Listing by date is useful for listing newest/oldest documents on blobs
storage and should be used for listing new IncomingMessages as described
on specification.
-- Resolves: #8879
|
|
|
|
We started with CouchDB due legacy system relying on it. This commit
adds the possibility of adding blobs as a IncomingAPI backend if blobs
is enabled on config file.
-- Resolves: #8868
|
|
This move allows server to use it on #8868 as described in #8890
-- Relates: #8890
|