mirror of
https://github.com/esphome/esphome.git
synced 2025-09-12 00:02:21 +01:00
speed up test
This commit is contained in:
@@ -2,6 +2,6 @@ esphome:
|
|||||||
name: api-reboot-test
|
name: api-reboot-test
|
||||||
host:
|
host:
|
||||||
api:
|
api:
|
||||||
reboot_timeout: 1s # Very short timeout for fast testing
|
reboot_timeout: 0.5s # Very short timeout for fast testing
|
||||||
logger:
|
logger:
|
||||||
level: DEBUG
|
level: DEBUG
|
||||||
|
@@ -14,26 +14,22 @@ async def test_api_reboot_timeout(
|
|||||||
run_compiled: RunCompiledFunction,
|
run_compiled: RunCompiledFunction,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test that the device reboots when no API clients connect within the timeout."""
|
"""Test that the device reboots when no API clients connect within the timeout."""
|
||||||
reboot_detected = False
|
loop = asyncio.get_running_loop()
|
||||||
|
reboot_future = loop.create_future()
|
||||||
reboot_pattern = re.compile(r"No client connected; rebooting")
|
reboot_pattern = re.compile(r"No client connected; rebooting")
|
||||||
|
|
||||||
def check_output(line: str) -> None:
|
def check_output(line: str) -> None:
|
||||||
"""Check output for reboot message."""
|
"""Check output for reboot message."""
|
||||||
nonlocal reboot_detected
|
if not reboot_future.done() and reboot_pattern.search(line):
|
||||||
if reboot_pattern.search(line):
|
reboot_future.set_result(True)
|
||||||
reboot_detected = True
|
|
||||||
|
|
||||||
# Run the device without connecting any API client
|
# Run the device without connecting any API client
|
||||||
async with run_compiled(yaml_config, line_callback=check_output):
|
async with run_compiled(yaml_config, line_callback=check_output):
|
||||||
# Wait for up to 3 seconds for the reboot to occur
|
# Wait for reboot with timeout
|
||||||
# (1s timeout + some margin for processing)
|
# (0.5s reboot timeout + some margin for processing)
|
||||||
loop = asyncio.get_running_loop()
|
try:
|
||||||
start_time = loop.time()
|
await asyncio.wait_for(reboot_future, timeout=2.0)
|
||||||
while not reboot_detected:
|
except asyncio.TimeoutError:
|
||||||
await asyncio.sleep(0.1)
|
pytest.fail("Device did not reboot within expected timeout")
|
||||||
elapsed = loop.time() - start_time
|
|
||||||
if elapsed > 3.0:
|
|
||||||
pytest.fail("Device did not reboot within expected timeout")
|
|
||||||
|
|
||||||
# Verify that reboot was detected
|
# Test passes if we get here - reboot was detected
|
||||||
assert reboot_detected, "Reboot message was not detected in output"
|
|
||||||
|
Reference in New Issue
Block a user