Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/_unit_test_coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:

run_tests_with_coverage:
runs-on: [self-hosted, GPU-h1z1-2Cards]
timeout-minutes: 90
timeout-minutes: 120
needs: check_cov_skip
if: needs.check_cov_skip.outputs.can-skip != 'true'
outputs:
Expand Down
32 changes: 32 additions & 0 deletions tests/entrypoints/test_engine_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,17 @@ def mock_fd_config_with_eplb():
class TestEngineClient(unittest.IsolatedAsyncioTestCase):
async def asyncSetUp(self):
"""Set up test fixtures before each test method."""
# Mock main_process_metrics to avoid KeyError
self.metrics_mock = Mock()
self.metrics_mock.request_params_max_tokens = Mock()
self.metrics_mock.prompt_tokens_total = Mock()
self.metrics_mock.request_prompt_tokens = Mock()
self.metrics_patcher = patch(
"fastdeploy.entrypoints.engine_client.main_process_metrics",
self.metrics_mock,
)
self.metrics_patcher.start()

# Create a properly configured tokenizer mock first
mock_tokenizer = Mock()
mock_tokenizer.sp_model = Mock()
Expand Down Expand Up @@ -285,6 +296,11 @@ def test_engine_client_initialized_by_fd_config(self):
self.engine_client.clear_update_lock.__enter__ = Mock(return_value=None)
self.engine_client.clear_update_lock.__exit__ = Mock(return_value=None)

async def asyncTearDown(self):
"""Clean up test fixtures after each test method."""
if hasattr(self, "metrics_patcher"):
self.metrics_patcher.stop()

async def test_add_request(self):
request = {
"request_id": "test-request-id",
Expand All @@ -309,6 +325,17 @@ class TestEngineClientValidParameters(unittest.TestCase):

def setUp(self):
"""Set up test fixtures for valid_parameters tests"""
# Mock main_process_metrics to avoid KeyError
self.metrics_mock = Mock()
self.metrics_mock.request_params_max_tokens = Mock()
self.metrics_mock.prompt_tokens_total = Mock()
self.metrics_mock.request_prompt_tokens = Mock()
self.metrics_patcher = patch(
"fastdeploy.entrypoints.engine_client.main_process_metrics",
self.metrics_mock,
)
self.metrics_patcher.start()

# Mock the dependencies
mock_tokenizer = MagicMock()
mock_tokenizer.sp_model = MagicMock()
Expand Down Expand Up @@ -396,6 +423,11 @@ def setUp(self):
self.engine_client.prefix_tree_status_signal = Mock()
self.engine_client.prefix_tree_status_signal.value = np.array([0])

def tearDown(self):
"""Clean up test fixtures after each test method."""
if hasattr(self, "metrics_patcher"):
self.metrics_patcher.stop()

def test_max_logprobs_valid_values(self):
"""Test valid max_logprobs values"""
# Test positive max_logprobs
Expand Down
Loading