1
0
mirror of https://github.com/esphome/esphome.git synced 2025-09-12 08:12:22 +01:00

speed up test

This commit is contained in:
J. Nick Koston
2025-06-23 11:58:16 +02:00
parent 0eea1c0e40
commit e3aaf3219d
2 changed files with 12 additions and 16 deletions

View File

@@ -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

View File

@@ -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)
elapsed = loop.time() - start_time
if elapsed > 3.0:
pytest.fail("Device did not reboot within expected timeout") 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"