mirror of
https://github.com/espressif/openthread.git
synced 2026-07-26 22:09:05 +00:00
[telemetry] add API for TREL telemetry (#9710)
Create OT API to support trel telemetry which is supported through platform API and also add cli support to get/reset trel counters. Metrics we are adding are: - trel_frames_tx - trel_bytes_tx - trel_frames_rx - trel_bytes_rx - trel_frames_tx_failed - num_trel_peers Metrics already supported through API: - trel_enabled
This commit is contained in:
@@ -143,6 +143,23 @@ class TestTrelConnectivity(thread_cert.TestCase):
|
||||
self.assertTrue(med1.ping(router2_mleid))
|
||||
self.assertTrue(sed1.ping(router2_mleid))
|
||||
|
||||
counters = br1.get_trel_counters()
|
||||
print('br1 trel counters', counters)
|
||||
self.assertTrue(counters['Inbound']['packets'] > 0)
|
||||
self.assertTrue(counters['Inbound']['bytes'] > 0)
|
||||
self.assertTrue(counters['Outbound']['packets'] > 0)
|
||||
self.assertTrue(counters['Outbound']['bytes'] > 0)
|
||||
self.assertTrue(counters['Outbound']['failures'] >= 0)
|
||||
|
||||
br1.reset_trel_counters()
|
||||
counters = br1.get_trel_counters()
|
||||
print('br1 trel counters after reset', counters)
|
||||
self.assertTrue(counters['Inbound']['packets'] == 0)
|
||||
self.assertTrue(counters['Inbound']['bytes'] == 0)
|
||||
self.assertTrue(counters['Outbound']['packets'] == 0)
|
||||
self.assertTrue(counters['Outbound']['bytes'] == 0)
|
||||
self.assertTrue(counters['Outbound']['failures'] == 0)
|
||||
|
||||
def verify(self, pv: PacketVerifier):
|
||||
pkts: PacketFilter = pv.pkts
|
||||
BR1_RLOC16 = pv.vars['BR1_RLOC16']
|
||||
|
||||
@@ -1390,6 +1390,30 @@ class NodeImpl:
|
||||
|
||||
raise
|
||||
|
||||
def get_trel_counters(self):
|
||||
cmd = 'trel counters'
|
||||
self.send_command(cmd)
|
||||
result = self._expect_command_output()
|
||||
|
||||
counters = {}
|
||||
for line in result:
|
||||
m = re.match(r'(\w+)\:[^\d]+(\d+)[^\d]+(\d+)(?:[^\d]+(\d+))?', line)
|
||||
if m:
|
||||
groups = m.groups()
|
||||
sub_counters = {
|
||||
'packets': int(groups[1]),
|
||||
'bytes': int(groups[2]),
|
||||
}
|
||||
if groups[3]:
|
||||
sub_counters['failures'] = int(groups[3])
|
||||
counters[groups[0]] = sub_counters
|
||||
return counters
|
||||
|
||||
def reset_trel_counters(self):
|
||||
cmd = 'trel counters reset'
|
||||
self.send_command(cmd)
|
||||
self._expect_done()
|
||||
|
||||
def _encode_txt_entry(self, entry):
|
||||
"""Encodes the TXT entry to the DNS-SD TXT record format as a HEX string.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user