Slow down polling in Tesla Fleet (#142130)

* Slow down polling

* Fix tests
This commit is contained in:
Brett Adams 2025-04-04 16:51:09 +10:00 committed by GitHub
parent 471b05ff4b
commit 88455702bb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 46 additions and 44 deletions

View File

@ -27,7 +27,7 @@ if TYPE_CHECKING:
from .const import ENERGY_HISTORY_FIELDS, LOGGER, TeslaFleetState from .const import ENERGY_HISTORY_FIELDS, LOGGER, TeslaFleetState
VEHICLE_INTERVAL_SECONDS = 300 VEHICLE_INTERVAL_SECONDS = 600
VEHICLE_INTERVAL = timedelta(seconds=VEHICLE_INTERVAL_SECONDS) VEHICLE_INTERVAL = timedelta(seconds=VEHICLE_INTERVAL_SECONDS)
VEHICLE_WAIT = timedelta(minutes=15) VEHICLE_WAIT = timedelta(minutes=15)

View File

@ -1,6 +1,7 @@
"""Test the Tesla Fleet init.""" """Test the Tesla Fleet init."""
from copy import deepcopy from copy import deepcopy
from datetime import timedelta
from unittest.mock import AsyncMock, patch from unittest.mock import AsyncMock, patch
from aiohttp import RequestInfo from aiohttp import RequestInfo
@ -231,57 +232,58 @@ async def test_vehicle_sleep(
freezer: FrozenDateTimeFactory, freezer: FrozenDateTimeFactory,
) -> None: ) -> None:
"""Test coordinator refresh with an error.""" """Test coordinator refresh with an error."""
await setup_platform(hass, normal_config_entry)
assert mock_vehicle_data.call_count == 1
freezer.tick(VEHICLE_WAIT + VEHICLE_INTERVAL) TEST_INTERVAL = timedelta(seconds=120)
async_fire_time_changed(hass)
# Let vehicle sleep, no updates for 15 minutes
await hass.async_block_till_done()
assert mock_vehicle_data.call_count == 2
freezer.tick(VEHICLE_INTERVAL) with patch(
async_fire_time_changed(hass) "homeassistant.components.tesla_fleet.coordinator.VEHICLE_INTERVAL",
# No polling, call_count should not increase TEST_INTERVAL,
await hass.async_block_till_done() ):
assert mock_vehicle_data.call_count == 2 await setup_platform(hass, normal_config_entry)
assert mock_vehicle_data.call_count == 1
freezer.tick(VEHICLE_INTERVAL) freezer.tick(VEHICLE_WAIT + TEST_INTERVAL)
async_fire_time_changed(hass) async_fire_time_changed(hass)
# No polling, call_count should not increase # Let vehicle sleep, no updates for 15 minutes
await hass.async_block_till_done() await hass.async_block_till_done()
assert mock_vehicle_data.call_count == 2 assert mock_vehicle_data.call_count == 2
freezer.tick(VEHICLE_WAIT) freezer.tick(TEST_INTERVAL)
async_fire_time_changed(hass) async_fire_time_changed(hass)
# Vehicle didn't sleep, go back to normal # No polling, call_count should not increase
await hass.async_block_till_done() await hass.async_block_till_done()
assert mock_vehicle_data.call_count == 3 assert mock_vehicle_data.call_count == 2
freezer.tick(VEHICLE_INTERVAL) freezer.tick(VEHICLE_WAIT)
async_fire_time_changed(hass) async_fire_time_changed(hass)
# Regular polling # Vehicle didn't sleep, go back to normal
await hass.async_block_till_done() await hass.async_block_till_done()
assert mock_vehicle_data.call_count == 4 assert mock_vehicle_data.call_count == 3
mock_vehicle_data.return_value = VEHICLE_DATA_ALT freezer.tick(TEST_INTERVAL)
freezer.tick(VEHICLE_INTERVAL) async_fire_time_changed(hass)
async_fire_time_changed(hass) # Regular polling
# Vehicle active await hass.async_block_till_done()
await hass.async_block_till_done() assert mock_vehicle_data.call_count == 4
assert mock_vehicle_data.call_count == 5
freezer.tick(VEHICLE_WAIT) mock_vehicle_data.return_value = VEHICLE_DATA_ALT
async_fire_time_changed(hass) freezer.tick(TEST_INTERVAL)
# Dont let sleep when active async_fire_time_changed(hass)
await hass.async_block_till_done() # Vehicle active
assert mock_vehicle_data.call_count == 6 await hass.async_block_till_done()
assert mock_vehicle_data.call_count == 5
freezer.tick(VEHICLE_WAIT) freezer.tick(TEST_INTERVAL)
async_fire_time_changed(hass) async_fire_time_changed(hass)
# Dont let sleep when active # Dont let sleep when active
await hass.async_block_till_done() await hass.async_block_till_done()
assert mock_vehicle_data.call_count == 7 assert mock_vehicle_data.call_count == 6
freezer.tick(TEST_INTERVAL)
async_fire_time_changed(hass)
# Dont let sleep when active
await hass.async_block_till_done()
assert mock_vehicle_data.call_count == 7
# Test Energy Live Coordinator # Test Energy Live Coordinator