Skip to content
Merged
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
4 changes: 2 additions & 2 deletions src/agentex/lib/core/temporal/workers/worker.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ def __init__(
task_queue,
max_workers: int = 10,
max_concurrent_activities: int = 10,
health_check_port: int = int(os.environ.get("HEALTH_CHECK_PORT")),
health_check_port: int | None = None,
plugins: list = [],
):
self.task_queue = task_queue
Expand All @@ -121,7 +121,7 @@ def __init__(
self.max_concurrent_activities = max_concurrent_activities
self.health_check_server_running = False
self.healthy = False
self.health_check_port = health_check_port
self.health_check_port = health_check_port if health_check_port is not None else EnvironmentVariables.refresh().HEALTH_CHECK_PORT
self.plugins = plugins

@overload
Expand Down
90 changes: 90 additions & 0 deletions tests/lib/test_agentex_worker.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
import os
from unittest.mock import patch

import pytest


class TestAgentexWorker:
"""Tests for AgentexWorker initialization and configuration."""

@pytest.fixture(autouse=True)
def cleanup_env(self):
"""Cleanup environment variables after each test."""
yield
# Clean up HEALTH_CHECK_PORT if it was set during test
os.environ.pop("HEALTH_CHECK_PORT", None)

def test_worker_init_uses_default_health_check_port(self):
"""Test that worker uses default health_check_port of 80 when not provided."""
from agentex.lib.core.temporal.workers.worker import AgentexWorker

# Ensure HEALTH_CHECK_PORT is not in environment
os.environ.pop("HEALTH_CHECK_PORT", None)

# Mock EnvironmentVariables.refresh to avoid loading .env files
with patch("agentex.lib.core.temporal.workers.worker.EnvironmentVariables") as mock_env_vars:
mock_instance = mock_env_vars.refresh.return_value
mock_instance.HEALTH_CHECK_PORT = 80

worker = AgentexWorker(task_queue="test-queue")

assert worker.health_check_port == 80, "Worker should use default health_check_port of 80"

def test_worker_init_with_explicit_health_check_port(self):
"""Test that worker uses explicit health_check_port parameter when provided."""
from agentex.lib.core.temporal.workers.worker import AgentexWorker

worker = AgentexWorker(task_queue="test-queue", health_check_port=8080)

assert worker.health_check_port == 8080, "Worker should use explicitly provided health_check_port"

def test_worker_init_explicit_port_overrides_environment(self):
"""Test that explicit health_check_port parameter overrides environment variable."""
from agentex.lib.core.temporal.workers.worker import AgentexWorker

# Set environment variable
os.environ["HEALTH_CHECK_PORT"] = "9000"

worker = AgentexWorker(task_queue="test-queue", health_check_port=8080)

assert worker.health_check_port == 8080, "Explicit parameter should override environment variable"

@pytest.mark.parametrize(
"env_port,expected_port",
[
(None, 80), # No env var, should use default
("8080", 8080), # Env var set, should use it
("443", 443), # Different port
],
)
def test_worker_init_respects_environment_variable(self, env_port, expected_port):
"""Test that worker respects HEALTH_CHECK_PORT from EnvironmentVariables."""
from agentex.lib.core.temporal.workers.worker import AgentexWorker

# Mock EnvironmentVariables.refresh to return expected port
with patch("agentex.lib.core.temporal.workers.worker.EnvironmentVariables") as mock_env_vars:
mock_instance = mock_env_vars.refresh.return_value
mock_instance.HEALTH_CHECK_PORT = expected_port

worker = AgentexWorker(task_queue="test-queue")

assert worker.health_check_port == expected_port, f"Worker should use health_check_port {expected_port}"

def test_worker_init_basic_attributes(self):
"""Test that worker initializes with correct basic attributes."""
from agentex.lib.core.temporal.workers.worker import AgentexWorker

worker = AgentexWorker(
task_queue="test-queue",
max_workers=20,
max_concurrent_activities=15,
health_check_port=8080,
)

assert worker.task_queue == "test-queue"
assert worker.max_workers == 20
assert worker.max_concurrent_activities == 15
assert worker.health_check_port == 8080
assert worker.health_check_server_running is False
assert worker.healthy is False
assert worker.plugins == []