Add searchMeta stage tests#638
Conversation
|
🤖 Auto-triaged by documentdb-triage-tool. Applied: Reasoningcomponent from path globs (test-coverage, test-framework); effort from diff stats (3308+7 LOC, 18 files); LLM: Adds new test coverage for the $searchMeta aggregation stage, including a new external topology fixture pattern; self-contained within the test-coverage component. If a label is wrong, remove it manually and ping |
Signed-off-by: Daniel Frankcom <frankcom@amazon.com>
Signed-off-by: Daniel Frankcom <frankcom@amazon.com>
902ff60 to
6504ef4
Compare
Signed-off-by: Daniel Frankcom <frankcom@amazon.com>
Signed-off-by: Daniel Frankcom <frankcom@amazon.com>
Signed-off-by: Daniel Frankcom <frankcom@amazon.com>
Signed-off-by: Daniel Frankcom <frankcom@amazon.com>
Signed-off-by: Daniel Frankcom <frankcom@amazon.com>
Signed-off-by: Daniel Frankcom <frankcom@amazon.com>
Signed-off-by: Daniel Frankcom <frankcom@amazon.com>
Signed-off-by: Daniel Frankcom <frankcom@amazon.com>
Signed-off-by: Daniel Frankcom <frankcom@amazon.com>
|
It seems all path field tested with $searchMeta only has one format from string. Can we also test other conditions even though it's not supported? (array of strings, {value} document, {wildcard} document, {value, multi} multi-analyzer) |
Signed-off-by: Daniel Frankcom <frankcom@amazon.com>
Signed-off-by: Daniel Frankcom <frankcom@amazon.com>
Signed-off-by: Daniel Frankcom <frankcom@amazon.com>
Signed-off-by: Daniel Frankcom <frankcom@amazon.com>
Signed-off-by: Daniel Frankcom <frankcom@amazon.com>
Signed-off-by: Daniel Frankcom <frankcom@amazon.com>
|
Latest 3 commits are borrowed from #645 to provide some better diagnostics for |
…Source auth schema Signed-off-by: Daniel Frankcom <frankcom@amazon.com>
Signed-off-by: Daniel Frankcom <frankcom@amazon.com>
|
|
||
|
|
||
| @pytest.fixture(scope="module") | ||
| def search_collection(engine_client, worker_id) -> Iterator[Collection]: |
There was a problem hiding this comment.
- searchMeta/utils/ — the plain search_collection module fixture is copy-pasted verbatim across ~8 test files. 🟡 Minor (reuse)
Roughly eight files each define the identical:
@pytest.fixture(scope="module")
def search_collection(engine_client, worker_id) -> Iterator[Collection]:
with open_search_collection(engine_client, worker_id, f"{name}::search_collection") as coll:
yield coll
(The other ~19 module fixtures — empty_search_collection, no_index_collection, date_facet_collection, geo_collection, autocomplete_collection, etc. — are genuinely distinct recipes and are not the target here.) The repeated default one could live once in searchMeta/utils/ (or a conftest.py) and be imported. Note the honest
caveat: module scope means it still instantiates per module at runtime, so this is a maintainability/DRY win (one place to change the default index recipe), not a performance one. Worth doing given the count.
This change adds tests for the
$searchMetaaggregation stage.This is the first operator which uses the external
mongottopology to provide a required search index. I defined a number of file-scoped pytest fixtures to define the necessary indexed collections for these tests, as an index of this type is far more expensive to set up than the ones we use elsewhere (on the order of 30-60 secs). Using a module scoped fixture allows us to amortize this cost across the test cases rather than taking the hit each time.Note: The CI runs for this change will fail until #617 is merged, as it is heavily dependent. If you want to see the change in its correct (working) context, see the pr/searchMeta branch for now.This is resolved now.Closes #375