From abd0c198d64c632192c45d96870d1abd304a0130 Mon Sep 17 00:00:00 2001 From: Vivek Singh Date: Wed, 14 Jan 2026 17:20:48 +0100 Subject: [PATCH 1/7] Add E2E test for MongoDBSearch autoEmbedding support --- .evergreen-functions.yml | 2 + .evergreen-tasks.yml | 5 + .evergreen.yml | 1 + .../common/search/movies_search_helper.py | 50 +++++++ .../tests/common/search/search_tester.py | 26 ++++ .../search/search_community_auto_embedding.py | 127 ++++++++++++++++++ .../templates/mongodb-enterprise-tests.yaml | 2 + .../deployments/test-app/values.yaml | 3 + scripts/evergreen/e2e/single_e2e.sh | 1 + 9 files changed, 217 insertions(+) create mode 100644 docker/mongodb-kubernetes-tests/tests/search/search_community_auto_embedding.py diff --git a/.evergreen-functions.yml b/.evergreen-functions.yml index daac22d9a5..18af56cbec 100644 --- a/.evergreen-functions.yml +++ b/.evergreen-functions.yml @@ -50,6 +50,7 @@ variables: - VERSION_UPGRADE_HOOK_VERSION - BUILD_SCENARIO - MDB_BASH_DEBUG + - VOYAGE_API_KEY functions: @@ -584,6 +585,7 @@ functions: - github_pr_number - project_identifier - revision_order_id + - VOYAGE_API_KEY add_to_path: - ${workdir}/bin binary: scripts/evergreen/e2e/e2e.sh diff --git a/.evergreen-tasks.yml b/.evergreen-tasks.yml index cae1ce3dab..fe9e0e2967 100644 --- a/.evergreen-tasks.yml +++ b/.evergreen-tasks.yml @@ -1323,6 +1323,11 @@ tasks: commands: - func: "e2e_test" + - name: e2e_search_community_auto_embedding + tags: ["patch-run"] + commands: + - func: "e2e_test" + - name: e2e_search_community_tls tags: ["patch-run"] commands: diff --git a/.evergreen.yml b/.evergreen.yml index b0a44f065f..505e251e7c 100644 --- a/.evergreen.yml +++ b/.evergreen.yml @@ -663,6 +663,7 @@ task_groups: tasks: - e2e_community_replicaset_scale - e2e_search_community_basic + - e2e_search_community_auto_embedding - e2e_search_community_tls - e2e_search_external_basic - e2e_search_external_tls diff --git a/docker/mongodb-kubernetes-tests/tests/common/search/movies_search_helper.py b/docker/mongodb-kubernetes-tests/tests/common/search/movies_search_helper.py index be21511584..2b7b72d869 100644 --- a/docker/mongodb-kubernetes-tests/tests/common/search/movies_search_helper.py +++ b/docker/mongodb-kubernetes-tests/tests/common/search/movies_search_helper.py @@ -27,6 +27,9 @@ def restore_sample_database(self): def create_search_index(self): self.search_tester.create_search_index(self.db_name, self.col_name) + def create_auto_embedding_vector_search_index(self): + self.search_tester.create_auto_embedding_vector_search_index(self.db_name, self.col_name) + def wait_for_search_indexes(self): self.search_tester.wait_for_search_indexes_ready(self.db_name, self.col_name) @@ -75,3 +78,50 @@ def execute_example_search_query(self): {"$project": {"title": 1, "plot": 1, "genres": 1, "_id": 0}}, ] ) + + def execute_auto_embedding_vector_search_query(self, query: str = "spy thriller", limit: int = 10): + return self.search_tester.client[self.db_name][self.col_name].aggregate( + [ + { + "$vectorSearch": { + "index": "vector_index", + "path": "plot", + "query": query, + "numCandidates": 150, + "limit": limit + } + }, + { + "$project": { + "_id": 0, + "plot": 1, + "title": 1, + "score": {"$meta": "vectorSearchScore"}, + } + }, + ] + ) + + def assert_auto_emb_vector_search_query(self, retry_timeout: int = 1): + def wait_for_auto_emb_search_results(): + count = 0 + status_msg = "" + try: + result = self.execute_auto_embedding_vector_search_query() + status_msg = f"{self.db_name}/{self.col_name}: auto-embedding vector search query results:\n" + for r in result: + status_msg += f"{r}\n" + count += 1 + status_msg += f"Count: {count}" + logger.debug(status_msg) + except pymongo.errors.PyMongoError as e: + logger.debug(f"error: {e}") + + return count > 0, status_msg + + kubetester.run_periodically( + fn=wait_for_auto_emb_search_results, + timeout=retry_timeout, + sleep_time=1, + msg="Auto-embedding vector search query to return correct data", + ) diff --git a/docker/mongodb-kubernetes-tests/tests/common/search/search_tester.py b/docker/mongodb-kubernetes-tests/tests/common/search/search_tester.py index 6dccfb5aeb..2402996ce5 100644 --- a/docker/mongodb-kubernetes-tests/tests/common/search/search_tester.py +++ b/docker/mongodb-kubernetes-tests/tests/common/search/search_tester.py @@ -45,6 +45,32 @@ def create_search_index(self, database_name: str, collection_name: str): result = collection.create_search_index(model=search_index_model) logger.debug(f"create_search_index result: {result}") + def create_auto_embedding_vector_search_index( + self, + database_name: str, + collection_name: str, + index_name: str = "vector_index", + field_path: str = "plot", + model: str = "voyage-4", + ): + database = self.client[database_name] + collection = database[collection_name] + search_index_model = SearchIndexModel( + definition={ + "fields": [ + { + "type": "autoEmbed", + "path": field_path, + "modality": "text", + "model": model, + } + ] + }, + name=index_name, + ) + result = collection.create_search_index(model=search_index_model) + logger.debug(f"create_auto_embedding_vector_search_index result: {result}") + def wait_for_search_indexes_ready(self, database_name: str, collection_name: str, timeout=60): kubetester.run_periodically( fn=lambda: self.search_indexes_ready(database_name, collection_name), diff --git a/docker/mongodb-kubernetes-tests/tests/search/search_community_auto_embedding.py b/docker/mongodb-kubernetes-tests/tests/search/search_community_auto_embedding.py new file mode 100644 index 0000000000..6d9f54f9ac --- /dev/null +++ b/docker/mongodb-kubernetes-tests/tests/search/search_community_auto_embedding.py @@ -0,0 +1,127 @@ +import os + +from kubetester import create_or_update_secret, try_load +from kubetester.kubetester import fixture as yaml_fixture +from kubetester.mongodb_community import MongoDBCommunity +from kubetester.mongodb_search import MongoDBSearch +from kubetester.phase import Phase +from pytest import fixture, mark +from tests import test_logger +from tests.common.search import movies_search_helper +from tests.common.search.movies_search_helper import SampleMoviesSearchHelper +from tests.common.search.search_tester import SearchTester +from tests.conftest import get_default_operator + +logger = test_logger.get_test_logger(__name__) + +ADMIN_USER_NAME = "mdb-admin-user" +ADMIN_USER_PASSWORD = "mdb-admin-user-pass" + +MONGOT_USER_NAME = "search-sync-source" +MONGOT_USER_PASSWORD = "search-sync-source-user-password" + +USER_NAME = "mdb-user" +USER_PASSWORD = "mdb-user-pass" + +MDBC_RESOURCE_NAME = "mdbc-rs" +VOYAGE_API_KEY_ENV_VAR = "VOYAGE_API_KEY" +VOYAGE_API_KEY_SECRET_NAME = "voyage-api-keys" +PROVIDER_ENDPOINT = "https://api.voyageai.com/v1/embeddings" + + +@fixture(scope="function") +def mdbc(namespace: str) -> MongoDBCommunity: + resource = MongoDBCommunity.from_yaml( + yaml_fixture("community-replicaset-sample-mflix.yaml"), + name=MDBC_RESOURCE_NAME, + namespace=namespace, + ) + + if try_load(resource): + return resource + + return resource + + +@fixture(scope="function") +def mdbs(namespace: str) -> MongoDBSearch: + resource = MongoDBSearch.from_yaml( + yaml_fixture("search-minimal.yaml"), + namespace=namespace, + ) + + if try_load(resource): + return resource + + return resource + + +@mark.e2e_search_community_auto_embedding +def test_install_operator(namespace: str, operator_installation_config: dict[str, str]): + operator = get_default_operator(namespace, operator_installation_config=operator_installation_config) + operator.assert_is_running() + + +@mark.e2e_search_community_auto_embedding +def test_install_secrets(namespace: str, mdbs: MongoDBSearch): + create_or_update_secret(namespace=namespace, name=f"{USER_NAME}-password", data={"password": USER_PASSWORD}) + create_or_update_secret( + namespace=namespace, name=f"{ADMIN_USER_NAME}-password", data={"password": ADMIN_USER_PASSWORD} + ) + create_or_update_secret( + namespace=namespace, name=f"{mdbs.name}-{MONGOT_USER_NAME}-password", data={"password": MONGOT_USER_PASSWORD} + ) + voyage_api_key = os.getenv(VOYAGE_API_KEY_ENV_VAR) + if voyage_api_key: + create_or_update_secret( + namespace=namespace, + name=VOYAGE_API_KEY_SECRET_NAME, + data={"query-key": voyage_api_key, "indexing-key": voyage_api_key}, + ) + + +@mark.e2e_search_community_auto_embedding +def test_create_database_resource(mdbc: MongoDBCommunity): + mdbc.update() + mdbc.assert_reaches_phase(Phase.Running, timeout=300) + + +@mark.e2e_search_community_auto_embedding +def test_create_search_resource(mdbs: MongoDBSearch): + mdbs.spec["autoEmbedding"] = { + "embeddingModelAPIKeySecret": {"name": VOYAGE_API_KEY_SECRET_NAME}, + "providerEndpoint": PROVIDER_ENDPOINT, + } + mdbs.update() + mdbs.assert_reaches_phase(Phase.Running, timeout=300) + + +@mark.e2e_search_community_auto_embedding +def test_wait_for_community_resource_ready(mdbc: MongoDBCommunity): + mdbc.assert_reaches_phase(Phase.Running, timeout=300) + + +@fixture(scope="function") +def sample_movies_helper(mdbc: MongoDBCommunity) -> SampleMoviesSearchHelper: + return movies_search_helper.SampleMoviesSearchHelper( + SearchTester(get_connection_string(mdbc, USER_NAME, USER_PASSWORD)) + ) + + +@mark.e2e_search_community_auto_embedding +def test_search_restore_sample_database(sample_movies_helper: SampleMoviesSearchHelper): + sample_movies_helper.restore_sample_database() + + +@mark.e2e_search_community_auto_embedding +def test_search_create_search_index(sample_movies_helper: SampleMoviesSearchHelper): + sample_movies_helper.create_auto_embedding_vector_search_index() + + +@mark.e2e_search_community_auto_embedding +def test_search_assert_search_query(sample_movies_helper: SampleMoviesSearchHelper): + sample_movies_helper.assert_search_query(retry_timeout=60) + + +def get_connection_string(mdbc: MongoDBCommunity, user_name: str, user_password: str) -> str: + return f"mongodb://{user_name}:{user_password}@{mdbc.name}-0.{mdbc.name}-svc.{mdbc.namespace}.svc.cluster.local:27017/?replicaSet={mdbc.name}" diff --git a/scripts/evergreen/deployments/test-app/templates/mongodb-enterprise-tests.yaml b/scripts/evergreen/deployments/test-app/templates/mongodb-enterprise-tests.yaml index 78194ae510..213e29bee6 100644 --- a/scripts/evergreen/deployments/test-app/templates/mongodb-enterprise-tests.yaml +++ b/scripts/evergreen/deployments/test-app/templates/mongodb-enterprise-tests.yaml @@ -198,6 +198,8 @@ spec: value: "{{ .Values.cognito_workload_url }}" - name: cognito_workload_user_id value: "{{ .Values.cognito_workload_user_id }}" + - name: VOYAGE_API_KEY + value: {{ .Values.autoEmbedding.apiKey }} image: "{{ .Values.mekoTestsRegistry }}/mongodb-kubernetes-tests:{{ .Values.mekoTestsVersion }}" # Options to pytest command should go in the pytest.ini file. command: ["pytest"] diff --git a/scripts/evergreen/deployments/test-app/values.yaml b/scripts/evergreen/deployments/test-app/values.yaml index 440dc56d43..1f56f2beb2 100644 --- a/scripts/evergreen/deployments/test-app/values.yaml +++ b/scripts/evergreen/deployments/test-app/values.yaml @@ -51,3 +51,6 @@ helm: registry: "" repository: "" region: "" + +autoEmbedding: + apiKey: "" \ No newline at end of file diff --git a/scripts/evergreen/e2e/single_e2e.sh b/scripts/evergreen/e2e/single_e2e.sh index b43cb9205b..9e283c1680 100755 --- a/scripts/evergreen/e2e/single_e2e.sh +++ b/scripts/evergreen/e2e/single_e2e.sh @@ -89,6 +89,7 @@ deploy_test_app() { "--set" "helm.oci.registry=${helm_oci_registry}" "--set" "helm.oci.repository=${helm_oci_repository}" "--set" "helm.oci.region=${helm_oci_registry_region}" + "--set" "autoEmbedding.apiKey"=${VOYAGE_API_KEY} ) # shellcheck disable=SC2154 From 63cc423e97dee84972801c76a339a1ee607f23d7 Mon Sep 17 00:00:00 2001 From: Vivek Singh Date: Wed, 14 Jan 2026 19:15:35 +0100 Subject: [PATCH 2/7] Test fixx --- .../tests/search/search_community_auto_embedding.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/mongodb-kubernetes-tests/tests/search/search_community_auto_embedding.py b/docker/mongodb-kubernetes-tests/tests/search/search_community_auto_embedding.py index 6d9f54f9ac..0881a66e77 100644 --- a/docker/mongodb-kubernetes-tests/tests/search/search_community_auto_embedding.py +++ b/docker/mongodb-kubernetes-tests/tests/search/search_community_auto_embedding.py @@ -88,7 +88,7 @@ def test_create_database_resource(mdbc: MongoDBCommunity): @mark.e2e_search_community_auto_embedding def test_create_search_resource(mdbs: MongoDBSearch): - mdbs.spec["autoEmbedding"] = { + mdbs["spec"]["autoEmbedding"] = { "embeddingModelAPIKeySecret": {"name": VOYAGE_API_KEY_SECRET_NAME}, "providerEndpoint": PROVIDER_ENDPOINT, } From 62f1de884484aa9fac2c1b64d49b11314c6ab97c Mon Sep 17 00:00:00 2001 From: Vivek Singh Date: Thu, 15 Jan 2026 18:15:15 +0100 Subject: [PATCH 3/7] Use ai.mongodb for endpoint and diff keys --- .evergreen-functions.yml | 6 +++-- .../common/search/movies_search_helper.py | 2 +- .../tests/common/search/search_tester.py | 2 +- .../search/search_community_auto_embedding.py | 24 ++++++++++++------- 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/.evergreen-functions.yml b/.evergreen-functions.yml index 18af56cbec..3d9caeaeb7 100644 --- a/.evergreen-functions.yml +++ b/.evergreen-functions.yml @@ -50,7 +50,8 @@ variables: - VERSION_UPGRADE_HOOK_VERSION - BUILD_SCENARIO - MDB_BASH_DEBUG - - VOYAGE_API_KEY + - AI_MONGODB_EMBEDDING_INDEXING_KEY + - AI_MONGODB_EMBEDDING_QUERY_KEY functions: @@ -585,7 +586,8 @@ functions: - github_pr_number - project_identifier - revision_order_id - - VOYAGE_API_KEY + - AI_MONGODB_EMBEDDING_INDEXING_KEY + - AI_MONGODB_EMBEDDING_QUERY_KEY add_to_path: - ${workdir}/bin binary: scripts/evergreen/e2e/e2e.sh diff --git a/docker/mongodb-kubernetes-tests/tests/common/search/movies_search_helper.py b/docker/mongodb-kubernetes-tests/tests/common/search/movies_search_helper.py index 2b7b72d869..aa04c11f0d 100644 --- a/docker/mongodb-kubernetes-tests/tests/common/search/movies_search_helper.py +++ b/docker/mongodb-kubernetes-tests/tests/common/search/movies_search_helper.py @@ -84,7 +84,7 @@ def execute_auto_embedding_vector_search_query(self, query: str = "spy thriller" [ { "$vectorSearch": { - "index": "vector_index", + "index": "vector_auto_embed_index", "path": "plot", "query": query, "numCandidates": 150, diff --git a/docker/mongodb-kubernetes-tests/tests/common/search/search_tester.py b/docker/mongodb-kubernetes-tests/tests/common/search/search_tester.py index 2402996ce5..fd2a9e4781 100644 --- a/docker/mongodb-kubernetes-tests/tests/common/search/search_tester.py +++ b/docker/mongodb-kubernetes-tests/tests/common/search/search_tester.py @@ -49,7 +49,7 @@ def create_auto_embedding_vector_search_index( self, database_name: str, collection_name: str, - index_name: str = "vector_index", + index_name: str = "vector_auto_embed_index", field_path: str = "plot", model: str = "voyage-4", ): diff --git a/docker/mongodb-kubernetes-tests/tests/search/search_community_auto_embedding.py b/docker/mongodb-kubernetes-tests/tests/search/search_community_auto_embedding.py index 0881a66e77..13c5bc5715 100644 --- a/docker/mongodb-kubernetes-tests/tests/search/search_community_auto_embedding.py +++ b/docker/mongodb-kubernetes-tests/tests/search/search_community_auto_embedding.py @@ -24,9 +24,10 @@ USER_PASSWORD = "mdb-user-pass" MDBC_RESOURCE_NAME = "mdbc-rs" -VOYAGE_API_KEY_ENV_VAR = "VOYAGE_API_KEY" +EMBEDDING_INDEXING_KEY_ENV_VAR = "AI_MONGODB_EMBEDDING_INDEXING_KEY" +EMBEDDING_QUERY_KEY_ENV_VAR = "AI_MONGODB_EMBEDDING_QUERY_KEY" VOYAGE_API_KEY_SECRET_NAME = "voyage-api-keys" -PROVIDER_ENDPOINT = "https://api.voyageai.com/v1/embeddings" +PROVIDER_ENDPOINT = "https://ai.mongodb.com/v1/embeddings" @fixture(scope="function") @@ -71,13 +72,18 @@ def test_install_secrets(namespace: str, mdbs: MongoDBSearch): create_or_update_secret( namespace=namespace, name=f"{mdbs.name}-{MONGOT_USER_NAME}-password", data={"password": MONGOT_USER_PASSWORD} ) - voyage_api_key = os.getenv(VOYAGE_API_KEY_ENV_VAR) - if voyage_api_key: - create_or_update_secret( - namespace=namespace, - name=VOYAGE_API_KEY_SECRET_NAME, - data={"query-key": voyage_api_key, "indexing-key": voyage_api_key}, + + indexing_key = os.getenv(EMBEDDING_INDEXING_KEY_ENV_VAR) + query_key = os.getenv(EMBEDDING_QUERY_KEY_ENV_VAR) + if not indexing_key or not query_key: + raise ValueError( + f"Missing required environment variables: {EMBEDDING_INDEXING_KEY_ENV_VAR} and/or {EMBEDDING_QUERY_KEY_ENV_VAR}" ) + create_or_update_secret( + namespace=namespace, + name=VOYAGE_API_KEY_SECRET_NAME, + data={"query-key": query_key, "indexing-key": indexing_key}, + ) @mark.e2e_search_community_auto_embedding @@ -120,7 +126,7 @@ def test_search_create_search_index(sample_movies_helper: SampleMoviesSearchHelp @mark.e2e_search_community_auto_embedding def test_search_assert_search_query(sample_movies_helper: SampleMoviesSearchHelper): - sample_movies_helper.assert_search_query(retry_timeout=60) + sample_movies_helper.assert_auto_emb_vector_search_query(retry_timeout=60) def get_connection_string(mdbc: MongoDBCommunity, user_name: str, user_password: str) -> str: From 97133188d586e27040ae3287f278421199538203 Mon Sep 17 00:00:00 2001 From: Vivek Singh Date: Thu, 15 Jan 2026 19:54:04 +0100 Subject: [PATCH 4/7] Set correct env var to test pod --- .../test-app/templates/mongodb-enterprise-tests.yaml | 6 ++++-- scripts/evergreen/deployments/test-app/values.yaml | 4 +++- scripts/evergreen/e2e/single_e2e.sh | 3 ++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/scripts/evergreen/deployments/test-app/templates/mongodb-enterprise-tests.yaml b/scripts/evergreen/deployments/test-app/templates/mongodb-enterprise-tests.yaml index 213e29bee6..5a484b361d 100644 --- a/scripts/evergreen/deployments/test-app/templates/mongodb-enterprise-tests.yaml +++ b/scripts/evergreen/deployments/test-app/templates/mongodb-enterprise-tests.yaml @@ -198,8 +198,10 @@ spec: value: "{{ .Values.cognito_workload_url }}" - name: cognito_workload_user_id value: "{{ .Values.cognito_workload_user_id }}" - - name: VOYAGE_API_KEY - value: {{ .Values.autoEmbedding.apiKey }} + - name: AI_MONGODB_EMBEDDING_INDEXING_KEY + value: "{{ .Values.autoEmbedding.providerMongoDB.indexingKey }}" + - name: AI_MONGODB_EMBEDDING_QUERY_KEY + value: "{{ .Values.autoEmbedding.providerMongoDB.queryKey }}" image: "{{ .Values.mekoTestsRegistry }}/mongodb-kubernetes-tests:{{ .Values.mekoTestsVersion }}" # Options to pytest command should go in the pytest.ini file. command: ["pytest"] diff --git a/scripts/evergreen/deployments/test-app/values.yaml b/scripts/evergreen/deployments/test-app/values.yaml index 1f56f2beb2..6ada16e0e7 100644 --- a/scripts/evergreen/deployments/test-app/values.yaml +++ b/scripts/evergreen/deployments/test-app/values.yaml @@ -53,4 +53,6 @@ helm: region: "" autoEmbedding: - apiKey: "" \ No newline at end of file + providerMongoDB: + indexingKey: "" + queryKey: "" diff --git a/scripts/evergreen/e2e/single_e2e.sh b/scripts/evergreen/e2e/single_e2e.sh index 9e283c1680..c5df2f6355 100755 --- a/scripts/evergreen/e2e/single_e2e.sh +++ b/scripts/evergreen/e2e/single_e2e.sh @@ -89,7 +89,8 @@ deploy_test_app() { "--set" "helm.oci.registry=${helm_oci_registry}" "--set" "helm.oci.repository=${helm_oci_repository}" "--set" "helm.oci.region=${helm_oci_registry_region}" - "--set" "autoEmbedding.apiKey"=${VOYAGE_API_KEY} + "--set" "autoEmbedding.providerMongoDB.indexingKey=${AI_MONGODB_EMBEDDING_INDEXING_KEY}" + "--set" "autoEmbedding.providerMongoDB.queryKey:=${AI_MONGODB_EMBEDDING_QUERY_KEY}" ) # shellcheck disable=SC2154 From c8594dd5faf33a37f63ed9b2e7119cd2ac9323e1 Mon Sep 17 00:00:00 2001 From: Vivek Singh Date: Thu, 15 Jan 2026 22:20:15 +0100 Subject: [PATCH 5/7] Correct index cration query --- .../tests/common/search/search_tester.py | 3 ++- scripts/evergreen/e2e/single_e2e.sh | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docker/mongodb-kubernetes-tests/tests/common/search/search_tester.py b/docker/mongodb-kubernetes-tests/tests/common/search/search_tester.py index fd2a9e4781..b32fa86264 100644 --- a/docker/mongodb-kubernetes-tests/tests/common/search/search_tester.py +++ b/docker/mongodb-kubernetes-tests/tests/common/search/search_tester.py @@ -60,12 +60,13 @@ def create_auto_embedding_vector_search_index( "fields": [ { "type": "autoEmbed", - "path": field_path, "modality": "text", + "path": field_path, "model": model, } ] }, + type="vectorSearch", name=index_name, ) result = collection.create_search_index(model=search_index_model) diff --git a/scripts/evergreen/e2e/single_e2e.sh b/scripts/evergreen/e2e/single_e2e.sh index c5df2f6355..cfd845524b 100755 --- a/scripts/evergreen/e2e/single_e2e.sh +++ b/scripts/evergreen/e2e/single_e2e.sh @@ -90,7 +90,7 @@ deploy_test_app() { "--set" "helm.oci.repository=${helm_oci_repository}" "--set" "helm.oci.region=${helm_oci_registry_region}" "--set" "autoEmbedding.providerMongoDB.indexingKey=${AI_MONGODB_EMBEDDING_INDEXING_KEY}" - "--set" "autoEmbedding.providerMongoDB.queryKey:=${AI_MONGODB_EMBEDDING_QUERY_KEY}" + "--set" "autoEmbedding.providerMongoDB.queryKey=${AI_MONGODB_EMBEDDING_QUERY_KEY}" ) # shellcheck disable=SC2154 From e310d8753aa64426c3f9f148593a47c54951ab89 Mon Sep 17 00:00:00 2001 From: Vivek Singh Date: Fri, 16 Jan 2026 12:27:08 +0100 Subject: [PATCH 6/7] Address review comments 1. Verify the number of returns documents for auto embed vector search query 2. Increase the timeout to get search data to 90 seconds --- .../tests/common/search/movies_search_helper.py | 5 +++-- .../tests/search/search_community_auto_embedding.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docker/mongodb-kubernetes-tests/tests/common/search/movies_search_helper.py b/docker/mongodb-kubernetes-tests/tests/common/search/movies_search_helper.py index aa04c11f0d..7aa9a80b10 100644 --- a/docker/mongodb-kubernetes-tests/tests/common/search/movies_search_helper.py +++ b/docker/mongodb-kubernetes-tests/tests/common/search/movies_search_helper.py @@ -104,10 +104,11 @@ def execute_auto_embedding_vector_search_query(self, query: str = "spy thriller" def assert_auto_emb_vector_search_query(self, retry_timeout: int = 1): def wait_for_auto_emb_search_results(): + exp_document_count = 10 count = 0 status_msg = "" try: - result = self.execute_auto_embedding_vector_search_query() + result = self.execute_auto_embedding_vector_search_query(limit=exp_document_count) status_msg = f"{self.db_name}/{self.col_name}: auto-embedding vector search query results:\n" for r in result: status_msg += f"{r}\n" @@ -117,7 +118,7 @@ def wait_for_auto_emb_search_results(): except pymongo.errors.PyMongoError as e: logger.debug(f"error: {e}") - return count > 0, status_msg + return count == exp_document_count, status_msg kubetester.run_periodically( fn=wait_for_auto_emb_search_results, diff --git a/docker/mongodb-kubernetes-tests/tests/search/search_community_auto_embedding.py b/docker/mongodb-kubernetes-tests/tests/search/search_community_auto_embedding.py index 13c5bc5715..3cad36cbac 100644 --- a/docker/mongodb-kubernetes-tests/tests/search/search_community_auto_embedding.py +++ b/docker/mongodb-kubernetes-tests/tests/search/search_community_auto_embedding.py @@ -126,7 +126,7 @@ def test_search_create_search_index(sample_movies_helper: SampleMoviesSearchHelp @mark.e2e_search_community_auto_embedding def test_search_assert_search_query(sample_movies_helper: SampleMoviesSearchHelper): - sample_movies_helper.assert_auto_emb_vector_search_query(retry_timeout=60) + sample_movies_helper.assert_auto_emb_vector_search_query(retry_timeout=90) def get_connection_string(mdbc: MongoDBCommunity, user_name: str, user_password: str) -> str: From 25b613bf8ebe4dabea9e76714eeef319033ae8fa Mon Sep 17 00:00:00 2001 From: Vivek Singh Date: Fri, 16 Jan 2026 15:04:55 +0100 Subject: [PATCH 7/7] Fix lint issue --- .../tests/common/search/movies_search_helper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/mongodb-kubernetes-tests/tests/common/search/movies_search_helper.py b/docker/mongodb-kubernetes-tests/tests/common/search/movies_search_helper.py index 7aa9a80b10..b639b3f6e7 100644 --- a/docker/mongodb-kubernetes-tests/tests/common/search/movies_search_helper.py +++ b/docker/mongodb-kubernetes-tests/tests/common/search/movies_search_helper.py @@ -88,7 +88,7 @@ def execute_auto_embedding_vector_search_query(self, query: str = "spy thriller" "path": "plot", "query": query, "numCandidates": 150, - "limit": limit + "limit": limit, } }, {