mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-11-03 22:11:14 +02:00
docker: make the vendor graceful-stop grace period configurable (GNS3_STOP_TIMEOUT)
The 60 s SIGTERM grace was hardcoded, unlike every other vendor knob (GNS3_SHM_SIZE, GNS3_DEVICES, GNS3_MASK_UDEV, ...) which rides the environment line. Parse GNS3_STOP_TIMEOUT=<seconds> (default 60, clamped to 1-600, invalid values keep the default) and use it in VendorDockerVM._terminate_container().
This commit is contained in:
3 files changed
+45
-7
No files matched your search
@@ -667,3 +667,30 @@ async def test_stop_uses_graceful_termination(compute_project, manager):
|
||||
) as mock_term:
|
||||
await vm.stop()
|
||||
mock_term.assert_called_once()
|
||||
|
||||
|
||||
def test_env_stop_timeout(compute_project, manager):
|
||||
vm = _make_vm(compute_project, manager, environment="GNS3_STOP_TIMEOUT=120")
|
||||
assert vm._stop_timeout == 120
|
||||
|
||||
|
||||
def test_env_stop_timeout_default_60(compute_project, manager):
|
||||
vm = _make_vm(compute_project, manager, environment="GNS3_SKIP_INIT=1")
|
||||
assert vm._stop_timeout == 60
|
||||
|
||||
|
||||
def test_env_stop_timeout_invalid_keeps_default(compute_project, manager):
|
||||
vm = _make_vm(compute_project, manager, environment="GNS3_STOP_TIMEOUT=abc")
|
||||
assert vm._stop_timeout == 60
|
||||
vm = _make_vm(compute_project, manager, environment="GNS3_STOP_TIMEOUT=9999")
|
||||
assert vm._stop_timeout == 60
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_terminate_container_uses_env_timeout(compute_project, manager):
|
||||
vm = _make_vm(compute_project, manager, environment="GNS3_STOP_TIMEOUT=120")
|
||||
manager.query = AsyncioMagicMock()
|
||||
|
||||
await vm._terminate_container()
|
||||
|
||||
manager.query.assert_called_once_with("POST", "containers/e90e34656842/stop", params={"t": 120})
|
||||
Reference in new issue
Block a user