[cli] add API/CLI to support querying SRP server state (#6914)

This commit is contained in:
whd
2021-08-12 10:52:04 -07:00
committed by GitHub
parent f99f206bea
commit cd6d57d1af
12 changed files with 110 additions and 12 deletions
@@ -77,14 +77,17 @@ class SingleHostAndService(thread_cert.TestCase):
server = self.nodes[BR]
client = self.nodes[ROUTER]
server.srp_server_set_enabled(False)
host.start(start_radvd=False)
self.simulator.go(5)
self.assertEqual(server.srp_server_get_state(), 'disabled')
server.srp_server_set_enabled(True)
server.srp_server_set_lease_range(LEASE, LEASE, KEY_LEASE, KEY_LEASE)
server.start()
self.simulator.go(5)
self.simulator.go(10)
self.assertEqual('leader', server.get_state())
self.assertEqual(server.srp_server_get_state(), 'running')
client.start()
self.simulator.go(5)
+5
View File
@@ -795,6 +795,11 @@ class NodeImpl:
self.send_command(cmd)
self._expect_done()
def srp_server_get_state(self):
states = ['disabled', 'running', 'stopped']
self.send_command('srp server state')
return self._expect_result(states)
def srp_server_set_enabled(self, enable):
cmd = f'srp server {"enable" if enable else "disable"}'
self.send_command(cmd)
@@ -268,7 +268,6 @@ class NetDataPublisher(thread_cert.TestCase):
# MLE-EID address, then change to use specific address. Verify
# that number of entries in network data is correct in each step
# and that entries are switched correctly.
num = 0
for node in routers:
node.netdata_publish_dnssrp_unicast_mleid(DNSSRP_PORT)
@@ -285,6 +284,14 @@ class NetDataPublisher(thread_cert.TestCase):
self.assertEqual(len(services), min(num, DESIRED_NUM_DNSSRP_UNCIAST))
self.verify_unicast_services(services)
for node in routers:
node.srp_server_set_enabled(True)
self.simulator.go(WAIT_TIME)
self.assertEqual(sum(node.srp_server_get_state() == 'running' for node in routers),
min(len(routers), DESIRED_NUM_DNSSRP_UNCIAST))
self.assertEqual(sum(node.srp_server_get_state() == 'stopped' for node in routers),
max(len(routers) - DESIRED_NUM_DNSSRP_UNCIAST, 0))
for node in routers:
node.netdata_unpublish_dnssrp()
self.simulator.go(WAIT_TIME)
@@ -292,6 +299,9 @@ class NetDataPublisher(thread_cert.TestCase):
services = leader.get_services()
self.assertEqual(len(services), min(num, DESIRED_NUM_DNSSRP_UNCIAST))
self.verify_unicast_services(services)
for node in routers:
node.srp_server_set_enabled(False)
self.assertEqual(node.srp_server_get_state(), 'disabled')
#---------------------------------------------------------------------------------
# DNS/SRP entries: Verify publisher preference when removing