@@ -218,6 +218,11 @@ def check_mongod_parameters():
218218 run_periodically (check_mongod_parameters , timeout = 600 )
219219
220220
221+ @mark .e2e_search_enterprise_tls
222+ def test_search_deploy_tools_pod (namespace : str ):
223+ deploy_mongodb_tools_pod (namespace )
224+
225+
221226@mark .e2e_search_enterprise_tls
222227def test_search_verify_prometheus_disabled_initially (mdbs : MongoDBSearch ):
223228 assert_search_service_prometheus_port (mdbs , should_exist = False )
@@ -291,36 +296,69 @@ def assert_search_service_prometheus_port(mdbs: MongoDBSearch, should_exist: boo
291296 service_name = f"{ mdbs .name } -search-svc"
292297 service = get_service (mdbs .namespace , service_name )
293298
294- assert service is not None , f"Service { service_name } should exist"
299+ assert service is not None
295300
296301 ports = {p .name : p .port for p in service .spec .ports }
297302
298303 if should_exist :
299- assert "prometheus" in ports , "Prometheus port should be in service when prometheus is enabled"
300- assert (
301- ports ["prometheus" ] == expected_port
302- ), f"Prometheus port should be { expected_port } but was { ports ['prometheus' ]} "
304+ assert "prometheus" in ports
305+ assert ports ["prometheus" ] == expected_port
303306 else :
304- assert "prometheus" not in ports , "Prometheus port should not be in service when prometheus is disabled"
307+ assert "prometheus" not in ports
308+
309+
310+ def deploy_mongodb_tools_pod (namespace : str ):
311+ from kubetester import get_pod_when_ready
312+
313+ pod_body = {
314+ "apiVersion" : "v1" ,
315+ "kind" : "Pod" ,
316+ "metadata" : {
317+ "name" : "mongodb-tools-pod" ,
318+ "labels" : {"app" : "mongodb-tools" },
319+ },
320+ "spec" : {
321+ "containers" : [
322+ {
323+ "name" : "mongodb-tools" ,
324+ "image" : "mongodb/mongodb-community-server:8.0-ubi8" ,
325+ "command" : ["/bin/bash" , "-c" ],
326+ "args" : ["sleep infinity" ],
327+ }
328+ ],
329+ "restartPolicy" : "Never" ,
330+ },
331+ }
332+
333+ try :
334+ KubernetesTester .create_pod (namespace , pod_body )
335+ logger .info (f"Created mongodb-tools-pod in namespace { namespace } " )
336+ except Exception as e :
337+ logger .info (f"Pod may already exist: { e } " )
338+
339+ get_pod_when_ready (namespace , "app=mongodb-tools" , default_retry = 60 )
340+ logger .info ("mongodb-tools-pod is ready" )
305341
306342
307343def assert_search_pod_prometheus_endpoint (mdbs : MongoDBSearch , should_be_accessible : bool , port : int = 9946 ):
308- pod_name = f"{ mdbs .name } -search-0 "
309- url = f"http://localhost :{ port } /metrics"
344+ service_fqdn = f"{ mdbs .name } -search-svc. { mdbs . namespace } .svc.cluster.local "
345+ url = f"http://{ service_fqdn } :{ port } /metrics"
310346
311347 if should_be_accessible :
312348 result = KubernetesTester .run_command_in_pod_container (
313- pod_name , mdbs .namespace , ["curl" , "-f" , url ], container = "mongot "
349+ "mongodb-tools-pod" , mdbs .namespace , ["curl" , "-f" , "-s" , url ], container = "mongodb-tools "
314350 )
315- assert (
316- "# HELP" in result or "# TYPE" in result
317- ), f"Prometheus metrics endpoint should return valid metrics, got: { result [:200 ]} "
318- logger .info (f"Prometheus endpoint is accessible and returning metrics" )
351+ assert "# HELP" in result or "# TYPE" in result
352+
353+ logger .info (f"Prometheus endpoint is accessible at { url } and returning metrics" )
319354 else :
320355 try :
321356 result = KubernetesTester .run_command_in_pod_container (
322- pod_name , mdbs .namespace , ["curl" , "-f" , url ], container_name = "mongot"
357+ "mongodb-tools-pod" ,
358+ mdbs .namespace ,
359+ ["curl" , "-f" , "-s" , "--max-time" , "5" , url ],
360+ container = "mongodb-tools" ,
323361 )
324362 assert False , f"Prometheus endpoint should not be accessible but got: { result } "
325363 except Exception as e :
326- logger .info (f"Expected failure: Prometheus endpoint is not accessible: { e } " )
364+ logger .info (f"Expected failure: Prometheus endpoint is not accessible at { url } : { e } " )
0 commit comments