[thci] retrieve BA port from mDNS response (#7130)

Modify `mdns_query` to accept a list of reference devices link local
addresses in order to discard their mDNS responses.

Also accept a service string to be used for the Thread 1.3
Certification program.

Return the DUT's Border Agent address and port.
This commit is contained in:
Eduardo Montoya
2021-11-09 08:11:04 -08:00
committed by GitHub
parent 39a1f55447
commit dc9ce005f3
2 changed files with 25 additions and 7 deletions
-4
View File
@@ -2322,10 +2322,6 @@ class OpenThreadTHCI(object):
print(cmd)
return self.__executeCommand(cmd)[-1] == 'Done'
@API
def getBorderAgentPort(self):
return int(self.__executeCommand('ba port')[0])
@API
def startExternalCommissioner(self, baAddr, baPort):
"""Start external commissioner
+25 -3
View File
@@ -608,9 +608,31 @@ EOF"
self.log('%s', line)
@API
def mdns_query(self):
print('mdns_query')
self.bash('dig -p 5353 @ff02::fb _meshcop._udp.local ptr')
def mdns_query(self, dst='ff02::fb', service='_meshcop._udp.local', addrs_blacklist=[]):
print('mdns_query %s %s %s' % (dst, service, addrs_blacklist))
result = self.bash('dig -p 5353 @%s %s ptr +time=2 +retry=2' % (dst, service))
responses = ' '.join(result).split(';; ANSWER SECTION:')
# Remove responses from unwanted devices
for response in responses:
if not set(response.split()).isdisjoint(set(addrs_blacklist)):
break
# Records patterns:
# raspberrypi-2.local. 10 IN AAAA fe80::81:46ff:fe0d:bfe.43684
# OpenThread_BorderRouter._meshcop._udp.local. 10\tIN SRV 0 0 49153 raspberrypi.local.
try:
addr = response.split('AAAA\tfe80')[1].split(' ')[0]
addr = 'fe80%s%%eth0' % addr
except Exception:
raise Exception('Unable to find the DUT address in the mDNS response')
try:
port = int(response.split('IN SRV')[1].split(' ')[3])
except Exception:
raise Exception('Unable to find the DUT port in the mDNS response')
return (addr, port)
# Override powerDown
@API