[test] verify ephemeral key settings and _meshcop-e (#10537)

This commit is contained in:
Mia Yang
2024-08-14 04:40:40 +00:00
committed by GitHub
parent 3bcea2467b
commit fa26102fe5
2 changed files with 43 additions and 3 deletions
@@ -102,11 +102,28 @@ class PublishMeshCopService(thread_cert.TestCase):
self.simulator.go(10)
self.check_meshcop_service(br1, host)
# activate ePSKc mode
lifetime = 500_000
ephemeral_key = br1.activate_ephemeral_key_mode(lifetime)
self.assertEqual(len(ephemeral_key), 9)
self.assertEqual(br1.get_ephemeral_key_state(), 'active')
# check Meshcop-e service
self.check_meshcop_e_service(host, True)
# deactivate ePSKc mode
br1.deactivate_ephemeral_key_mode()
self.assertEqual(br1.get_ephemeral_key_state(), 'inactive')
self.simulator.go(10)
# check Meshcop-e service
self.check_meshcop_e_service(host, False)
# change ephemeral key mode (ePSKc) and check Meshcop
br1.ephemeral_key_enabled = False
self.assertFalse(br1.ephemeral_key_enabled)
self.simulator.go(10)
self.check_meshcop_service(br1, host)
# check Meshcop-e format
self.check_meshcop_e_service(host, False)
# end of ephemeral key mode (ePSKc) test
br1.disable_backbone_router()
@@ -218,13 +235,24 @@ class PublishMeshCopService(thread_cert.TestCase):
self.assertEqual(service_data['txt']['rv'], '1')
self.assertIn(service_data['txt']['tv'], ['1.1.0', '1.1.1', '1.2.0', '1.3.0'])
def discover_all_meshcop_services(self, host):
instance_names = host.browse_mdns_services('_meshcop._udp')
def discover_services(self, host, type):
instance_names = host.browse_mdns_services(type)
services = []
for instance_name in instance_names:
services.append(host.discover_mdns_service(instance_name, '_meshcop._udp', None))
services.append(host.discover_mdns_service(instance_name, type, None))
return services
def discover_all_meshcop_services(self, host):
return self.discover_services(host, '_meshcop._udp')
def check_meshcop_e_service(self, host, isactive):
services = self.discover_services(host, '_meshcop-e._udp')
# TODO: Meshcop-e port check etc.
if isactive:
self.assertTrue(len(services) > 0, msg='Meshcop-e service not found')
else:
self.assertEqual(len(services), 0, msg='Meshcop-e service still found after disabled')
if __name__ == '__main__':
unittest.main()
+12
View File
@@ -422,6 +422,12 @@ class OtbrDocker:
def nat64_set_enabled(self, enable):
return self.call_dbus_method('io.openthread.BorderRouter', 'SetNat64Enabled', enable)
def activate_ephemeral_key_mode(self, lifetime):
return self.call_dbus_method('io.openthread.BorderRouter', 'ActivateEphemeralKeyMode', lifetime)
def deactivate_ephemeral_key_mode(self):
return self.call_dbus_method('io.openthread.BorderRouter', 'DeactivateEphemeralKeyMode')
@property
def nat64_cidr(self):
self.send_command('nat64 cidr')
@@ -1896,6 +1902,12 @@ class NodeImpl:
self.send_command(cmd)
self._expect_done()
def get_ephemeral_key_state(self):
cmd = 'ba ephemeralkey'
states = [r'inactive', r'active']
self.send_command(cmd)
return self._expect_result(states)
def get_timeout(self):
self.send_command('childtimeout')
return self._expect_result(r'\d+')