From a46b565cbf6b3b666bd64e0177a412b7c010195f Mon Sep 17 00:00:00 2001 From: Simon Lin Date: Thu, 4 Mar 2021 03:21:44 +0800 Subject: [PATCH] [tests] add test to verify DHCP6 client works after reset (#6204) --- .../test_plat_udp_accessiblity.py | 35 +++++++++++++++++-- tests/scripts/thread-cert/node.py | 6 +++- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/tests/scripts/thread-cert/border_router/test_plat_udp_accessiblity.py b/tests/scripts/thread-cert/border_router/test_plat_udp_accessiblity.py index 8ad3fd372..3e20b8e16 100644 --- a/tests/scripts/thread-cert/border_router/test_plat_udp_accessiblity.py +++ b/tests/scripts/thread-cert/border_router/test_plat_udp_accessiblity.py @@ -29,6 +29,7 @@ import unittest import thread_cert +import config # Test description: # This test verifies UDP servers can be accessible using RLOC/ALOC/MLEID/LINK-LOCAL/OMR when PLAT_UDP is enabled. @@ -42,8 +43,6 @@ import thread_cert # ROUTER1 # -import config - BR1 = 1 ROUTER1 = 2 @@ -87,6 +86,38 @@ class TestPlatUdpAccessibility(thread_cert.TestCase): for server_aloc in self.nodes[BR1].get_ip6_address(config.ADDRESS_TYPE.ALOC): self._test_srp_server(server_aloc, server_port) + self._testDhcp6ClientAfterReset(BR1, BR1, BR1) + + def _testDhcp6ClientAfterReset(self, server, client, reset_device): + DHCP6_PREFIX = '2001::/64' + + # Configure DHCP6 server + self.nodes[server].add_prefix(DHCP6_PREFIX, 'pdros') + self.simulator.go(3) + self.nodes[server].register_netdata() + self.simulator.go(5) + + # Verify DHCP6 client works + self.assertTrue(self.nodes[client].get_addr(DHCP6_PREFIX)) + self.simulator.go(3) + + self.nodes[reset_device].reset() + self.nodes[reset_device].start() + self.simulator.go(5) + self.assertIn(self.nodes[reset_device].get_state(), ['leader', 'router']) + self.simulator.go(3) + + if reset_device == server: + # Reconfigure DHCP6 server if necessary + self.nodes[server].add_prefix(DHCP6_PREFIX, 'pdros') + self.simulator.go(3) + self.nodes[server].register_netdata() + self.simulator.go(5) + + # Verify DHCP6 client works after reset + self.assertTrue(self.nodes[client].get_addr(DHCP6_PREFIX)) + self.simulator.go(3) + def _test_srp_server(self, server_addr, server_port): print(f'Testing SRP server: {server_addr}:{server_port}') diff --git a/tests/scripts/thread-cert/node.py b/tests/scripts/thread-cert/node.py index 91447b13f..1fd95de1e 100755 --- a/tests/scripts/thread-cert/node.py +++ b/tests/scripts/thread-cert/node.py @@ -52,6 +52,8 @@ PORT_OFFSET = int(os.getenv('PORT_OFFSET', "0")) class OtbrDocker: + RESET_DELAY = 3 + _socat_proc = None _ot_rcp_proc = None _docker_proc = None @@ -307,6 +309,8 @@ class OtbrDocker: class OtCli: + RESET_DELAY = 0.1 + def __init__(self, nodeid, is_mtd=False, version=None, is_bbr=False, **kwargs): self.verbose = int(float(os.getenv('VERBOSE', 0))) self.node_type = os.getenv('NODE_TYPE', 'sim') @@ -1786,7 +1790,7 @@ class NodeImpl: def reset(self): self.send_command('reset') - time.sleep(0.1) + time.sleep(self.RESET_DELAY) def set_router_selection_jitter(self, jitter): cmd = 'routerselectionjitter %d' % jitter