sched: server scheduler wiring, config section, transport lifespan, CLI flag (T12)

This commit is contained in:
lda
2026-09-09 11:01:20 +07:00 Verified
parent 42deba6399
commit 53899d0d75
8 changed files with 440 additions and 9 deletions
+48
View File
@@ -13,6 +13,7 @@ from wf_config import (
McpSourceConfig,
RpcHttpTargetConfig,
RpcHttpTransportConfig,
SchedulerConfig,
StdioSourceTransportConfig,
StdlibSourceConfig,
WorkflowConfigFile,
@@ -490,3 +491,50 @@ def test_workflow_config_parses_oauth_provider_profile() -> None:
"access_type": "offline",
"prompt": "consent",
}
def test_server_config_scheduler_absent_is_none() -> None:
config = WorkflowConfigFile.model_validate({"version": 1})
assert config.server.scheduler is None
def test_server_config_parses_scheduler_section_with_values() -> None:
config = WorkflowConfigFile.model_validate(
{
"version": 1,
"server": {
"scheduler": {
"enabled": True,
"poll_interval_s": 2.5,
"max_concurrent_runs": 8,
"drain_grace_s": 60.0,
},
},
}
)
assert isinstance(config.server.scheduler, SchedulerConfig)
assert config.server.scheduler.enabled is True
assert config.server.scheduler.poll_interval_s == 2.5
assert config.server.scheduler.max_concurrent_runs == 8
assert config.server.scheduler.drain_grace_s == 60.0
def test_server_config_scheduler_defaults_to_disabled() -> None:
config = WorkflowConfigFile.model_validate(
{"version": 1, "server": {"scheduler": {}}}
)
assert config.server.scheduler is not None
assert config.server.scheduler.enabled is False
assert config.server.scheduler.poll_interval_s == 1.0
assert config.server.scheduler.max_concurrent_runs == 4
assert config.server.scheduler.drain_grace_s == 30.0
def test_server_config_rejects_unknown_scheduler_key() -> None:
with pytest.raises(ValidationError):
WorkflowConfigFile.model_validate(
{"version": 1, "server": {"scheduler": {"bogus_key": 1}}}
)