From 634745dd7244e0fd9963e472fa7b3ffe445982c3 Mon Sep 17 00:00:00 2001 From: Mia Yang <145632982+mia1yang@users.noreply.github.com> Date: Tue, 6 Aug 2024 14:54:02 +0000 Subject: [PATCH] [test] verify state bitmap when runtime enable/disable EphemeralKey mode (#10503) Meshcop ePSKc mode supported bitmap check. --- .../border_router/test_publish_meshcop_service.py | 13 +++++++++++++ tests/scripts/thread-cert/node.py | 10 ++++++++++ 2 files changed, 23 insertions(+) diff --git a/tests/scripts/thread-cert/border_router/test_publish_meshcop_service.py b/tests/scripts/thread-cert/border_router/test_publish_meshcop_service.py index 26b9b1408..77979dbb5 100755 --- a/tests/scripts/thread-cert/border_router/test_publish_meshcop_service.py +++ b/tests/scripts/thread-cert/border_router/test_publish_meshcop_service.py @@ -95,8 +95,20 @@ class PublishMeshCopService(thread_cert.TestCase): br1.start() self.simulator.go(config.BORDER_ROUTER_STARTUP_DELAY) self.assertEqual('leader', br1.get_state()) + + # start to test ephemeral key mode (ePSKc) + br1.ephemeral_key_enabled = True + self.assertTrue(br1.ephemeral_key_enabled) + self.simulator.go(10) self.check_meshcop_service(br1, host) + # 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) + # end of ephemeral key mode (ePSKc) test + br1.disable_backbone_router() self.simulator.go(10) self.check_meshcop_service(br1, host) @@ -201,6 +213,7 @@ class PublishMeshCopService(thread_cert.TestCase): br.get_backbone_router_state() != 'Disabled') # BBR is enabled or not self.assertEqual((state_bitmap >> 8 & 1), device_role not in ['disabled', 'detached'] and br.get_backbone_router_state() == 'Primary') # BBR is primary or not + self.assertEqual(bool(state_bitmap >> 11 & 1), br.ephemeral_key_enabled) # ePSKc is supported or not self.assertEqual(service_data['txt']['nn'], br.get_network_name()) 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']) diff --git a/tests/scripts/thread-cert/node.py b/tests/scripts/thread-cert/node.py index 35a0aa5ae..8a5f370ab 100755 --- a/tests/scripts/thread-cert/node.py +++ b/tests/scripts/thread-cert/node.py @@ -491,6 +491,16 @@ class OtbrDocker: raise ValueError("dns_upstream_query_state must be a bool") return self.set_dbus_property('DnsUpstreamQueryState', value) + @property + def ephemeral_key_enabled(self): + return bool(self.get_dbus_property('EphemeralKeyEnabled')) + + @ephemeral_key_enabled.setter + def ephemeral_key_enabled(self, value): + if type(value) is not bool: + raise ValueError("ephemeral_key_enabled must be a bool") + return self.set_dbus_property('EphemeralKeyEnabled', value) + def read_border_routing_counters_delta(self): old_counters = self._border_routing_counters new_counters = self.get_border_routing_counters()