mirror of
https://github.com/home-assistant/supervisor.git
synced 2026-07-05 12:55:01 +01:00
5c65da8a19
* Refine Docker timeout handling and add regression tests * Add network exception path tests for Docker manager * Add timeout-path tests for Docker app and network * Remove unnecessary timeout=None overrides from pull calls and tests
72 lines
2.8 KiB
Python
72 lines
2.8 KiB
Python
"""Test Supervisor Docker container timeout handling."""
|
|
|
|
from awesomeversion import AwesomeVersion
|
|
import pytest
|
|
|
|
from supervisor.coresys import CoreSys
|
|
from supervisor.exceptions import DockerTimeoutError
|
|
|
|
|
|
async def test_supervisor_attach_get_timeout(coresys: CoreSys):
|
|
"""Test DockerSupervisor.attach raises DockerTimeoutError when containers.get times out."""
|
|
coresys.docker.containers.get.side_effect = TimeoutError()
|
|
with pytest.raises(
|
|
DockerTimeoutError, match="Timeout getting supervisor container"
|
|
):
|
|
await coresys.supervisor.instance.attach(
|
|
coresys.supervisor.version or AwesomeVersion("2025.1.0")
|
|
)
|
|
|
|
|
|
async def test_supervisor_retag_get_timeout(coresys: CoreSys):
|
|
"""Test DockerSupervisor.retag raises DockerTimeoutError when containers.get times out."""
|
|
coresys.docker.containers.get.side_effect = TimeoutError()
|
|
with pytest.raises(
|
|
DockerTimeoutError, match="Timeout getting Supervisor container for retag"
|
|
):
|
|
await coresys.supervisor.instance.retag()
|
|
|
|
|
|
async def test_supervisor_retag_tag_timeout(coresys: CoreSys):
|
|
"""Test DockerSupervisor.retag raises DockerTimeoutError when images.tag times out."""
|
|
# Attach first to initialize metadata via the public API.
|
|
coresys.docker.containers.get.return_value.show.return_value = {
|
|
"ImageID": "sha256:abc123",
|
|
"Image": "sha256:abc123",
|
|
"Config": {
|
|
"Image": "ghcr.io/home-assistant/amd64-hassio-supervisor:latest",
|
|
"Labels": {"io.hass.version": "2025.1.0"},
|
|
},
|
|
}
|
|
await coresys.supervisor.instance.attach(AwesomeVersion("2025.1.0"))
|
|
|
|
coresys.docker.images.tag.side_effect = TimeoutError()
|
|
with pytest.raises(
|
|
DockerTimeoutError, match="Timeout retagging Supervisor version"
|
|
):
|
|
await coresys.supervisor.instance.retag()
|
|
|
|
|
|
async def test_supervisor_update_start_tag_get_timeout(coresys: CoreSys):
|
|
"""Test update_start_tag raises DockerTimeoutError when containers.get times out."""
|
|
coresys.docker.containers.get.side_effect = TimeoutError()
|
|
with pytest.raises(
|
|
DockerTimeoutError, match="Timeout getting container to fix start tag"
|
|
):
|
|
await coresys.supervisor.instance.update_start_tag(
|
|
"ghcr.io/home-assistant/amd64-hassio-supervisor",
|
|
AwesomeVersion("2025.1.0"),
|
|
)
|
|
|
|
|
|
async def test_supervisor_update_start_tag_inspect_timeout(coresys: CoreSys):
|
|
"""Test update_start_tag raises DockerTimeoutError when images.inspect times out."""
|
|
coresys.docker.images.inspect.side_effect = TimeoutError()
|
|
with pytest.raises(
|
|
DockerTimeoutError, match="Timeout getting image metadata to fix start tag"
|
|
):
|
|
await coresys.supervisor.instance.update_start_tag(
|
|
"ghcr.io/home-assistant/amd64-hassio-supervisor",
|
|
AwesomeVersion("2025.1.0"),
|
|
)
|