Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions framework/python/src/common/mqtt.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,13 @@
import typing as t
import paho.mqtt.client as mqtt_client
from common import logger
from enum import Enum

class MQTTTopic(str, Enum):
INFO = "info"
INTERNET_CONNECTION_TOPIC = "events/internet"
NETWORK_ADAPTERS_TOPIC = "events/adapter"
STATUS_TOPIC = "status"

LOGGER = logger.get_logger("mqtt")
WEBSOCKETS_HOST = "localhost"
Expand Down Expand Up @@ -47,7 +54,7 @@ def disconnect(self):
LOGGER.debug("Disconnecting from broker")
self._client.disconnect()

def send_message(self, topic: str, message: t.Union[str, dict]) -> None:
def send_message(self, topic: MQTTTopic, message: t.Union[str, dict]) -> None:
"""Send message to specific topic

Args:
Expand All @@ -57,4 +64,4 @@ def send_message(self, topic: str, message: t.Union[str, dict]) -> None:
self._connect()
if isinstance(message, dict):
message = json.dumps(message)
self._client.publish(topic, str(message))
self._client.publish(topic.value, str(message))
3 changes: 1 addition & 2 deletions framework/python/src/core/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@
ALLOW_DISCONNECT_KEY='allow_disconnect'
CERTS_PATH = 'local/root_certs'
CONFIG_FILE_PATH = 'local/system.json'
STATUS_TOPIC = 'status'

MAKE_CONTROL_DIR = 'make/DEBIAN/control'

Expand All @@ -66,7 +65,7 @@ def wrapper(self, *args, **kwargs):

if self.get_status() != TestrunStatus.IDLE and not self.pause_message:
self.get_mqtt_client().send_message(
STATUS_TOPIC,
mqtt.MQTTTopic.STATUS_TOPIC,
jsonable_encoder(self.to_json())
)
if self.get_status() in STATUSES_COMPLETE:
Expand Down
8 changes: 3 additions & 5 deletions framework/python/src/core/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,12 @@
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from fastapi import FastAPI

from common import logger
from common import logger, mqtt

# Check adapters period seconds
# Check adapters period seconds
CHECK_NETWORK_ADAPTERS_PERIOD = 5
CHECK_INTERNET_PERIOD = 2
INTERNET_CONNECTION_TOPIC = 'events/internet'
NETWORK_ADAPTERS_TOPIC = 'events/adapter'

LOGGER = logger.get_logger('tasks')

Expand All @@ -49,7 +47,7 @@ def __init__(
func=self._testrun.get_net_orc().network_adapters_checker,
kwargs={
'mqtt_client': self._mqtt_client,
'topic': NETWORK_ADAPTERS_TOPIC
'topic': mqtt.MQTTTopic.NETWORK_ADAPTERS_TOPIC
},
trigger='interval',
seconds=CHECK_NETWORK_ADAPTERS_PERIOD,
Expand All @@ -60,7 +58,7 @@ def __init__(
func=self._testrun.get_net_orc().internet_conn_checker,
kwargs={
'mqtt_client': self._mqtt_client,
'topic': INTERNET_CONNECTION_TOPIC
'topic': mqtt.MQTTTopic.INTERNET_CONNECTION_TOPIC
},
trigger='interval',
seconds=CHECK_INTERNET_PERIOD,
Expand Down
8 changes: 6 additions & 2 deletions framework/python/src/core/testrun.py
Original file line number Diff line number Diff line change
Expand Up @@ -467,8 +467,12 @@ def _device_discovered(self, mac_addr):

if device is not None:
if mac_addr != device.mac_addr:
LOGGER.info(f'Found device with mac addr: {mac_addr} but was ignored')
LOGGER.info(f'Expected device mac address is {device.mac_addr}')
msg = f'Found device with mac addr: {mac_addr} but was ignored'
self._mqtt_client.send_message(mqtt.MQTTTopic.INFO, {'message': msg})
LOGGER.info(msg)
msg = f'Expected device mac address is {device.mac_addr}'
self._mqtt_client.send_message(mqtt.MQTTTopic.INFO, {'message': msg})
LOGGER.info(msg)
# Ignore discovered device because it is not the target device
return
else:
Expand Down
Loading