Commit Graph
22 Commits
Author SHA1 Message Date
Dominik Schmidt 7d4c6d6524 Merge pull request #3424 from opencloud-eu/feat/search-scope
feat(search): scope searches to a drive via the driveId field
2026-09-01 09:36:20 +02:00
Jörn Friedrich Dreyer 8028e3e310 Merge pull request #3435 from fschade/test-search-cjk-parity
test(search): cover chinese search in the parity suite
2026-09-01 08:24:34 +02:00
Dominik Schmidt 7d75b98c69 Merge pull request #3423 from opencloud-eu/test/parity-readme-staleness
test(search): fail the parity suite when the committed matrix is stale
2026-09-01 08:24:15 +02:00
Florian Schade 9e8403818c test(search): cover chinese search in the parity suite 2026-09-01 07:46:03 +02:00
Dominik Schmidt ef41429838 test(search): rename the update flag to UPDATE_SEARCH_PARITY_MATRIX 2026-09-01 07:35:15 +02:00
Dominik Schmidt 774c732f52 test(search): pin the driveId scope in the parity suite
SCOPE-06..09 cover the completed root id, negation and composition; the cross-space fixture root follows the space-root convention (opaque id = space id).
2026-08-31 15:23:25 +02:00
Dominik Schmidt feb13d426b test(search): name the update flag in the generated header 2026-08-31 15:16:15 +02:00
Dominik Schmidt b1533a3135 test(search): write the matrix only with UPDATE_MATRIX
A plain run compares and fails on a stale README without touching the working tree; UPDATE_MATRIX=true regenerates it.
2026-08-31 15:16:15 +02:00
Dominik Schmidt 874d8fdac2 test(search): fail the parity suite when the committed matrix is stale
The suite already regenerates README.md on every run; now a run whose content differs from the committed file also fails, so CI catches a stale matrix. The fresh content is on disk after the run, committing it is the fix.
2026-08-31 15:16:15 +02:00
Dominik Schmidt 7493f189a0 chore(search): adapt tests and golden to the v4 base
The refuse specs use registered analyzers (fulltext is gone), the golden regenerates via UPDATE_GOLDEN, MappingGetResp grew an accessor, and the parity suite passes the new NewBackend signature.
2026-08-31 15:12:54 +02:00
Dominik Schmidt d4f1ae910c fix(search): scope the OpenSearch purge to the resource's space
The delete-by-query matched the bare Path, so a purge could take same-path documents in other spaces with it; bleve was already RootID-scoped. Pinned as rootscope-04.
2026-08-31 13:50:36 +02:00
Dominik Schmidt 5abef94482 test(search): regenerate the parity matrix for the mediatype:file rows 2026-08-31 13:45:42 +02:00
Dominik Schmidt 9e8bb474b4 fix(search): compose the mediatype:file negation correctly
The file expansion is grouped again so its NOT stays atomic next to other terms (OpenSearch turned 'mediatype:file OR x' into '(NOT dir) AND x'), and the bleve compiler no longer re-keys resolved groups (a negated mediatype group targeted the raw 'mediatype' field and matched everything). Pinned as MEDIATYPE-07..10.
2026-08-31 13:43:19 +02:00
Dominik Schmidt 2383bcddcc test(search): leave behavior to the parity suite
The engine suites keep what is engine-specific (index setup, health, purge-space batching); every behavior answer lives in the parity suite once. The shared test client learns IndicesCount, and FIELDS-15 pins the Size/Type gate for number queries.
2026-08-31 13:40:43 +02:00
Dominik Schmidt 523d377a08 test(search): carry the parity suite over to the rebased semantics
Typed Mtime fixtures, VersionedIndexName, and audio.artist matches case-insensitively now (facets search case-insensitively by default).
2026-08-31 13:40:43 +02:00
Florian Schade 5c153ff74a test(search): drop the engine overrides, both engines answer alike 2026-08-31 11:15:03 +02:00
Florian Schade 0106a700c2 test(search): follow the versioned index and pin the equals operator 2026-08-31 10:58:13 +02:00
Dominik Schmidt 545aa114e8 test(search): let the parity suite replace the per-engine backend suites
Everything the bleve and OpenSearch backend suites checked now runs against
both engines in services/search/pkg/parity. The two cases without a twin
there join it (a facet value keeps its case, batches stay apart), the one
thing only OpenSearch can do, refuse an unhealthy cluster, stays in its
package.
2026-08-28 19:38:01 +02:00
Dominik Schmidt 889483d69c test(search): document where the engines still differ from the parity suite
The expectations are the desired state; where bleve or OpenSearch answer
differently on main today the case records that answer as an engine
override, so the suite is green and the README lists every divergence as
known.
2026-08-28 19:38:01 +02:00
Dominik Schmidt 1668e23f80 test(search): port the parity suite to ginkgo
Every case is one spec per engine, so one engine failing leaves the other's
answer in the matrix. Query groups share their engines through an Ordered
container, operations build their own. The README is assembled from report
entries in ReportAfterSuite, which also works across ginkgo -p processes, and
is only written once every planned row got an answer from every engine.

A case can carry, per engine, what that engine answers today where it still
differs from the expectation (engineOverrides): the spec asserts the override,
the README marks the row as known, and the override fails once the engine
answers as expected.
2026-08-28 19:37:45 +02:00
Dominik Schmidt a3e40a7471 test(search): run the parity suite against the current main
Move the OpenSearch test helpers to services/search/internal/opensearchtest so
the parity package can import them, and drop the index generation and clock
patch the suite was written against, neither exists on main yet.
2026-08-28 19:15:50 +02:00
Florian Schade 5601be1276 test(search): introduce engine parity suite 2026-08-28 18:41:37 +02:00