Migrate mqtt tests to use freezegun (#105414)
This commit is contained in:
parent
1cc47c0553
commit
ff85d0c290
2 changed files with 41 additions and 41 deletions
|
@ -8,6 +8,7 @@ from pathlib import Path
|
||||||
from typing import Any
|
from typing import Any
|
||||||
from unittest.mock import ANY, MagicMock, patch
|
from unittest.mock import ANY, MagicMock, patch
|
||||||
|
|
||||||
|
from freezegun import freeze_time
|
||||||
import pytest
|
import pytest
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
import yaml
|
import yaml
|
||||||
|
@ -31,6 +32,7 @@ from homeassistant.generated.mqtt import MQTT
|
||||||
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_send
|
from homeassistant.helpers.dispatcher import async_dispatcher_send
|
||||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||||
|
from homeassistant.util import dt as dt_util
|
||||||
|
|
||||||
from tests.common import MockConfigEntry, async_fire_mqtt_message
|
from tests.common import MockConfigEntry, async_fire_mqtt_message
|
||||||
from tests.typing import MqttMockHAClientGenerator, MqttMockPahoClient
|
from tests.typing import MqttMockHAClientGenerator, MqttMockPahoClient
|
||||||
|
@ -1320,9 +1322,8 @@ async def help_test_entity_debug_info_max_messages(
|
||||||
"subscriptions"
|
"subscriptions"
|
||||||
]
|
]
|
||||||
|
|
||||||
start_dt = datetime(2019, 1, 1, 0, 0, 0)
|
start_dt = datetime(2019, 1, 1, 0, 0, 0, tzinfo=dt_util.UTC)
|
||||||
with patch("homeassistant.util.dt.utcnow") as dt_utcnow:
|
with freeze_time(start_dt):
|
||||||
dt_utcnow.return_value = start_dt
|
|
||||||
for i in range(0, debug_info.STORED_MESSAGES + 1):
|
for i in range(0, debug_info.STORED_MESSAGES + 1):
|
||||||
async_fire_mqtt_message(hass, "test-topic", f"{i}")
|
async_fire_mqtt_message(hass, "test-topic", f"{i}")
|
||||||
|
|
||||||
|
@ -1396,7 +1397,7 @@ async def help_test_entity_debug_info_message(
|
||||||
|
|
||||||
debug_info_data = debug_info.info_for_device(hass, device.id)
|
debug_info_data = debug_info.info_for_device(hass, device.id)
|
||||||
|
|
||||||
start_dt = datetime(2019, 1, 1, 0, 0, 0)
|
start_dt = datetime(2019, 1, 1, 0, 0, 0, tzinfo=dt_util.UTC)
|
||||||
|
|
||||||
if state_topic is not None:
|
if state_topic is not None:
|
||||||
assert len(debug_info_data["entities"][0]["subscriptions"]) >= 1
|
assert len(debug_info_data["entities"][0]["subscriptions"]) >= 1
|
||||||
|
@ -1404,8 +1405,7 @@ async def help_test_entity_debug_info_message(
|
||||||
"subscriptions"
|
"subscriptions"
|
||||||
]
|
]
|
||||||
|
|
||||||
with patch("homeassistant.util.dt.utcnow") as dt_utcnow:
|
with freeze_time(start_dt):
|
||||||
dt_utcnow.return_value = start_dt
|
|
||||||
async_fire_mqtt_message(hass, str(state_topic), state_payload)
|
async_fire_mqtt_message(hass, str(state_topic), state_payload)
|
||||||
|
|
||||||
debug_info_data = debug_info.info_for_device(hass, device.id)
|
debug_info_data = debug_info.info_for_device(hass, device.id)
|
||||||
|
@ -1426,8 +1426,7 @@ async def help_test_entity_debug_info_message(
|
||||||
expected_transmissions = []
|
expected_transmissions = []
|
||||||
if service:
|
if service:
|
||||||
# Trigger an outgoing MQTT message
|
# Trigger an outgoing MQTT message
|
||||||
with patch("homeassistant.util.dt.utcnow") as dt_utcnow:
|
with freeze_time(start_dt):
|
||||||
dt_utcnow.return_value = start_dt
|
|
||||||
if service:
|
if service:
|
||||||
service_data = {ATTR_ENTITY_ID: f"{domain}.beer_test"}
|
service_data = {ATTR_ENTITY_ID: f"{domain}.beer_test"}
|
||||||
if service_parameters:
|
if service_parameters:
|
||||||
|
|
|
@ -8,6 +8,7 @@ import ssl
|
||||||
from typing import Any, TypedDict
|
from typing import Any, TypedDict
|
||||||
from unittest.mock import ANY, MagicMock, call, mock_open, patch
|
from unittest.mock import ANY, MagicMock, call, mock_open, patch
|
||||||
|
|
||||||
|
from freezegun.api import FrozenDateTimeFactory
|
||||||
import pytest
|
import pytest
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
|
@ -40,6 +41,7 @@ from homeassistant.helpers.entity import Entity
|
||||||
from homeassistant.helpers.entity_platform import async_get_platforms
|
from homeassistant.helpers.entity_platform import async_get_platforms
|
||||||
from homeassistant.helpers.typing import ConfigType
|
from homeassistant.helpers.typing import ConfigType
|
||||||
from homeassistant.setup import async_setup_component
|
from homeassistant.setup import async_setup_component
|
||||||
|
from homeassistant.util import dt as dt_util
|
||||||
from homeassistant.util.dt import utcnow
|
from homeassistant.util.dt import utcnow
|
||||||
|
|
||||||
from .test_common import help_all_subscribe_calls
|
from .test_common import help_all_subscribe_calls
|
||||||
|
@ -3256,6 +3258,7 @@ async def test_debug_info_wildcard(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
device_registry: dr.DeviceRegistry,
|
device_registry: dr.DeviceRegistry,
|
||||||
mqtt_mock_entry: MqttMockHAClientGenerator,
|
mqtt_mock_entry: MqttMockHAClientGenerator,
|
||||||
|
freezer: FrozenDateTimeFactory,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test debug info."""
|
"""Test debug info."""
|
||||||
await mqtt_mock_entry()
|
await mqtt_mock_entry()
|
||||||
|
@ -3279,10 +3282,9 @@ async def test_debug_info_wildcard(
|
||||||
"subscriptions"
|
"subscriptions"
|
||||||
]
|
]
|
||||||
|
|
||||||
start_dt = datetime(2019, 1, 1, 0, 0, 0)
|
start_dt = datetime(2019, 1, 1, 0, 0, 0, tzinfo=dt_util.UTC)
|
||||||
with patch("homeassistant.util.dt.utcnow") as dt_utcnow:
|
freezer.move_to(start_dt)
|
||||||
dt_utcnow.return_value = start_dt
|
async_fire_mqtt_message(hass, "sensor/abc", "123")
|
||||||
async_fire_mqtt_message(hass, "sensor/abc", "123")
|
|
||||||
|
|
||||||
debug_info_data = debug_info.info_for_device(hass, device.id)
|
debug_info_data = debug_info.info_for_device(hass, device.id)
|
||||||
assert len(debug_info_data["entities"][0]["subscriptions"]) >= 1
|
assert len(debug_info_data["entities"][0]["subscriptions"]) >= 1
|
||||||
|
@ -3304,6 +3306,7 @@ async def test_debug_info_filter_same(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
device_registry: dr.DeviceRegistry,
|
device_registry: dr.DeviceRegistry,
|
||||||
mqtt_mock_entry: MqttMockHAClientGenerator,
|
mqtt_mock_entry: MqttMockHAClientGenerator,
|
||||||
|
freezer: FrozenDateTimeFactory,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test debug info removes messages with same timestamp."""
|
"""Test debug info removes messages with same timestamp."""
|
||||||
await mqtt_mock_entry()
|
await mqtt_mock_entry()
|
||||||
|
@ -3327,14 +3330,13 @@ async def test_debug_info_filter_same(
|
||||||
"subscriptions"
|
"subscriptions"
|
||||||
]
|
]
|
||||||
|
|
||||||
dt1 = datetime(2019, 1, 1, 0, 0, 0)
|
dt1 = datetime(2019, 1, 1, 0, 0, 0, tzinfo=dt_util.UTC)
|
||||||
dt2 = datetime(2019, 1, 1, 0, 0, 1)
|
dt2 = datetime(2019, 1, 1, 0, 0, 1, tzinfo=dt_util.UTC)
|
||||||
with patch("homeassistant.util.dt.utcnow") as dt_utcnow:
|
freezer.move_to(dt1)
|
||||||
dt_utcnow.return_value = dt1
|
async_fire_mqtt_message(hass, "sensor/abc", "123")
|
||||||
async_fire_mqtt_message(hass, "sensor/abc", "123")
|
async_fire_mqtt_message(hass, "sensor/abc", "123")
|
||||||
async_fire_mqtt_message(hass, "sensor/abc", "123")
|
freezer.move_to(dt2)
|
||||||
dt_utcnow.return_value = dt2
|
async_fire_mqtt_message(hass, "sensor/abc", "123")
|
||||||
async_fire_mqtt_message(hass, "sensor/abc", "123")
|
|
||||||
|
|
||||||
debug_info_data = debug_info.info_for_device(hass, device.id)
|
debug_info_data = debug_info.info_for_device(hass, device.id)
|
||||||
assert len(debug_info_data["entities"][0]["subscriptions"]) == 1
|
assert len(debug_info_data["entities"][0]["subscriptions"]) == 1
|
||||||
|
@ -3364,6 +3366,7 @@ async def test_debug_info_same_topic(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
device_registry: dr.DeviceRegistry,
|
device_registry: dr.DeviceRegistry,
|
||||||
mqtt_mock_entry: MqttMockHAClientGenerator,
|
mqtt_mock_entry: MqttMockHAClientGenerator,
|
||||||
|
freezer: FrozenDateTimeFactory,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test debug info."""
|
"""Test debug info."""
|
||||||
await mqtt_mock_entry()
|
await mqtt_mock_entry()
|
||||||
|
@ -3388,10 +3391,9 @@ async def test_debug_info_same_topic(
|
||||||
"subscriptions"
|
"subscriptions"
|
||||||
]
|
]
|
||||||
|
|
||||||
start_dt = datetime(2019, 1, 1, 0, 0, 0)
|
start_dt = datetime(2019, 1, 1, 0, 0, 0, tzinfo=dt_util.UTC)
|
||||||
with patch("homeassistant.util.dt.utcnow") as dt_utcnow:
|
freezer.move_to(start_dt)
|
||||||
dt_utcnow.return_value = start_dt
|
async_fire_mqtt_message(hass, "sensor/status", "123", qos=0, retain=False)
|
||||||
async_fire_mqtt_message(hass, "sensor/status", "123", qos=0, retain=False)
|
|
||||||
|
|
||||||
debug_info_data = debug_info.info_for_device(hass, device.id)
|
debug_info_data = debug_info.info_for_device(hass, device.id)
|
||||||
assert len(debug_info_data["entities"][0]["subscriptions"]) == 1
|
assert len(debug_info_data["entities"][0]["subscriptions"]) == 1
|
||||||
|
@ -3408,16 +3410,16 @@ async def test_debug_info_same_topic(
|
||||||
async_fire_mqtt_message(hass, "homeassistant/sensor/bla/config", data)
|
async_fire_mqtt_message(hass, "homeassistant/sensor/bla/config", data)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
start_dt = datetime(2019, 1, 1, 0, 0, 0)
|
start_dt = datetime(2019, 1, 1, 0, 0, 0, tzinfo=dt_util.UTC)
|
||||||
with patch("homeassistant.util.dt.utcnow") as dt_utcnow:
|
freezer.move_to(start_dt)
|
||||||
dt_utcnow.return_value = start_dt
|
async_fire_mqtt_message(hass, "sensor/status", "123", qos=0, retain=False)
|
||||||
async_fire_mqtt_message(hass, "sensor/status", "123", qos=0, retain=False)
|
|
||||||
|
|
||||||
|
|
||||||
async def test_debug_info_qos_retain(
|
async def test_debug_info_qos_retain(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
device_registry: dr.DeviceRegistry,
|
device_registry: dr.DeviceRegistry,
|
||||||
mqtt_mock_entry: MqttMockHAClientGenerator,
|
mqtt_mock_entry: MqttMockHAClientGenerator,
|
||||||
|
freezer: FrozenDateTimeFactory,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test debug info."""
|
"""Test debug info."""
|
||||||
await mqtt_mock_entry()
|
await mqtt_mock_entry()
|
||||||
|
@ -3441,19 +3443,18 @@ async def test_debug_info_qos_retain(
|
||||||
"subscriptions"
|
"subscriptions"
|
||||||
]
|
]
|
||||||
|
|
||||||
start_dt = datetime(2019, 1, 1, 0, 0, 0)
|
start_dt = datetime(2019, 1, 1, 0, 0, 0, tzinfo=dt_util.UTC)
|
||||||
with patch("homeassistant.util.dt.utcnow") as dt_utcnow:
|
freezer.move_to(start_dt)
|
||||||
dt_utcnow.return_value = start_dt
|
# simulate the first message was replayed from the broker with retained flag
|
||||||
# simulate the first message was replayed from the broker with retained flag
|
async_fire_mqtt_message(hass, "sensor/abc", "123", qos=0, retain=True)
|
||||||
async_fire_mqtt_message(hass, "sensor/abc", "123", qos=0, retain=True)
|
# simulate an update message
|
||||||
# simulate an update message
|
async_fire_mqtt_message(hass, "sensor/abc", "123", qos=0, retain=False)
|
||||||
async_fire_mqtt_message(hass, "sensor/abc", "123", qos=0, retain=False)
|
# simpulate someone else subscribed and retained messages were replayed
|
||||||
# simpulate someone else subscribed and retained messages were replayed
|
async_fire_mqtt_message(hass, "sensor/abc", "123", qos=1, retain=True)
|
||||||
async_fire_mqtt_message(hass, "sensor/abc", "123", qos=1, retain=True)
|
# simulate an update message
|
||||||
# simulate an update message
|
async_fire_mqtt_message(hass, "sensor/abc", "123", qos=1, retain=False)
|
||||||
async_fire_mqtt_message(hass, "sensor/abc", "123", qos=1, retain=False)
|
# simulate an update message
|
||||||
# simulate an update message
|
async_fire_mqtt_message(hass, "sensor/abc", "123", qos=2, retain=False)
|
||||||
async_fire_mqtt_message(hass, "sensor/abc", "123", qos=2, retain=False)
|
|
||||||
|
|
||||||
debug_info_data = debug_info.info_for_device(hass, device.id)
|
debug_info_data = debug_info.info_for_device(hass, device.id)
|
||||||
assert len(debug_info_data["entities"][0]["subscriptions"]) == 1
|
assert len(debug_info_data["entities"][0]["subscriptions"]) == 1
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue