Files
seaweedfs/test/vectors
Chris Lu cc5912b8b8 s3vectors: e2e conformance for vector bucket policy evaluation (#12221)
* s3vectors: reject empty boolean-operator lists and sub-objects in filters

An empty $and/$or list or a nested empty object rendered '()'' — invalid
SQL surfaced as an engine error instead of a clean ValidationException.

* s3vectors: e2e conformance for vector bucket policy evaluation

The handler-level test covers statements; this runs the whole stack a
client sees — HTTP dispatch, authentication, policy evaluation, catalog,
engine — and walks the full lifecycle: a non-owner is denied without a
grant, an Allow on the bucket ARN grants every index under it, a Deny
vetoes an Allow on the same action, and deleting the policy restores
owner-only access.

* s3vectors: prove deny precedence and grant removal in policy e2e

* s3vectors: reject field operator objects with no operators

* test: use an s3vectors action in the vector policy round-trip
2026-10-29 16:19:22 -07:00
..

S3 Vectors integration tests

Run python3 -m pip install -r requirements.txt, then make test.

The suite starts a master, volume, filer, authenticated S3/Lance gateway, and vector engine on temporary ports. The same 12 API tests run with both Go and Rust volume servers. Coverage includes bucket/index lifecycle, bucket policies, empty results, ARN addressing, metadata, filters, cosine distance, atomic upserts, pagination, segmented listing, authentication, and writer loss.

Server logs and data stay in pytest's temporary directory for diagnosis. Every child process stops on exit. To select a volume server, set VOLUME_SERVER_IMPL=go or rust.

In an enterprise checkout containing rust/sw-vector-distributed, the build and default matrix also include distributed queries with two search workers. Those queries must still succeed after the writer stops. VECTOR_QUERY_MODE=single or distributed selects one query mode.

To use prebuilt binaries, set WEED_BINARY, VECTOR_BINARY, RUST_VOLUME_SERVER_BINARY, and (for distributed queries) VECTOR_WORKER_BINARY, then run ./run_test.sh. PYTHON selects the Python interpreter. The Makefile accepts CARGO_PROFILE=dev for faster local builds.