summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrebs <drebs@riseup.net>2017-09-17 12:08:25 -0300
committerdrebs <drebs@riseup.net>2017-09-17 15:50:55 -0300
commitcfff46ff9becdbe5cf48816870e625ed253ecc57 (patch)
tree8d239e4499f559d86ed17ea3632008303b25d485
parentf29abe28bd778838626d12fcabe3980a8ce4fa8c (diff)
[refactor] move tests to root of repository
Tests entrypoint was in a testing/ subfolder in the root of the repository. This was made mainly because we had some common files for tests and we didn't want to ship them (files in testing/test_soledad, which is itself a python package. This sometimes causes errors when loading tests (it seems setuptools is confused with having one python package in a subdirectory of another). This commit moves the tests entrypoint to the root of the repository. Closes: #8952
-rw-r--r--.gitlab-ci.yml6
-rw-r--r--README.rst49
-rw-r--r--docs/benchmarks.rst1
-rw-r--r--docs/tests.rst3
-rw-r--r--pytest.ini (renamed from testing/pytest.ini)1
-rw-r--r--requirements-testing.pip1
-rw-r--r--scripts/docker/Dockerfile (renamed from testing/docker/Dockerfile)0
-rwxr-xr-xscripts/testing/check-pysqlcipher.py (renamed from testing/check-pysqlcipher.py)0
-rwxr-xr-xscripts/testing/ensure-pysqlcipher-has-usleep.sh (renamed from testing/ensure-pysqlcipher-has-usleep.sh)0
-rw-r--r--testing/README21
-rw-r--r--testing/requirements-testing.pip3
-rw-r--r--testing/setup.py9
-rw-r--r--tests/benchmarks/README.md (renamed from testing/tests/benchmarks/README.md)0
-rw-r--r--tests/benchmarks/assets/cert_default.conf (renamed from testing/tests/benchmarks/assets/cert_default.conf)0
-rw-r--r--tests/benchmarks/conftest.py (renamed from testing/tests/benchmarks/conftest.py)0
-rw-r--r--tests/benchmarks/pytest.ini (renamed from testing/tests/benchmarks/pytest.ini)0
-rw-r--r--tests/benchmarks/test_crypto.py (renamed from testing/tests/benchmarks/test_crypto.py)0
-rw-r--r--tests/benchmarks/test_legacy_vs_blobs.py (renamed from testing/tests/benchmarks/test_legacy_vs_blobs.py)0
-rw-r--r--tests/benchmarks/test_misc.py (renamed from testing/tests/benchmarks/test_misc.py)0
-rw-r--r--tests/benchmarks/test_resources.py (renamed from testing/tests/benchmarks/test_resources.py)0
-rw-r--r--tests/benchmarks/test_sqlcipher.py (renamed from testing/tests/benchmarks/test_sqlcipher.py)0
-rw-r--r--tests/benchmarks/test_sqlite_blobs_backend.py (renamed from testing/tests/benchmarks/test_sqlite_blobs_backend.py)0
-rw-r--r--tests/benchmarks/test_sync.py (renamed from testing/tests/benchmarks/test_sync.py)0
-rw-r--r--tests/blobs/test_blob_manager.py (renamed from testing/tests/blobs/test_blob_manager.py)0
-rw-r--r--tests/blobs/test_decrypter_buffer.py (renamed from testing/tests/blobs/test_decrypter_buffer.py)0
-rw-r--r--tests/blobs/test_fs_backend.py (renamed from testing/tests/blobs/test_fs_backend.py)0
-rw-r--r--tests/blobs/test_sqlcipher_client_backend.py (renamed from testing/tests/blobs/test_sqlcipher_client_backend.py)0
-rw-r--r--tests/client/__init__.py (renamed from testing/tests/client/__init__.py)0
-rw-r--r--tests/client/test_api.py (renamed from testing/tests/client/test_api.py)0
-rw-r--r--tests/client/test_app.py (renamed from testing/tests/client/test_app.py)0
-rw-r--r--tests/client/test_attachments.py (renamed from testing/tests/client/test_attachments.py)0
-rw-r--r--tests/client/test_aux_methods.py (renamed from testing/tests/client/test_aux_methods.py)0
-rw-r--r--tests/client/test_crypto.py (renamed from testing/tests/client/test_crypto.py)0
-rw-r--r--tests/client/test_deprecated_crypto.py (renamed from testing/tests/client/test_deprecated_crypto.py)0
-rw-r--r--tests/client/test_doc.py (renamed from testing/tests/client/test_doc.py)0
-rw-r--r--tests/client/test_http.py (renamed from testing/tests/client/test_http.py)0
-rw-r--r--tests/client/test_https.py (renamed from testing/tests/client/test_https.py)0
-rw-r--r--tests/client/test_incoming_processing_flow.py (renamed from testing/tests/client/test_incoming_processing_flow.py)0
-rw-r--r--tests/client/test_recovery_code.py (renamed from testing/tests/client/test_recovery_code.py)0
-rw-r--r--tests/client/test_secrets.py (renamed from testing/tests/client/test_secrets.py)0
-rw-r--r--tests/client/test_shared_db.py (renamed from testing/tests/client/test_shared_db.py)0
-rw-r--r--tests/client/test_signals.py (renamed from testing/tests/client/test_signals.py)0
l---------tests/client/test_soledad1
-rw-r--r--tests/client/test_soledad_doc.py (renamed from testing/tests/client/test_soledad_doc.py)0
-rw-r--r--tests/conftest.py (renamed from testing/tests/conftest.py)0
-rw-r--r--tests/couch/__init__.py (renamed from testing/tests/couch/__init__.py)0
-rw-r--r--tests/couch/common.py (renamed from testing/tests/couch/common.py)0
-rw-r--r--tests/couch/test_atomicity.py (renamed from testing/tests/couch/test_atomicity.py)0
-rw-r--r--tests/couch/test_backend.py (renamed from testing/tests/couch/test_backend.py)0
-rw-r--r--tests/couch/test_command.py (renamed from testing/tests/couch/test_command.py)0
-rw-r--r--tests/couch/test_ddocs.py (renamed from testing/tests/couch/test_ddocs.py)0
l---------tests/couch/test_soledad1
-rw-r--r--tests/couch/test_state.py (renamed from testing/tests/couch/test_state.py)0
-rw-r--r--tests/couch/test_sync.py (renamed from testing/tests/couch/test_sync.py)0
-rw-r--r--tests/couch/test_sync_target.py (renamed from testing/tests/couch/test_sync_target.py)0
-rw-r--r--tests/pipes/test_pipes.py (renamed from testing/tests/pipes/test_pipes.py)0
-rw-r--r--tests/responsiveness/conftest.py (renamed from testing/tests/responsiveness/conftest.py)0
-rw-r--r--tests/responsiveness/elastic.py (renamed from testing/tests/responsiveness/elastic.py)0
-rw-r--r--tests/responsiveness/test_responsiveness.py (renamed from testing/tests/responsiveness/test_responsiveness.py)0
-rw-r--r--tests/responsiveness/watchdog.py (renamed from testing/tests/responsiveness/watchdog.py)0
-rw-r--r--tests/server/__init__.py (renamed from testing/tests/server/__init__.py)0
-rw-r--r--tests/server/test__resource.py (renamed from testing/tests/server/test__resource.py)0
-rw-r--r--tests/server/test__server_info.py (renamed from testing/tests/server/test__server_info.py)0
-rw-r--r--tests/server/test_auth.py (renamed from testing/tests/server/test_auth.py)0
-rw-r--r--tests/server/test_blobs_resource_validation.py (renamed from testing/tests/server/test_blobs_resource_validation.py)0
-rw-r--r--tests/server/test_blobs_server.py (renamed from testing/tests/server/test_blobs_server.py)0
-rw-r--r--tests/server/test_config.py (renamed from testing/tests/server/test_config.py)0
-rw-r--r--tests/server/test_incoming_flow_integration.py (renamed from testing/tests/server/test_incoming_flow_integration.py)0
-rw-r--r--tests/server/test_incoming_resource.py (renamed from testing/tests/server/test_incoming_resource.py)0
-rw-r--r--tests/server/test_incoming_server.py (renamed from testing/tests/server/test_incoming_server.py)0
-rw-r--r--tests/server/test_server.py (renamed from testing/tests/server/test_server.py)0
-rw-r--r--tests/server/test_session.py (renamed from testing/tests/server/test_session.py)0
-rw-r--r--tests/server/test_shared_db.py (renamed from testing/tests/server/test_shared_db.py)0
l---------tests/server/test_soledad1
-rw-r--r--tests/server/test_tac.py (renamed from testing/tests/server/test_tac.py)0
-rw-r--r--tests/server/test_url_mapper.py (renamed from testing/tests/server/test_url_mapper.py)0
-rw-r--r--tests/sqlcipher/hacker_crackdown.txt (renamed from testing/tests/sqlcipher/hacker_crackdown.txt)0
-rw-r--r--tests/sqlcipher/test_async.py (renamed from testing/tests/sqlcipher/test_async.py)0
-rw-r--r--tests/sqlcipher/test_backend.py (renamed from testing/tests/sqlcipher/test_backend.py)0
l---------tests/sqlcipher/test_soledad1
-rw-r--r--tests/sync/__init__.py (renamed from testing/tests/sync/__init__.py)0
l---------tests/sync/test_soledad1
-rw-r--r--tests/sync/test_sqlcipher_sync.py (renamed from testing/tests/sync/test_sqlcipher_sync.py)0
-rw-r--r--tests/sync/test_sync.py (renamed from testing/tests/sync/test_sync.py)0
-rw-r--r--tests/sync/test_sync_mutex.py (renamed from testing/tests/sync/test_sync_mutex.py)0
-rw-r--r--tests/sync/test_sync_target.py (renamed from testing/tests/sync/test_sync_target.py)0
-rw-r--r--tests/test_soledad/__init__.py (renamed from testing/test_soledad/__init__.py)0
-rw-r--r--tests/test_soledad/fixture_soledad.conf (renamed from testing/test_soledad/fixture_soledad.conf)0
-rw-r--r--tests/test_soledad/u1db_tests/README (renamed from testing/test_soledad/u1db_tests/README)0
-rw-r--r--tests/test_soledad/u1db_tests/__init__.py (renamed from testing/test_soledad/u1db_tests/__init__.py)0
-rw-r--r--tests/test_soledad/u1db_tests/test_backends.py (renamed from testing/test_soledad/u1db_tests/test_backends.py)0
-rw-r--r--tests/test_soledad/u1db_tests/test_document.py (renamed from testing/test_soledad/u1db_tests/test_document.py)0
-rw-r--r--tests/test_soledad/u1db_tests/test_http_client.py (renamed from testing/test_soledad/u1db_tests/test_http_client.py)0
-rw-r--r--tests/test_soledad/u1db_tests/test_http_database.py (renamed from testing/test_soledad/u1db_tests/test_http_database.py)0
-rw-r--r--tests/test_soledad/u1db_tests/test_https.py (renamed from testing/test_soledad/u1db_tests/test_https.py)0
-rw-r--r--tests/test_soledad/u1db_tests/test_open.py (renamed from testing/test_soledad/u1db_tests/test_open.py)0
-rw-r--r--tests/test_soledad/u1db_tests/testing-certs/Makefile (renamed from testing/test_soledad/u1db_tests/testing-certs/Makefile)0
-rw-r--r--tests/test_soledad/u1db_tests/testing-certs/cacert.pem (renamed from testing/test_soledad/u1db_tests/testing-certs/cacert.pem)0
-rw-r--r--tests/test_soledad/u1db_tests/testing-certs/testing.cert (renamed from testing/test_soledad/u1db_tests/testing-certs/testing.cert)0
-rw-r--r--tests/test_soledad/u1db_tests/testing-certs/testing.key (renamed from testing/test_soledad/u1db_tests/testing-certs/testing.key)0
-rw-r--r--tests/test_soledad/util.py (renamed from testing/test_soledad/util.py)0
-rw-r--r--tox.ini (renamed from testing/tox.ini)19
102 files changed, 48 insertions, 70 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d284d65d..ad0f2abb 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -16,7 +16,7 @@ cache:
untracked: true
key: soledad-shared-pip-cache
paths:
- - testing/.cache/
+ - .cache/
before_script:
- echo "Running on ${HOST_HOSTNAME:=$(hostname)}"
@@ -47,7 +47,6 @@ code-check:
stage: code-check
image: 0xacab.org:4567/leap/soledad:latest
script:
- - cd testing
- tox -e code-check
tests:
@@ -56,7 +55,6 @@ tests:
services:
- couchdb
script:
- - cd testing
- tox -- --couch-url http://couchdb:5984
benchmark:
@@ -70,7 +68,6 @@ benchmark:
- git checkout -B "$CI_COMMIT_REF_NAME" "$CI_COMMIT_SHA"
- '[ -n "${BENCHMARK_ALL_COMMITS}" ] && git checkout origin/master scripts/benchmark/setup-all-commits-env.sh'
- '[ -n "${BENCHMARK_ALL_COMMITS}" ] && ./scripts/benchmark/setup-all-commits-env.sh'
- - cd testing
- curl -s couchdb:5984
# You can provide a $NETRC variable containing the creds for your
# elasticsearch instance so it's protected from being leaked in the
@@ -94,7 +91,6 @@ responsiveness:
- couchdb
script:
- git checkout -B "$CI_COMMIT_REF_NAME" "$CI_COMMIT_SHA"
- - cd testing
- curl -s couchdb:5984
- echo "addopts=--elasticsearch-url=\"$ELASTICSEARCH_URL\"" >> pytest.ini && chmod 600 pytest.ini
- /usr/bin/unbuffer tox --recreate -e responsiveness -- --couch-url http://couchdb:5984 | /usr/bin/ts -s
diff --git a/README.rst b/README.rst
index 66be82fe..3d02c8aa 100644
--- a/README.rst
+++ b/README.rst
@@ -30,6 +30,7 @@ The server depends on CouchDB::
pip install ".[server]"
+
Compatibility
-------------
@@ -40,27 +41,45 @@ Compatibility
that platform version implements ephemeral tokens databases and Soledad
Server needs to act accordingly.
+* Upgrades of Soledad Server < 0.9.0 to >= 0.9.0 need database migration
+ because older code used to use CouchDB's design documents, while newer code
+ got rid of that because it made everything cpu and memory hungry. See `the
+ documentation
+ <http://soledad.readthedocs.io/en/latest/migrations.html#soledad-server-0-8-to-0-9-couch-database-schema-migration-needed>`_
+ for more information.
+
Tests
-----
-System dependencies::
+Soledad's test suite depends on `tox <https://tox.readthedocs.io/en/latest/>`_,
+which creates virtual environments and installs all needed dependencies to run
+tests. Currently, some tests also depend on availability of a `CouchDB`_ server
+(see :ref:`dependency-on-couchdb` for more information).
+
+Once you have both *tox* and *CouchDB* installed in your system, just run the
+``tox`` command in the root of the repository to get started running tests.
- python3-venv
+.. _dependency-on-couchdb:
-Install local dependencies::
+---------------------
+Dependency on CouchDB
+---------------------
- $ cd testing
- $ pyvenv test-env
- $ source test-env/bin/activate
- $ pip3 install -U -r requirements-testing.pip
+Currently, some tests depend on availability of a CouchDB server. This will
+change in the future and only integration tests will depend on CouchDB.
-Soledad tests use tox, and they live in the testing folder::
+By default, tests will try to access couch at ``http://127.0.0.1:5984/``. If
+you have a CouchDB server running elsewhere, you can pass a custom url to
+*pytest* by using the ``--couch-url`` option after two dashes (``--``) when
+running tox::
- $ tox
+ tox -- --couch-url http://couch_host:5984
-Note that to run CouchDB tests, be sure you have `CouchDB`_ installed on your
-system.
+Tests that depend on couchdb are marked as such with the ``needs_couch`` pytest
+marker. You can skip them by avoiding tests with that marker::
+
+ tox -- -m 'not needs_couch'
.. _`CouchDB`: https://couchdb.apache.org/
@@ -70,7 +89,7 @@ In order to prevent privilege escalation, Soledad should not be run as a
database administrator. This implies the following side effects:
-----------------
-Database creation:
+Database creation
-----------------
Can be done via a script located in ``pkg/server/soledad-create-userdb``
@@ -91,9 +110,9 @@ then use a parameter called 'create_cmd' to know which command is used to
allocate new databases. All steps of creation process is then handled
automatically by the server, following the same logic as u1db server.
-------------------
-Database deletion:
-------------------
+-----------------
+Database deletion
+-----------------
No code at all handles this and privilege to do so needs to be removed as
explained before. This can be automated via a simple cron job.
diff --git a/docs/benchmarks.rst b/docs/benchmarks.rst
index 5338fdee..25e39ae7 100644
--- a/docs/benchmarks.rst
+++ b/docs/benchmarks.rst
@@ -9,7 +9,6 @@ to write tests to assess the time and resources taken by various tasks.
To run benchmark tests, once inside a cloned Soledad repository, do the
following::
- cd testing/
tox -e benchmark
Results of automated benchmarking for each commit in the repository can be seen
diff --git a/docs/tests.rst b/docs/tests.rst
index 8a412701..72e2d087 100644
--- a/docs/tests.rst
+++ b/docs/tests.rst
@@ -11,7 +11,6 @@ couchdb server to be run against.
If you do have a couchdb server running on localhost on default port, the
following command should be enough to run tests::
- cd testing
tox
CouchDB dependency
@@ -20,13 +19,11 @@ CouchDB dependency
In case you want to use a couchdb on another host or port, use the
`--couch-url` parameter for `pytest`::
- cd testing
tox -- --couch-url=http://couch_host:5984
If you want to exclude all tests that depend on couchdb, deselect tests marked
with `needs_couch`::
- cd testing
tox -- -m 'not needs_couch'
Benchmark tests
diff --git a/testing/pytest.ini b/pytest.ini
index eb70b67c..70497c51 100644
--- a/testing/pytest.ini
+++ b/pytest.ini
@@ -1,3 +1,4 @@
[pytest]
testpaths = tests
+norecursedirs = test_soledad
twisted = yes
diff --git a/requirements-testing.pip b/requirements-testing.pip
new file mode 100644
index 00000000..053148f8
--- /dev/null
+++ b/requirements-testing.pip
@@ -0,0 +1 @@
+tox
diff --git a/testing/docker/Dockerfile b/scripts/docker/Dockerfile
index 2dea3ec8..2dea3ec8 100644
--- a/testing/docker/Dockerfile
+++ b/scripts/docker/Dockerfile
diff --git a/testing/check-pysqlcipher.py b/scripts/testing/check-pysqlcipher.py
index 4202b13b..4202b13b 100755
--- a/testing/check-pysqlcipher.py
+++ b/scripts/testing/check-pysqlcipher.py
diff --git a/testing/ensure-pysqlcipher-has-usleep.sh b/scripts/testing/ensure-pysqlcipher-has-usleep.sh
index d3d93d86..d3d93d86 100755
--- a/testing/ensure-pysqlcipher-has-usleep.sh
+++ b/scripts/testing/ensure-pysqlcipher-has-usleep.sh
diff --git a/testing/README b/testing/README
deleted file mode 100644
index 94be7250..00000000
--- a/testing/README
+++ /dev/null
@@ -1,21 +0,0 @@
-Soledad Tests
-=============
-
-This folder contains all tests for Soledad client and server.
-
-Dependency on CouchDB
----------------------
-
-Currently, some tests depend on availability of a CouchDB server. You can pass
-a custom couchdb url by using the --couch-url option when running tox (or
-pytest), like this:
-
- tox -- --couch-url http://couch_host:5984
-
-Tests that depend on couchdb are marked as such with the 'needs_couch' pytest
-marker. You can skip them by avoiding tests with that marker:
-
- tox -- -m 'not needs_couch'
-
-In the future we want to isolate all tests that need couch as integration
-tests, and use mocks everywhere else.
diff --git a/testing/requirements-testing.pip b/testing/requirements-testing.pip
deleted file mode 100644
index a80b1b34..00000000
--- a/testing/requirements-testing.pip
+++ /dev/null
@@ -1,3 +0,0 @@
-pip
-tox
-pytest-twisted
diff --git a/testing/setup.py b/testing/setup.py
deleted file mode 100644
index c1204c9a..00000000
--- a/testing/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from setuptools import setup
-from setuptools import find_packages
-
-
-setup(
- name='test_soledad',
- packages=find_packages('.'),
- package_data={'': ['*.conf', 'u1db_tests/testing-certs/*']}
-)
diff --git a/testing/tests/benchmarks/README.md b/tests/benchmarks/README.md
index b2465a78..b2465a78 100644
--- a/testing/tests/benchmarks/README.md
+++ b/tests/benchmarks/README.md
diff --git a/testing/tests/benchmarks/assets/cert_default.conf b/tests/benchmarks/assets/cert_default.conf
index 8043cea3..8043cea3 100644
--- a/testing/tests/benchmarks/assets/cert_default.conf
+++ b/tests/benchmarks/assets/cert_default.conf
diff --git a/testing/tests/benchmarks/conftest.py b/tests/benchmarks/conftest.py
index 80eccb08..80eccb08 100644
--- a/testing/tests/benchmarks/conftest.py
+++ b/tests/benchmarks/conftest.py
diff --git a/testing/tests/benchmarks/pytest.ini b/tests/benchmarks/pytest.ini
index 7a0508ce..7a0508ce 100644
--- a/testing/tests/benchmarks/pytest.ini
+++ b/tests/benchmarks/pytest.ini
diff --git a/testing/tests/benchmarks/test_crypto.py b/tests/benchmarks/test_crypto.py
index 3be447a5..3be447a5 100644
--- a/testing/tests/benchmarks/test_crypto.py
+++ b/tests/benchmarks/test_crypto.py
diff --git a/testing/tests/benchmarks/test_legacy_vs_blobs.py b/tests/benchmarks/test_legacy_vs_blobs.py
index 47d6482c..47d6482c 100644
--- a/testing/tests/benchmarks/test_legacy_vs_blobs.py
+++ b/tests/benchmarks/test_legacy_vs_blobs.py
diff --git a/testing/tests/benchmarks/test_misc.py b/tests/benchmarks/test_misc.py
index 8b2178b9..8b2178b9 100644
--- a/testing/tests/benchmarks/test_misc.py
+++ b/tests/benchmarks/test_misc.py
diff --git a/testing/tests/benchmarks/test_resources.py b/tests/benchmarks/test_resources.py
index 173edbd1..173edbd1 100644
--- a/testing/tests/benchmarks/test_resources.py
+++ b/tests/benchmarks/test_resources.py
diff --git a/testing/tests/benchmarks/test_sqlcipher.py b/tests/benchmarks/test_sqlcipher.py
index 9108084c..9108084c 100644
--- a/testing/tests/benchmarks/test_sqlcipher.py
+++ b/tests/benchmarks/test_sqlcipher.py
diff --git a/testing/tests/benchmarks/test_sqlite_blobs_backend.py b/tests/benchmarks/test_sqlite_blobs_backend.py
index e02cacad..e02cacad 100644
--- a/testing/tests/benchmarks/test_sqlite_blobs_backend.py
+++ b/tests/benchmarks/test_sqlite_blobs_backend.py
diff --git a/testing/tests/benchmarks/test_sync.py b/tests/benchmarks/test_sync.py
index 45506d77..45506d77 100644
--- a/testing/tests/benchmarks/test_sync.py
+++ b/tests/benchmarks/test_sync.py
diff --git a/testing/tests/blobs/test_blob_manager.py b/tests/blobs/test_blob_manager.py
index 7d985768..7d985768 100644
--- a/testing/tests/blobs/test_blob_manager.py
+++ b/tests/blobs/test_blob_manager.py
diff --git a/testing/tests/blobs/test_decrypter_buffer.py b/tests/blobs/test_decrypter_buffer.py
index 83fbaad3..83fbaad3 100644
--- a/testing/tests/blobs/test_decrypter_buffer.py
+++ b/tests/blobs/test_decrypter_buffer.py
diff --git a/testing/tests/blobs/test_fs_backend.py b/tests/blobs/test_fs_backend.py
index 53f3127d..53f3127d 100644
--- a/testing/tests/blobs/test_fs_backend.py
+++ b/tests/blobs/test_fs_backend.py
diff --git a/testing/tests/blobs/test_sqlcipher_client_backend.py b/tests/blobs/test_sqlcipher_client_backend.py
index daf561c7..daf561c7 100644
--- a/testing/tests/blobs/test_sqlcipher_client_backend.py
+++ b/tests/blobs/test_sqlcipher_client_backend.py
diff --git a/testing/tests/client/__init__.py b/tests/client/__init__.py
index e69de29b..e69de29b 100644
--- a/testing/tests/client/__init__.py
+++ b/tests/client/__init__.py
diff --git a/testing/tests/client/test_api.py b/tests/client/test_api.py
index 3c6a8155..3c6a8155 100644
--- a/testing/tests/client/test_api.py
+++ b/tests/client/test_api.py
diff --git a/testing/tests/client/test_app.py b/tests/client/test_app.py
index 6867473e..6867473e 100644
--- a/testing/tests/client/test_app.py
+++ b/tests/client/test_app.py
diff --git a/testing/tests/client/test_attachments.py b/tests/client/test_attachments.py
index 2df5b90d..2df5b90d 100644
--- a/testing/tests/client/test_attachments.py
+++ b/tests/client/test_attachments.py
diff --git a/testing/tests/client/test_aux_methods.py b/tests/client/test_aux_methods.py
index 1eb676c7..1eb676c7 100644
--- a/testing/tests/client/test_aux_methods.py
+++ b/tests/client/test_aux_methods.py
diff --git a/testing/tests/client/test_crypto.py b/tests/client/test_crypto.py
index 5b647b73..5b647b73 100644
--- a/testing/tests/client/test_crypto.py
+++ b/tests/client/test_crypto.py
diff --git a/testing/tests/client/test_deprecated_crypto.py b/tests/client/test_deprecated_crypto.py
index 939a2003..939a2003 100644
--- a/testing/tests/client/test_deprecated_crypto.py
+++ b/tests/client/test_deprecated_crypto.py
diff --git a/testing/tests/client/test_doc.py b/tests/client/test_doc.py
index 36479e90..36479e90 100644
--- a/testing/tests/client/test_doc.py
+++ b/tests/client/test_doc.py
diff --git a/testing/tests/client/test_http.py b/tests/client/test_http.py
index 47df4b4a..47df4b4a 100644
--- a/testing/tests/client/test_http.py
+++ b/tests/client/test_http.py
diff --git a/testing/tests/client/test_https.py b/tests/client/test_https.py
index 1b6caed6..1b6caed6 100644
--- a/testing/tests/client/test_https.py
+++ b/tests/client/test_https.py
diff --git a/testing/tests/client/test_incoming_processing_flow.py b/tests/client/test_incoming_processing_flow.py
index 7bc1e3c6..7bc1e3c6 100644
--- a/testing/tests/client/test_incoming_processing_flow.py
+++ b/tests/client/test_incoming_processing_flow.py
diff --git a/testing/tests/client/test_recovery_code.py b/tests/client/test_recovery_code.py
index 7bbccc41..7bbccc41 100644
--- a/testing/tests/client/test_recovery_code.py
+++ b/tests/client/test_recovery_code.py
diff --git a/testing/tests/client/test_secrets.py b/tests/client/test_secrets.py
index 7b643cb4..7b643cb4 100644
--- a/testing/tests/client/test_secrets.py
+++ b/tests/client/test_secrets.py
diff --git a/testing/tests/client/test_shared_db.py b/tests/client/test_shared_db.py
index b045e524..b045e524 100644
--- a/testing/tests/client/test_shared_db.py
+++ b/tests/client/test_shared_db.py
diff --git a/testing/tests/client/test_signals.py b/tests/client/test_signals.py
index c7609a74..c7609a74 100644
--- a/testing/tests/client/test_signals.py
+++ b/tests/client/test_signals.py
diff --git a/tests/client/test_soledad b/tests/client/test_soledad
new file mode 120000
index 00000000..c1a35d32
--- /dev/null
+++ b/tests/client/test_soledad
@@ -0,0 +1 @@
+../test_soledad \ No newline at end of file
diff --git a/testing/tests/client/test_soledad_doc.py b/tests/client/test_soledad_doc.py
index e158d768..e158d768 100644
--- a/testing/tests/client/test_soledad_doc.py
+++ b/tests/client/test_soledad_doc.py
diff --git a/testing/tests/conftest.py b/tests/conftest.py
index d3a39289..d3a39289 100644
--- a/testing/tests/conftest.py
+++ b/tests/conftest.py
diff --git a/testing/tests/couch/__init__.py b/tests/couch/__init__.py
index e69de29b..e69de29b 100644
--- a/testing/tests/couch/__init__.py
+++ b/tests/couch/__init__.py
diff --git a/testing/tests/couch/common.py b/tests/couch/common.py
index 3c272f6e..3c272f6e 100644
--- a/testing/tests/couch/common.py
+++ b/tests/couch/common.py
diff --git a/testing/tests/couch/test_atomicity.py b/tests/couch/test_atomicity.py
index 48e1c01d..48e1c01d 100644
--- a/testing/tests/couch/test_atomicity.py
+++ b/tests/couch/test_atomicity.py
diff --git a/testing/tests/couch/test_backend.py b/tests/couch/test_backend.py
index 9dfa22ac..9dfa22ac 100644
--- a/testing/tests/couch/test_backend.py
+++ b/tests/couch/test_backend.py
diff --git a/testing/tests/couch/test_command.py b/tests/couch/test_command.py
index 9fb2c153..9fb2c153 100644
--- a/testing/tests/couch/test_command.py
+++ b/tests/couch/test_command.py
diff --git a/testing/tests/couch/test_ddocs.py b/tests/couch/test_ddocs.py
index 3937f2de..3937f2de 100644
--- a/testing/tests/couch/test_ddocs.py
+++ b/tests/couch/test_ddocs.py
diff --git a/tests/couch/test_soledad b/tests/couch/test_soledad
new file mode 120000
index 00000000..c1a35d32
--- /dev/null
+++ b/tests/couch/test_soledad
@@ -0,0 +1 @@
+../test_soledad \ No newline at end of file
diff --git a/testing/tests/couch/test_state.py b/tests/couch/test_state.py
index e5ac3704..e5ac3704 100644
--- a/testing/tests/couch/test_state.py
+++ b/tests/couch/test_state.py
diff --git a/testing/tests/couch/test_sync.py b/tests/couch/test_sync.py
index c353518e..c353518e 100644
--- a/testing/tests/couch/test_sync.py
+++ b/tests/couch/test_sync.py
diff --git a/testing/tests/couch/test_sync_target.py b/tests/couch/test_sync_target.py
index 0370a6d1..0370a6d1 100644
--- a/testing/tests/couch/test_sync_target.py
+++ b/tests/couch/test_sync_target.py
diff --git a/testing/tests/pipes/test_pipes.py b/tests/pipes/test_pipes.py
index 42ed81ac..42ed81ac 100644
--- a/testing/tests/pipes/test_pipes.py
+++ b/tests/pipes/test_pipes.py
diff --git a/testing/tests/responsiveness/conftest.py b/tests/responsiveness/conftest.py
index a46aea44..a46aea44 100644
--- a/testing/tests/responsiveness/conftest.py
+++ b/tests/responsiveness/conftest.py
diff --git a/testing/tests/responsiveness/elastic.py b/tests/responsiveness/elastic.py
index fed1506b..fed1506b 100644
--- a/testing/tests/responsiveness/elastic.py
+++ b/tests/responsiveness/elastic.py
diff --git a/testing/tests/responsiveness/test_responsiveness.py b/tests/responsiveness/test_responsiveness.py
index b3e2c56a..b3e2c56a 100644
--- a/testing/tests/responsiveness/test_responsiveness.py
+++ b/tests/responsiveness/test_responsiveness.py
diff --git a/testing/tests/responsiveness/watchdog.py b/tests/responsiveness/watchdog.py
index 88f4fa67..88f4fa67 100644
--- a/testing/tests/responsiveness/watchdog.py
+++ b/tests/responsiveness/watchdog.py
diff --git a/testing/tests/server/__init__.py b/tests/server/__init__.py
index e69de29b..e69de29b 100644
--- a/testing/tests/server/__init__.py
+++ b/tests/server/__init__.py
diff --git a/testing/tests/server/test__resource.py b/tests/server/test__resource.py
index a43ac19f..a43ac19f 100644
--- a/testing/tests/server/test__resource.py
+++ b/tests/server/test__resource.py
diff --git a/testing/tests/server/test__server_info.py b/tests/server/test__server_info.py
index 40567ef1..40567ef1 100644
--- a/testing/tests/server/test__server_info.py
+++ b/tests/server/test__server_info.py
diff --git a/testing/tests/server/test_auth.py b/tests/server/test_auth.py
index 78cf20ab..78cf20ab 100644
--- a/testing/tests/server/test_auth.py
+++ b/tests/server/test_auth.py
diff --git a/testing/tests/server/test_blobs_resource_validation.py b/tests/server/test_blobs_resource_validation.py
index 9f6dfc2f..9f6dfc2f 100644
--- a/testing/tests/server/test_blobs_resource_validation.py
+++ b/tests/server/test_blobs_resource_validation.py
diff --git a/testing/tests/server/test_blobs_server.py b/tests/server/test_blobs_server.py
index 9eddf108..9eddf108 100644
--- a/testing/tests/server/test_blobs_server.py
+++ b/tests/server/test_blobs_server.py
diff --git a/testing/tests/server/test_config.py b/tests/server/test_config.py
index dfb09f4c..dfb09f4c 100644
--- a/testing/tests/server/test_config.py
+++ b/tests/server/test_config.py
diff --git a/testing/tests/server/test_incoming_flow_integration.py b/tests/server/test_incoming_flow_integration.py
index b492534f..b492534f 100644
--- a/testing/tests/server/test_incoming_flow_integration.py
+++ b/tests/server/test_incoming_flow_integration.py
diff --git a/testing/tests/server/test_incoming_resource.py b/tests/server/test_incoming_resource.py
index 0d4918b9..0d4918b9 100644
--- a/testing/tests/server/test_incoming_resource.py
+++ b/tests/server/test_incoming_resource.py
diff --git a/testing/tests/server/test_incoming_server.py b/tests/server/test_incoming_server.py
index 241bc581..241bc581 100644
--- a/testing/tests/server/test_incoming_server.py
+++ b/tests/server/test_incoming_server.py
diff --git a/testing/tests/server/test_server.py b/tests/server/test_server.py
index 25f0cc2d..25f0cc2d 100644
--- a/testing/tests/server/test_server.py
+++ b/tests/server/test_server.py
diff --git a/testing/tests/server/test_session.py b/tests/server/test_session.py
index 3dbd2740..3dbd2740 100644
--- a/testing/tests/server/test_session.py
+++ b/tests/server/test_session.py
diff --git a/testing/tests/server/test_shared_db.py b/tests/server/test_shared_db.py
index 96af6dff..96af6dff 100644
--- a/testing/tests/server/test_shared_db.py
+++ b/tests/server/test_shared_db.py
diff --git a/tests/server/test_soledad b/tests/server/test_soledad
new file mode 120000
index 00000000..c1a35d32
--- /dev/null
+++ b/tests/server/test_soledad
@@ -0,0 +1 @@
+../test_soledad \ No newline at end of file
diff --git a/testing/tests/server/test_tac.py b/tests/server/test_tac.py
index 7bb50e35..7bb50e35 100644
--- a/testing/tests/server/test_tac.py
+++ b/tests/server/test_tac.py
diff --git a/testing/tests/server/test_url_mapper.py b/tests/server/test_url_mapper.py
index a04e7593..a04e7593 100644
--- a/testing/tests/server/test_url_mapper.py
+++ b/tests/server/test_url_mapper.py
diff --git a/testing/tests/sqlcipher/hacker_crackdown.txt b/tests/sqlcipher/hacker_crackdown.txt
index a01eb509..a01eb509 100644
--- a/testing/tests/sqlcipher/hacker_crackdown.txt
+++ b/tests/sqlcipher/hacker_crackdown.txt
diff --git a/testing/tests/sqlcipher/test_async.py b/tests/sqlcipher/test_async.py
index 5c220cc4..5c220cc4 100644
--- a/testing/tests/sqlcipher/test_async.py
+++ b/tests/sqlcipher/test_async.py
diff --git a/testing/tests/sqlcipher/test_backend.py b/tests/sqlcipher/test_backend.py
index 68f8f9f2..68f8f9f2 100644
--- a/testing/tests/sqlcipher/test_backend.py
+++ b/tests/sqlcipher/test_backend.py
diff --git a/tests/sqlcipher/test_soledad b/tests/sqlcipher/test_soledad
new file mode 120000
index 00000000..c1a35d32
--- /dev/null
+++ b/tests/sqlcipher/test_soledad
@@ -0,0 +1 @@
+../test_soledad \ No newline at end of file
diff --git a/testing/tests/sync/__init__.py b/tests/sync/__init__.py
index e69de29b..e69de29b 100644
--- a/testing/tests/sync/__init__.py
+++ b/tests/sync/__init__.py
diff --git a/tests/sync/test_soledad b/tests/sync/test_soledad
new file mode 120000
index 00000000..c1a35d32
--- /dev/null
+++ b/tests/sync/test_soledad
@@ -0,0 +1 @@
+../test_soledad \ No newline at end of file
diff --git a/testing/tests/sync/test_sqlcipher_sync.py b/tests/sync/test_sqlcipher_sync.py
index 26f63a40..26f63a40 100644
--- a/testing/tests/sync/test_sqlcipher_sync.py
+++ b/tests/sync/test_sqlcipher_sync.py
diff --git a/testing/tests/sync/test_sync.py b/tests/sync/test_sync.py
index fb9a0245..fb9a0245 100644
--- a/testing/tests/sync/test_sync.py
+++ b/tests/sync/test_sync.py
diff --git a/testing/tests/sync/test_sync_mutex.py b/tests/sync/test_sync_mutex.py
index fdd2aacd..fdd2aacd 100644
--- a/testing/tests/sync/test_sync_mutex.py
+++ b/tests/sync/test_sync_mutex.py
diff --git a/testing/tests/sync/test_sync_target.py b/tests/sync/test_sync_target.py
index 712f0d3f..712f0d3f 100644
--- a/testing/tests/sync/test_sync_target.py
+++ b/tests/sync/test_sync_target.py
diff --git a/testing/test_soledad/__init__.py b/tests/test_soledad/__init__.py
index c07c8b0e..c07c8b0e 100644
--- a/testing/test_soledad/__init__.py
+++ b/tests/test_soledad/__init__.py
diff --git a/testing/test_soledad/fixture_soledad.conf b/tests/test_soledad/fixture_soledad.conf
index 80e7a4d4..80e7a4d4 100644
--- a/testing/test_soledad/fixture_soledad.conf
+++ b/tests/test_soledad/fixture_soledad.conf
diff --git a/testing/test_soledad/u1db_tests/README b/tests/test_soledad/u1db_tests/README
index 546dfdc9..546dfdc9 100644
--- a/testing/test_soledad/u1db_tests/README
+++ b/tests/test_soledad/u1db_tests/README
diff --git a/testing/test_soledad/u1db_tests/__init__.py b/tests/test_soledad/u1db_tests/__init__.py
index 2a4415a6..2a4415a6 100644
--- a/testing/test_soledad/u1db_tests/__init__.py
+++ b/tests/test_soledad/u1db_tests/__init__.py
diff --git a/testing/test_soledad/u1db_tests/test_backends.py b/tests/test_soledad/u1db_tests/test_backends.py
index 10dcdff9..10dcdff9 100644
--- a/testing/test_soledad/u1db_tests/test_backends.py
+++ b/tests/test_soledad/u1db_tests/test_backends.py
diff --git a/testing/test_soledad/u1db_tests/test_document.py b/tests/test_soledad/u1db_tests/test_document.py
index a7ead2d1..a7ead2d1 100644
--- a/testing/test_soledad/u1db_tests/test_document.py
+++ b/tests/test_soledad/u1db_tests/test_document.py
diff --git a/testing/test_soledad/u1db_tests/test_http_client.py b/tests/test_soledad/u1db_tests/test_http_client.py
index e9516236..e9516236 100644
--- a/testing/test_soledad/u1db_tests/test_http_client.py
+++ b/tests/test_soledad/u1db_tests/test_http_client.py
diff --git a/testing/test_soledad/u1db_tests/test_http_database.py b/tests/test_soledad/u1db_tests/test_http_database.py
index a3ed9361..a3ed9361 100644
--- a/testing/test_soledad/u1db_tests/test_http_database.py
+++ b/tests/test_soledad/u1db_tests/test_http_database.py
diff --git a/testing/test_soledad/u1db_tests/test_https.py b/tests/test_soledad/u1db_tests/test_https.py
index 2e75afd1..2e75afd1 100644
--- a/testing/test_soledad/u1db_tests/test_https.py
+++ b/tests/test_soledad/u1db_tests/test_https.py
diff --git a/testing/test_soledad/u1db_tests/test_open.py b/tests/test_soledad/u1db_tests/test_open.py
index 4ca0c4a7..4ca0c4a7 100644
--- a/testing/test_soledad/u1db_tests/test_open.py
+++ b/tests/test_soledad/u1db_tests/test_open.py
diff --git a/testing/test_soledad/u1db_tests/testing-certs/Makefile b/tests/test_soledad/u1db_tests/testing-certs/Makefile
index 2385e75b..2385e75b 100644
--- a/testing/test_soledad/u1db_tests/testing-certs/Makefile
+++ b/tests/test_soledad/u1db_tests/testing-certs/Makefile
diff --git a/testing/test_soledad/u1db_tests/testing-certs/cacert.pem b/tests/test_soledad/u1db_tests/testing-certs/cacert.pem
index c019a730..c019a730 100644
--- a/testing/test_soledad/u1db_tests/testing-certs/cacert.pem
+++ b/tests/test_soledad/u1db_tests/testing-certs/cacert.pem
diff --git a/testing/test_soledad/u1db_tests/testing-certs/testing.cert b/tests/test_soledad/u1db_tests/testing-certs/testing.cert
index 985684fb..985684fb 100644
--- a/testing/test_soledad/u1db_tests/testing-certs/testing.cert
+++ b/tests/test_soledad/u1db_tests/testing-certs/testing.cert
diff --git a/testing/test_soledad/u1db_tests/testing-certs/testing.key b/tests/test_soledad/u1db_tests/testing-certs/testing.key
index d83d4920..d83d4920 100644
--- a/testing/test_soledad/u1db_tests/testing-certs/testing.key
+++ b/tests/test_soledad/u1db_tests/testing-certs/testing.key
diff --git a/testing/test_soledad/util.py b/tests/test_soledad/util.py
index ca8d098d..ca8d098d 100644
--- a/testing/test_soledad/util.py
+++ b/tests/test_soledad/util.py
diff --git a/testing/tox.ini b/tox.ini
index a8186f70..d1e03366 100644
--- a/testing/tox.ini
+++ b/tox.ini
@@ -5,7 +5,6 @@ skipsdist=True
[testenv]
basepython = python2.7
commands =
- ./ensure-pysqlcipher-has-usleep.sh
py.test -x \
--cov-report=html \
--cov-report=term \
@@ -32,9 +31,8 @@ deps =
elasticsearch
certifi
# install soledad from current tree
- -e../
- -e../[client]
- -e../[server]
+ -e.[client]
+ -e.[server]
setenv =
HOME=/tmp
TERM=xterm
@@ -68,35 +66,31 @@ deps =
elasticsearch
certifi
# install soledad local packages
- -e../
- -e../[client]
- -e../[server]
+ -e.[client]
+ -e.[server]
setenv =
HOME=/tmp
TERM=xterm
install_command = pip3 install {opts} {packages}
[testenv:benchmark]
+usedevelop = True
deps =
{[testenv]deps}
commands =
-# we must make sure that installed pysqlcipher was built with the HAVE_USLEEP
-# flag, or we might have problems with concurrent db access.
- ./ensure-pysqlcipher-has-usleep.sh
# run benchmarks twice: once for time and cpu and a second time for memory
py.test --subdir=benchmarks {posargs}
py.test --subdir=benchmarks --watch-memory {posargs}
passenv = HOST_HOSTNAME
[testenv:responsiveness]
+usedevelop = True
deps =
{[testenv:benchmark]deps}
commands =
- ./ensure-pysqlcipher-has-usleep.sh
py.test --subdir=responsiveness {posargs}
[testenv:code-check]
-changedir = ..
deps =
pep8
flake8
@@ -110,5 +104,4 @@ deps =
pytest-xdist
install_command = pip install {opts} {packages}
commands =
- ./ensure-pysqlcipher-has-usleep.sh
py.test {posargs} -n 4