16 Commits

Author SHA1 Message Date
qdrant-cloud-bot
c958e0a74e build(deps): bump pyjwt from 2.12.1 to 2.13.0 in /tests (#9482)
Ports https://github.com/qdrant/qdrant/pull/9480 to dev.

Bumps pyjwt from 2.12.1 to 2.13.0 (security release).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-16 10:37:56 +02:00
tellet-q
d559671c68 Revert setting vm.max_map_count to higher value and increase pytest timeout for e2e tests (#9191) 2026-05-27 11:15:06 +02:00
qdrant-cloud-bot
f689dcc8cc ci: parallelize consensus tests with pytest-xdist (#8717)
* ci: parallelize consensus tests with pytest-xdist

Enable pytest-xdist for consensus_tests to run tests across multiple
workers in parallel, significantly reducing CI wall time (~20min → ~5-7min).

Changes:
- Add `-n auto --dist=loadfile` to the consensus test pytest invocation
- Remove hardcoded port_seed from tests that don't need fixed ports for
  restart/rejoin (test_order_by, test_consensus_compaction,
  test_named_vector_crud, test_listener_node)
- Give test_cluster_rejoin its own PORT_SEED=15000 to avoid port
  conflicts with auth tests (PORT_SEED=10000)
- Derive restart ports from killed PeerProcess objects instead of
  hardcoded arithmetic where possible
- Add xdist_group("auth") marker to auth test files to ensure they
  run on the same worker (they share PORT_SEED=10000)

Made-with: Cursor

* fix: remove remaining hardcoded port_seed=20000 causing parallel test conflicts

8 test files were using port_seed=20000 as a positional argument to
start_cluster(), which was missed in the initial change. When running
in parallel with pytest-xdist, multiple workers would try to bind to
the same port range (20000-20x02), causing port conflicts and cascading
test failures.

Also remove port_seed=23000 from test_snapshot_recovery_kill.py since
it doesn't need fixed ports for restart.

Made-with: Cursor

* fix: use saved port for restart in test_two_follower_nodes_down

The test was restarting killed peers on hardcoded ports (20200/20100)
that previously matched port_seed=20000. After switching to random
ports, the restart ports no longer match the original peer ports,
causing raft state URI mismatches and peer startup failures.

Save the p2p_port from the killed PeerProcess and reuse it for restart.

Made-with: Cursor

* Reuse p2p ports when restarting killed peers in consensus tests

When a peer is killed and restarted with random ports, it gets a new
consensus URI. The cluster needs a Raft operation to update this URI,
which under CPU contention from parallel test workers can exceed the
30-second timeout. Fix by capturing each peer's p2p_port before killing
and reusing it on restart, so the URI stays the same and no consensus
update is needed.

Made-with: Cursor

* A few improvements for parallel runs (#8731)

* fix: make auth tests' PORT_SEED per-worker to avoid port collisions
* ci: improve failure visibility for parallel consensus tests
* Three small changes to make hangs, interleaved output, and coverage runs behave predictably under pytest-xdist
* fix: two test bugs surfaced by parallel runs and revert drop PR_SET_PDEATHSIG helper
* fix: wait for count convergence in test_triple_replication
* fix: clean leaked peer processes at test start

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Cursor Agent <agent@cursor.com>
Co-authored-by: tellet-q <166374656+tellet-q@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 08:07:27 +02:00
tellet-q
2ae05890c5 Move test dependencies to tests (#7793)
* Move pyproject and uv.lock to tests folder

* Make tests working-dir agnostic

* Fix test

* Address review
2025-12-17 15:50:28 +01:00
Tim Visée
b0bb7ef604 Migrate Python to uv (#7790)
* Move pyproject.toml to root

* Migrate pyproject.toml from Poetry to uv

* Update GH workflows

* Update test script, doc and nix to use uv

* Use latest uv

* Fix uv.lock

* Cleanup shell.nix

* Cleanup

- Explicit `uv sync` is not required, `uv run` will install deps
  automatically.
- We don't provide a python package, so the `[build-system]` section
  is not needed.

* Fix UV_VERSION inconsistency

---------

Co-authored-by: tellet-q <elena.dubrovina@qdrant.com>
Co-authored-by: xzfc <xzfcpw@gmail.com>
2025-12-16 16:45:13 +01:00
Arnaud Gourlay
6b6981cef0 Bump misc. integration test deps (#7746) 2025-12-11 13:25:37 +01:00
tellet-q
82ca36ed37 Download archives once (#7711) 2025-12-10 10:04:19 +01:00
xzfc
e617a4b777 Ignore deprecation warnings for schemathesis (#7730) 2025-12-09 00:16:37 +00:00
tellet-q
4fe1a1b068 Long running e2e test on many collections (#7576)
* Add test for many collections

* Reduce number of collections
2025-12-01 11:57:40 +01:00
Arnaud Gourlay
0f2e415a72 Storage compat. tests all supported versions (#7566)
* Storage compat. tests all supported versions

* v1.15.0 creates problems

* less parallelism to not blow the disk

* Add xdist group (#7568)

* Add session fixture and xdist group

* Increase number of workers back to 4

* Revert caching

* Remove folders with docker_client

* Fix --dist=loadgroup

* Disable v1.15.0

---------

Co-authored-by: tellet-q <166374656+tellet-q@users.noreply.github.com>
2025-11-24 12:45:26 +01:00
Arnaud Gourlay
33d15fd452 Bump Python integration test deps for Dependabot (#6979) 2025-08-05 18:05:36 +02:00
tellet-q
f84e1f1f4a Refactor bash tests: low-disk (#6845)
* Add e2e_tests pytest test suite

* Remove old bash test
2025-07-14 12:42:06 +02:00
Arnaud Gourlay
d3e46acb35 Regen and update poetry lock (#6435) 2025-04-25 12:05:02 +02:00
Predrag Knezevic
9d67c6325b Test collections unique per openapi test module (#5384)
Collection name under test is equal to the test module name, without `.py` suffix.

* Helps by debugging/tracing failed tests and find relevant logs lines in qdrant log files
* Opens up a possibility to run tests in parallel, given that there are no data sharing
  between test modules

Change details:
* defined module scoped `collection_name` fixture in `conftest.py`
* removed `collection_name` module variable
* each test signature modified to declare the dependency to `collection_name` fixture
* `@pytest.mark.parametrize` migrated to `@pytest-cases.parametrize` in cases when
  `collection_name` was used as the value
2024-11-06 20:09:31 +01:00
Predrag Knezevic
6790e83336 Retry collection delete in test teardown (#5364)
Although test logic passes the assertions, the test might fail
if during the teardown the created collection is not deleted,
because the client could not reach the database due to networking issue.

In order to make test executions more robust, collection deletes
are retried in case of networking issues.
2024-11-05 00:44:11 +01:00
xzfc
cf08ac68dc Switch to poetry (#4518)
* Use poetry for openapi tests

* Use poetry for consensus tests

* Use poetry for gen_storage_compat_data/populate_db.py

* Make consensus_tests scripts executable

* Use poetry for test-consensus-compose

* Cleanup

* Don't call poetry run in scripts
2024-07-08 18:17:43 +00:00