mirror of
https://github.com/espressif/esp-mqtt.git
synced 2025-10-06 03:51:51 +02:00
49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
# SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
import socket
|
|
import pytest
|
|
import logging
|
|
import typing as t
|
|
|
|
|
|
def get_host_ip4_by_dest_ip(dest_ip: str = "") -> str:
|
|
"""
|
|
Get the local IP address that would be used to reach a destination IP.
|
|
|
|
Args:
|
|
dest_ip: Destination IP address. Defaults to 8.8.8.8 if not provided.
|
|
|
|
Returns:
|
|
The local IP address as a string.
|
|
"""
|
|
if not dest_ip:
|
|
dest_ip = "8.8.8.8"
|
|
s1 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
s1.connect((dest_ip, 80))
|
|
host_ip = s1.getsockname()[0]
|
|
s1.close()
|
|
assert isinstance(host_ip, str)
|
|
print(f"Using host ip: {host_ip}")
|
|
return host_ip
|
|
|
|
|
|
@pytest.fixture
|
|
def log_performance(
|
|
record_property: t.Callable[[str, object], None],
|
|
) -> t.Callable[[str, str], None]:
|
|
"""
|
|
log performance item with pre-defined format to the console
|
|
and record it under the ``properties`` tag in the junit report if available.
|
|
"""
|
|
|
|
def real_func(item: str, value: str) -> None:
|
|
"""
|
|
:param item: performance item name
|
|
:param value: performance value
|
|
"""
|
|
logging.info("[Performance][%s]: %s", item, value)
|
|
record_property(item, value)
|
|
|
|
return real_func
|