Fix flapping logbook tests (#81695)
This commit is contained in:
parent
1d633ac484
commit
11a55d6d4c
1 changed files with 67 additions and 24 deletions
|
@ -24,6 +24,7 @@ from homeassistant.const import (
|
|||
CONF_ENTITIES,
|
||||
CONF_EXCLUDE,
|
||||
CONF_INCLUDE,
|
||||
EVENT_HOMEASSISTANT_FINAL_WRITE,
|
||||
EVENT_HOMEASSISTANT_START,
|
||||
STATE_OFF,
|
||||
STATE_ON,
|
||||
|
@ -52,6 +53,15 @@ def set_utc(hass):
|
|||
hass.config.set_time_zone("UTC")
|
||||
|
||||
|
||||
def listeners_without_writes(listeners: dict[str, int]) -> dict[str, int]:
|
||||
"""Return listeners without final write listeners since we are not testing for these."""
|
||||
return {
|
||||
key: value
|
||||
for key, value in listeners.items()
|
||||
if key != EVENT_HOMEASSISTANT_FINAL_WRITE
|
||||
}
|
||||
|
||||
|
||||
async def _async_mock_logbook_platform(hass: HomeAssistant) -> None:
|
||||
class MockLogbookPlatform:
|
||||
"""Mock a logbook platform."""
|
||||
|
@ -684,7 +694,9 @@ async def test_subscribe_unsubscribe_logbook_stream_excluded_entities(
|
|||
assert msg["success"]
|
||||
|
||||
# Check our listener got unsubscribed
|
||||
assert hass.bus.async_listeners() == init_listeners
|
||||
assert listeners_without_writes(
|
||||
hass.bus.async_listeners()
|
||||
) == listeners_without_writes(init_listeners)
|
||||
|
||||
|
||||
@patch("homeassistant.components.logbook.websocket_api.EVENT_COALESCE_TIME", 0)
|
||||
|
@ -892,7 +904,9 @@ async def test_subscribe_unsubscribe_logbook_stream_included_entities(
|
|||
assert msg["success"]
|
||||
|
||||
# Check our listener got unsubscribed
|
||||
assert hass.bus.async_listeners() == init_listeners
|
||||
assert listeners_without_writes(
|
||||
hass.bus.async_listeners()
|
||||
) == listeners_without_writes(init_listeners)
|
||||
|
||||
|
||||
@patch("homeassistant.components.logbook.websocket_api.EVENT_COALESCE_TIME", 0)
|
||||
|
@ -1083,7 +1097,9 @@ async def test_logbook_stream_excluded_entities_inherits_filters_from_recorder(
|
|||
assert msg["success"]
|
||||
|
||||
# Check our listener got unsubscribed
|
||||
assert hass.bus.async_listeners() == init_listeners
|
||||
assert listeners_without_writes(
|
||||
hass.bus.async_listeners()
|
||||
) == listeners_without_writes(init_listeners)
|
||||
|
||||
|
||||
@patch("homeassistant.components.logbook.websocket_api.EVENT_COALESCE_TIME", 0)
|
||||
|
@ -1386,7 +1402,9 @@ async def test_subscribe_unsubscribe_logbook_stream(
|
|||
assert msg["success"]
|
||||
|
||||
# Check our listener got unsubscribed
|
||||
assert hass.bus.async_listeners() == init_listeners
|
||||
assert listeners_without_writes(
|
||||
hass.bus.async_listeners()
|
||||
) == listeners_without_writes(init_listeners)
|
||||
|
||||
|
||||
@patch("homeassistant.components.logbook.websocket_api.EVENT_COALESCE_TIME", 0)
|
||||
|
@ -1484,7 +1502,9 @@ async def test_subscribe_unsubscribe_logbook_stream_entities(
|
|||
assert msg["success"]
|
||||
|
||||
# Check our listener got unsubscribed
|
||||
assert hass.bus.async_listeners() == init_listeners
|
||||
assert listeners_without_writes(
|
||||
hass.bus.async_listeners()
|
||||
) == listeners_without_writes(init_listeners)
|
||||
|
||||
|
||||
@patch("homeassistant.components.logbook.websocket_api.EVENT_COALESCE_TIME", 0)
|
||||
|
@ -1586,12 +1606,9 @@ async def test_subscribe_unsubscribe_logbook_stream_entities_with_end_time(
|
|||
assert msg["success"]
|
||||
|
||||
# Check our listener got unsubscribed
|
||||
listeners = hass.bus.async_listeners()
|
||||
# The async_fire_time_changed above triggers unsubscribe from
|
||||
# homeassistant_final_write, don't worry about those
|
||||
init_listeners.pop("homeassistant_final_write")
|
||||
listeners.pop("homeassistant_final_write")
|
||||
assert listeners == init_listeners
|
||||
assert listeners_without_writes(
|
||||
hass.bus.async_listeners()
|
||||
) == listeners_without_writes(init_listeners)
|
||||
|
||||
|
||||
@patch("homeassistant.components.logbook.websocket_api.EVENT_COALESCE_TIME", 0)
|
||||
|
@ -1659,7 +1676,9 @@ async def test_subscribe_unsubscribe_logbook_stream_entities_past_only(
|
|||
assert msg["success"]
|
||||
|
||||
# Check our listener got unsubscribed
|
||||
assert hass.bus.async_listeners() == init_listeners
|
||||
assert listeners_without_writes(
|
||||
hass.bus.async_listeners()
|
||||
) == listeners_without_writes(init_listeners)
|
||||
|
||||
|
||||
@patch("homeassistant.components.logbook.websocket_api.EVENT_COALESCE_TIME", 0)
|
||||
|
@ -1759,7 +1778,9 @@ async def test_subscribe_unsubscribe_logbook_stream_big_query(
|
|||
assert msg["success"]
|
||||
|
||||
# Check our listener got unsubscribed
|
||||
assert hass.bus.async_listeners() == init_listeners
|
||||
assert listeners_without_writes(
|
||||
hass.bus.async_listeners()
|
||||
) == listeners_without_writes(init_listeners)
|
||||
|
||||
|
||||
@patch("homeassistant.components.logbook.websocket_api.EVENT_COALESCE_TIME", 0)
|
||||
|
@ -1853,7 +1874,9 @@ async def test_subscribe_unsubscribe_logbook_stream_device(
|
|||
assert msg["success"]
|
||||
|
||||
# Check our listener got unsubscribed
|
||||
assert hass.bus.async_listeners() == init_listeners
|
||||
assert listeners_without_writes(
|
||||
hass.bus.async_listeners()
|
||||
) == listeners_without_writes(init_listeners)
|
||||
|
||||
|
||||
async def test_event_stream_bad_start_time(recorder_mock, hass, hass_ws_client):
|
||||
|
@ -1968,7 +1991,9 @@ async def test_logbook_stream_match_multiple_entities(
|
|||
assert msg["success"]
|
||||
|
||||
# Check our listener got unsubscribed
|
||||
assert hass.bus.async_listeners() == init_listeners
|
||||
assert listeners_without_writes(
|
||||
hass.bus.async_listeners()
|
||||
) == listeners_without_writes(init_listeners)
|
||||
|
||||
|
||||
async def test_event_stream_bad_end_time(recorder_mock, hass, hass_ws_client):
|
||||
|
@ -2091,7 +2116,9 @@ async def test_live_stream_with_one_second_commit_interval(
|
|||
assert msg["success"]
|
||||
|
||||
# Check our listener got unsubscribed
|
||||
assert hass.bus.async_listeners() == init_listeners
|
||||
assert listeners_without_writes(
|
||||
hass.bus.async_listeners()
|
||||
) == listeners_without_writes(init_listeners)
|
||||
|
||||
|
||||
@patch("homeassistant.components.logbook.websocket_api.EVENT_COALESCE_TIME", 0)
|
||||
|
@ -2146,7 +2173,9 @@ async def test_subscribe_disconnected(recorder_mock, hass, hass_ws_client):
|
|||
await hass.async_block_till_done()
|
||||
|
||||
# Check our listener got unsubscribed
|
||||
assert hass.bus.async_listeners() == init_listeners
|
||||
assert listeners_without_writes(
|
||||
hass.bus.async_listeners()
|
||||
) == listeners_without_writes(init_listeners)
|
||||
|
||||
|
||||
@patch("homeassistant.components.logbook.websocket_api.EVENT_COALESCE_TIME", 0)
|
||||
|
@ -2189,7 +2218,9 @@ async def test_stream_consumer_stop_processing(recorder_mock, hass, hass_ws_clie
|
|||
assert msg["type"] == TYPE_RESULT
|
||||
assert msg["success"]
|
||||
|
||||
assert hass.bus.async_listeners() != init_listeners
|
||||
assert listeners_without_writes(
|
||||
hass.bus.async_listeners()
|
||||
) != listeners_without_writes(init_listeners)
|
||||
for _ in range(5):
|
||||
hass.states.async_set("binary_sensor.is_light", STATE_ON)
|
||||
hass.states.async_set("binary_sensor.is_light", STATE_OFF)
|
||||
|
@ -2197,9 +2228,13 @@ async def test_stream_consumer_stop_processing(recorder_mock, hass, hass_ws_clie
|
|||
|
||||
# Check our listener got unsubscribed because
|
||||
# the queue got full and the overload safety tripped
|
||||
assert hass.bus.async_listeners() == after_ws_created_listeners
|
||||
assert listeners_without_writes(
|
||||
hass.bus.async_listeners()
|
||||
) == listeners_without_writes(after_ws_created_listeners)
|
||||
await websocket_client.close()
|
||||
assert hass.bus.async_listeners() == init_listeners
|
||||
assert listeners_without_writes(
|
||||
hass.bus.async_listeners()
|
||||
) == listeners_without_writes(init_listeners)
|
||||
|
||||
|
||||
@patch("homeassistant.components.logbook.websocket_api.EVENT_COALESCE_TIME", 0)
|
||||
|
@ -2332,7 +2367,9 @@ async def test_subscribe_all_entities_are_continuous(
|
|||
await hass.async_block_till_done()
|
||||
|
||||
# Check our listener got unsubscribed
|
||||
assert hass.bus.async_listeners() == init_listeners
|
||||
assert listeners_without_writes(
|
||||
hass.bus.async_listeners()
|
||||
) == listeners_without_writes(init_listeners)
|
||||
|
||||
|
||||
@patch("homeassistant.components.logbook.websocket_api.EVENT_COALESCE_TIME", 0)
|
||||
|
@ -2494,7 +2531,9 @@ async def test_subscribe_entities_some_have_uom_multiple(
|
|||
await hass.async_block_till_done()
|
||||
|
||||
# Check our listener got unsubscribed
|
||||
assert hass.bus.async_listeners() == init_listeners
|
||||
assert listeners_without_writes(
|
||||
hass.bus.async_listeners()
|
||||
) == listeners_without_writes(init_listeners)
|
||||
|
||||
|
||||
@patch("homeassistant.components.logbook.websocket_api.EVENT_COALESCE_TIME", 0)
|
||||
|
@ -2608,7 +2647,9 @@ async def test_logbook_stream_ignores_forced_updates(
|
|||
assert msg["success"]
|
||||
|
||||
# Check our listener got unsubscribed
|
||||
assert hass.bus.async_listeners() == init_listeners
|
||||
assert listeners_without_writes(
|
||||
hass.bus.async_listeners()
|
||||
) == listeners_without_writes(init_listeners)
|
||||
|
||||
|
||||
@patch("homeassistant.components.logbook.websocket_api.EVENT_COALESCE_TIME", 0)
|
||||
|
@ -2703,4 +2744,6 @@ async def test_subscribe_all_entities_are_continuous_with_device(
|
|||
await hass.async_block_till_done()
|
||||
|
||||
# Check our listener got unsubscribed
|
||||
assert hass.bus.async_listeners() == init_listeners
|
||||
assert listeners_without_writes(
|
||||
hass.bus.async_listeners()
|
||||
) == listeners_without_writes(init_listeners)
|
||||
|
|
Loading…
Add table
Reference in a new issue