Skip to content

Commit 75ab0de

Browse files
committed
tests
1 parent be8d103 commit 75ab0de

File tree

3 files changed

+0
-223
lines changed

3 files changed

+0
-223
lines changed

src/zenml/deployers/server/runtime.py

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,8 @@
2727

2828
from pydantic import BaseModel, Field
2929

30-
from zenml.logger import get_logger
3130
from zenml.models import PipelineSnapshotResponse
3231

33-
logger = get_logger(__name__)
34-
3532

3633
class _DeploymentState(BaseModel):
3734
model_config = {"extra": "forbid"}
@@ -136,32 +133,6 @@ def get_outputs() -> Dict[str, Dict[str, Any]]:
136133
return dict(_get_context().outputs)
137134

138135

139-
def get_parameter_override(name: str) -> Optional[Any]:
140-
"""Get a parameter override from the current deployment context.
141-
142-
This function allows the orchestrator to check for parameter overrides
143-
without importing deployment-specific modules directly. Only direct
144-
parameters are supported; nested extraction from complex objects is not
145-
performed.
146-
147-
Args:
148-
name: Parameter name to look up
149-
150-
Returns:
151-
Parameter value if found, None otherwise
152-
"""
153-
if not is_active():
154-
return None
155-
156-
state = _get_context()
157-
pipeline_params = state.pipeline_parameters
158-
if not pipeline_params:
159-
return None
160-
161-
# Check direct parameter only
162-
return pipeline_params.get(name)
163-
164-
165136
def should_use_in_memory_mode() -> bool:
166137
"""Check if the current request should use in-memory mode.
167138

tests/unit/deployers/serving/test_parameter_flow.py

Lines changed: 0 additions & 152 deletions
Original file line numberDiff line numberDiff line change
@@ -13,165 +13,13 @@
1313
# permissions and limitations under the License.
1414
"""Comprehensive test for parameter resolution and flow in serving."""
1515

16-
from typing import Any, Dict, List, Optional
1716
from unittest.mock import MagicMock
1817

1918
import pytest
20-
from pydantic import BaseModel
2119

2220
from zenml.deployers.server import runtime
2321

2422

25-
class WeatherRequest(BaseModel):
26-
"""Mock WeatherRequest for testing."""
27-
28-
city: str
29-
activities: List[str]
30-
extra: Optional[Dict[str, Any]] = None
31-
32-
33-
class TestParameterResolution:
34-
"""Test parameter resolution in serving context."""
35-
36-
@pytest.fixture(autouse=True)
37-
def setup_serving_state(self):
38-
"""Set up deployment state for each test."""
39-
runtime.stop() # Ensure clean state
40-
yield
41-
runtime.stop() # Clean up after test
42-
43-
def test_get_parameter_override_direct_only(self):
44-
"""Test that only direct parameters are returned (no nested extraction)."""
45-
# Set up deployment state with WeatherRequest
46-
request_obj = WeatherRequest(
47-
city="munich",
48-
activities=["sightseeing", "eating"],
49-
extra={"budget": 500},
50-
)
51-
52-
snapshot = MagicMock()
53-
snapshot.id = "test-snapshot"
54-
55-
runtime.start(
56-
request_id="test-request",
57-
snapshot=snapshot,
58-
parameters={
59-
"request": request_obj,
60-
"country": "Germany",
61-
},
62-
)
63-
64-
# Direct parameter only
65-
assert runtime.get_parameter_override("country") == "Germany"
66-
# Nested attributes are not extracted automatically
67-
assert runtime.get_parameter_override("city") is None
68-
assert runtime.get_parameter_override("activities") is None
69-
assert runtime.get_parameter_override("extra") is None
70-
71-
# Removed precedence test: nested extraction no longer supported
72-
73-
def test_inactive_deployment_context(self):
74-
"""Test parameter resolution when serving is not active."""
75-
# Don't start serving context
76-
assert runtime.get_parameter_override("city") is None
77-
78-
def test_empty_pipeline_parameters(self):
79-
"""Test parameter resolution with empty pipeline parameters."""
80-
snapshot = MagicMock()
81-
snapshot.id = "test-snapshot"
82-
83-
runtime.start(
84-
request_id="test-request", snapshot=snapshot, parameters={}
85-
)
86-
87-
# Should return None when no parameters are available
88-
assert runtime.get_parameter_override("city") is None
89-
90-
# Removed complex object extraction test: not supported
91-
92-
93-
class TestCompleteParameterFlow:
94-
"""Test complete parameter flow from request to step execution."""
95-
96-
@pytest.fixture(autouse=True)
97-
def setup_serving_state(self):
98-
"""Set up deployment state for each test."""
99-
runtime.stop()
100-
yield
101-
runtime.stop()
102-
103-
@pytest.fixture
104-
def mock_pipeline_class(self):
105-
"""Mock pipeline class with WeatherRequest signature."""
106-
107-
class MockWeatherPipeline:
108-
@staticmethod
109-
def entrypoint(
110-
request: WeatherRequest = WeatherRequest(
111-
city="London",
112-
activities=["walking", "reading"],
113-
extra={"temperature": 20},
114-
),
115-
country: str = "UK",
116-
) -> str:
117-
return f"Weather for {request.city} in {country}"
118-
119-
return MockWeatherPipeline
120-
121-
@pytest.fixture
122-
def mock_snapshot(self, mock_pipeline_class):
123-
"""Mock snapshot with WeatherRequest defaults."""
124-
snapshot = MagicMock()
125-
snapshot.id = "test-snapshot-id"
126-
snapshot.pipeline_spec = MagicMock()
127-
snapshot.pipeline_spec.source = "mock.pipeline.source"
128-
snapshot.pipeline_spec.parameters = {
129-
"request": {
130-
"city": "London",
131-
"activities": ["walking", "reading"],
132-
"extra": {"temperature": 20},
133-
},
134-
"country": "UK",
135-
}
136-
return snapshot
137-
138-
def test_weather_pipeline_scenario(self):
139-
"""Test the exact scenario from the weather pipeline."""
140-
# This simulates the exact case:
141-
# @pipeline
142-
# def weather_agent_pipeline(request: WeatherRequest = ..., country: str = "UK"):
143-
# weather_data = get_weather(city=request.city, country=country)
144-
145-
request_obj = WeatherRequest(
146-
city="munich", activities=["whatever"], extra=None
147-
)
148-
149-
snapshot = MagicMock()
150-
snapshot.id = "test-snapshot"
151-
152-
runtime.start(
153-
request_id="test-request",
154-
snapshot=snapshot,
155-
parameters={
156-
"request": request_obj,
157-
"country": "Germany",
158-
},
159-
)
160-
161-
# Simulate the get_weather step trying to resolve its parameters
162-
request_param = runtime.get_parameter_override("request")
163-
country_param = runtime.get_parameter_override("country")
164-
165-
# These should be the values that get passed to get_weather()
166-
assert isinstance(request_param, WeatherRequest)
167-
assert request_param.city == "munich"
168-
assert country_param == "Germany"
169-
170-
# This is exactly what should happen in the serving pipeline:
171-
# get_weather(city="munich", country="Germany")
172-
# instead of the compiled defaults: get_weather(city="London", country="UK")
173-
174-
17523
class TestOutputRecording:
17624
"""Test output recording and retrieval functionality."""
17725

tests/unit/deployers/serving/test_runtime.py

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -52,45 +52,6 @@ def test_context_lifecycle(self):
5252

5353
assert not runtime.is_active()
5454

55-
def test_parameter_override_basic(self):
56-
"""Test basic parameter override functionality."""
57-
snapshot = MagicMock()
58-
snapshot.id = "test-snapshot"
59-
60-
runtime.start(
61-
request_id="test-request",
62-
snapshot=snapshot,
63-
parameters={
64-
"city": "Munich",
65-
"country": "Germany",
66-
"temperature": 20,
67-
},
68-
)
69-
70-
# Test parameter retrieval
71-
assert runtime.get_parameter_override("city") == "Munich"
72-
assert runtime.get_parameter_override("country") == "Germany"
73-
assert runtime.get_parameter_override("temperature") == 20
74-
assert runtime.get_parameter_override("missing") is None
75-
76-
def test_parameter_override_inactive_context(self):
77-
"""Test parameter override when context is inactive."""
78-
# Don't start context
79-
assert runtime.get_parameter_override("city") is None
80-
81-
def test_parameter_override_empty_parameters(self):
82-
"""Test parameter override with empty parameters."""
83-
snapshot = MagicMock()
84-
snapshot.id = "test-snapshot"
85-
86-
runtime.start(
87-
request_id="test-request",
88-
snapshot=snapshot,
89-
parameters={},
90-
)
91-
92-
assert runtime.get_parameter_override("city") is None
93-
9455
def test_step_outputs_recording(self):
9556
"""Test step outputs recording and retrieval."""
9657
snapshot = MagicMock()
@@ -232,7 +193,6 @@ def test_context_isolation(self):
232193
runtime.put_in_memory_data("memory://artifact/1", "berlin_data")
233194

234195
# Verify first context state
235-
assert runtime.get_parameter_override("city") == "Berlin"
236196
assert runtime.get_outputs()["step1"]["result"] == "berlin_result"
237197
assert (
238198
runtime.get_in_memory_data("memory://artifact/1") == "berlin_data"
@@ -249,7 +209,6 @@ def test_context_isolation(self):
249209
)
250210

251211
# Should have clean state
252-
assert runtime.get_parameter_override("city") == "Munich"
253212
assert runtime.get_outputs() == {}
254213
assert runtime.get_in_memory_data("memory://artifact/1") is None
255214

@@ -314,7 +273,6 @@ def test_context_reset_clears_all_data(self):
314273

315274
# Verify data is stored
316275
assert runtime.is_active()
317-
assert runtime.get_parameter_override("city") == "Berlin"
318276
assert runtime.get_outputs() != {}
319277
assert runtime.has_in_memory_data("memory://artifact/1")
320278
assert runtime.should_use_in_memory_mode() is True

0 commit comments

Comments
 (0)