* s3vectors: reuse shared authenticated identity context * s3vectors: encode empty results as arrays * test: cover S3 Vectors with Go and Rust volume servers * ci: require both volume implementations in vector integration tests * s3vectors: keep identityOf as a shim over the shared identity context Concurrent branches add identityOf call sites; deleting the helper would break the build when they merge in either order. Route it through GetIdentityNameFromContext so every caller resolves the same identity. * test: wait for the vector engine to register before running The gateway resolves weed-vector lazily through the master cluster list, so a listening port does not mean the engine is reachable yet; the first vector write or query could race KeepConnected and fail. Restore the cluster.ps registration wait the previous harness had, and ignore the pytest cache directory the suite creates. * test: wait for master registration across OSS and enterprise Use the exact engine registration event after AddClusterNode completes. The current enterprise cluster.ps does not list vector nodes, so waiting on its output prevents the shared fixture from starting there. * s3vectors: keep contextWithIdentity as a shim alongside identityOf In-flight callers still write the caller name through it; route the write through SetIdentityNameInContext so both helpers agree on the shared key whichever lands first.
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.