Skip to content

Commit ff1dfa2

Browse files
committed
Running prom endpoint test in tools pod
1 parent f17e896 commit ff1dfa2

File tree

1 file changed

+53
-15
lines changed

1 file changed

+53
-15
lines changed

docker/mongodb-kubernetes-tests/tests/search/search_enterprise_tls.py

Lines changed: 53 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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
222227
def 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

307343
def 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

Comments
 (0)