Skip to content

Commit 304023f

Browse files
committed
add test for new params
1 parent 97d06bd commit 304023f

1 file changed

Lines changed: 112 additions & 1 deletion

File tree

tests/lib/test_agentex_worker.py

Lines changed: 112 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import os
2-
from unittest.mock import patch
2+
from unittest.mock import AsyncMock, MagicMock, patch
33

44
import pytest
55

@@ -88,3 +88,114 @@ def test_worker_init_basic_attributes(self):
8888
assert worker.health_check_server_running is False
8989
assert worker.healthy is False
9090
assert worker.plugins == []
91+
92+
def test_worker_stores_metrics_params(self):
93+
from agentex.lib.core.temporal.workers.worker import AgentexWorker
94+
95+
worker = AgentexWorker(
96+
task_queue="test-queue",
97+
health_check_port=8080,
98+
metrics_url="http://example.com/v1/metrics",
99+
metrics_headers={"Authorization": "Api-Token tok"},
100+
metrics_use_http=True,
101+
metrics_temporality_delta=True,
102+
)
103+
104+
assert worker.metrics_url == "http://example.com/v1/metrics"
105+
assert worker.metrics_headers == {"Authorization": "Api-Token tok"}
106+
assert worker.metrics_use_http is True
107+
assert worker.metrics_temporality_delta is True
108+
109+
def test_worker_metrics_params_default_to_none_and_false(self):
110+
from agentex.lib.core.temporal.workers.worker import AgentexWorker
111+
112+
worker = AgentexWorker(task_queue="test-queue", health_check_port=8080)
113+
114+
assert worker.metrics_url is None
115+
assert worker.metrics_headers is None
116+
assert worker.metrics_use_http is False
117+
assert worker.metrics_temporality_delta is False
118+
119+
120+
class TestGetTemporalClientMetricsConfig:
121+
"""Tests that metrics params reach OpenTelemetryConfig correctly."""
122+
123+
async def test_metrics_params_reach_otel_config(self):
124+
from temporalio.client import Client
125+
from temporalio.runtime import OpenTelemetryMetricTemporality
126+
127+
from agentex.lib.core.temporal.workers.worker import get_temporal_client
128+
129+
with (
130+
patch.object(Client, "connect", new=AsyncMock(return_value=MagicMock())),
131+
patch("agentex.lib.core.temporal.workers.worker.Runtime"),
132+
patch("agentex.lib.core.temporal.workers.worker.TelemetryConfig"),
133+
patch("agentex.lib.core.temporal.workers.worker.OpenTelemetryConfig") as mock_otel,
134+
):
135+
await get_temporal_client(
136+
"localhost:7233",
137+
metrics_url="http://example.com/v1/metrics",
138+
metrics_headers={"Authorization": "Api-Token tok"},
139+
metrics_use_http=True,
140+
metrics_temporality_delta=True,
141+
)
142+
143+
mock_otel.assert_called_once_with(
144+
url="http://example.com/v1/metrics",
145+
headers={"Authorization": "Api-Token tok"},
146+
http=True,
147+
metric_temporality=OpenTelemetryMetricTemporality.DELTA,
148+
)
149+
150+
async def test_delta_false_maps_to_cumulative(self):
151+
from temporalio.client import Client
152+
from temporalio.runtime import OpenTelemetryMetricTemporality
153+
154+
from agentex.lib.core.temporal.workers.worker import get_temporal_client
155+
156+
with (
157+
patch.object(Client, "connect", new=AsyncMock(return_value=MagicMock())),
158+
patch("agentex.lib.core.temporal.workers.worker.Runtime"),
159+
patch("agentex.lib.core.temporal.workers.worker.TelemetryConfig"),
160+
patch("agentex.lib.core.temporal.workers.worker.OpenTelemetryConfig") as mock_otel,
161+
):
162+
await get_temporal_client(
163+
"localhost:7233",
164+
metrics_url="http://example.com/v1/metrics",
165+
metrics_temporality_delta=False,
166+
)
167+
168+
_, kwargs = mock_otel.call_args
169+
assert kwargs["metric_temporality"] == OpenTelemetryMetricTemporality.CUMULATIVE
170+
171+
async def test_none_headers_defaults_to_empty_dict(self):
172+
from temporalio.client import Client
173+
174+
from agentex.lib.core.temporal.workers.worker import get_temporal_client
175+
176+
with (
177+
patch.object(Client, "connect", new=AsyncMock(return_value=MagicMock())),
178+
patch("agentex.lib.core.temporal.workers.worker.Runtime"),
179+
patch("agentex.lib.core.temporal.workers.worker.TelemetryConfig"),
180+
patch("agentex.lib.core.temporal.workers.worker.OpenTelemetryConfig") as mock_otel,
181+
):
182+
await get_temporal_client(
183+
"localhost:7233",
184+
metrics_url="http://example.com/v1/metrics",
185+
)
186+
187+
_, kwargs = mock_otel.call_args
188+
assert kwargs["headers"] == {}
189+
190+
async def test_no_metrics_url_skips_runtime(self):
191+
from temporalio.client import Client
192+
193+
from agentex.lib.core.temporal.workers.worker import get_temporal_client
194+
195+
with (
196+
patch.object(Client, "connect", new=AsyncMock(return_value=MagicMock())),
197+
patch("agentex.lib.core.temporal.workers.worker.Runtime") as mock_runtime,
198+
):
199+
await get_temporal_client("localhost:7233")
200+
201+
mock_runtime.assert_not_called()

0 commit comments

Comments
 (0)