Skip to content

Commit efd5d33

Browse files
authored
Merge pull request #2410 from reubenmiller/tests-print-mqtt-logs
tests: include more readable mqtt logs in Get Logs keyword
2 parents 1373b00 + 98b5c91 commit efd5d33

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

tests/RobotFramework/libraries/ThinEdgeIO/ThinEdgeIO.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,12 @@ def get_logs(
154154
except Exception as ex: # pylint: disable=broad-except
155155
log.warning("Failed to get device managed object. %s", ex)
156156

157+
# Log mqtt messages separately so it is easier to read/debug
158+
try:
159+
self.log_mqtt_messages("#", date_from)
160+
except Exception as ex:
161+
log.warning("Failed to retrieve mqtt logs. %s", ex, exc_info=True)
162+
157163
try:
158164
# Get agent log files (if they exist)
159165
log.info("tedge agent logs: /var/log/tedge/agent/*")
@@ -495,8 +501,7 @@ def _assert_mqtt_topic_messages(
495501
)
496502

497503
messages = [
498-
bytes.fromhex(item["payload_hex"]).decode("utf8")
499-
# item["message"]["payload"]
504+
bytes.fromhex(item["payload_hex"]).decode("utf8", errors="replace")
500505
for item in items
501506
]
502507

@@ -512,6 +517,18 @@ def _assert_mqtt_topic_messages(
512517

513518
return messages
514519

520+
def log_mqtt_messages(self, topic: str = "#", date_from: Union[datetime, float] = None, **kwargs):
521+
items = self.mqtt_match_messages(
522+
topic=topic,
523+
date_from=date_from,
524+
**kwargs,
525+
)
526+
entries = [
527+
f'{item["message"]["tst"].replace("+0000", ""):32} {item["message"]["topic"]:70} {bytes.fromhex(item["payload_hex"]).decode("utf8", errors="replace")}'
528+
for item in items
529+
]
530+
log.info("---- mqtt messages ----\n%s", "\n".join(entries))
531+
515532
@keyword("Should Have MQTT Messages")
516533
def mqtt_should_have_topic(
517534
self,

0 commit comments

Comments
 (0)