diff --git a/tests/scripts/thread-cert/Cert_5_1_01_RouterAttach.py b/tests/scripts/thread-cert/Cert_5_1_01_RouterAttach.py index e9acf810b..fd9ca3baf 100755 --- a/tests/scripts/thread-cert/Cert_5_1_01_RouterAttach.py +++ b/tests/scripts/thread-cert/Cert_5_1_01_RouterAttach.py @@ -62,8 +62,8 @@ class Cert_5_1_01_RouterAttach(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_1_02_ChildAddressTimeout.py b/tests/scripts/thread-cert/Cert_5_1_02_ChildAddressTimeout.py index 0c7fba037..e130ae350 100755 --- a/tests/scripts/thread-cert/Cert_5_1_02_ChildAddressTimeout.py +++ b/tests/scripts/thread-cert/Cert_5_1_02_ChildAddressTimeout.py @@ -78,8 +78,8 @@ class Cert_5_1_02_ChildAddressTimeout(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_1_03_RouterAddressReallocation.py b/tests/scripts/thread-cert/Cert_5_1_03_RouterAddressReallocation.py index fcf96520a..67045520c 100755 --- a/tests/scripts/thread-cert/Cert_5_1_03_RouterAddressReallocation.py +++ b/tests/scripts/thread-cert/Cert_5_1_03_RouterAddressReallocation.py @@ -72,8 +72,8 @@ class Cert_5_1_03_RouterAddressReallocation(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_1_04_RouterAddressReallocation.py b/tests/scripts/thread-cert/Cert_5_1_04_RouterAddressReallocation.py index e1318d432..190e94125 100755 --- a/tests/scripts/thread-cert/Cert_5_1_04_RouterAddressReallocation.py +++ b/tests/scripts/thread-cert/Cert_5_1_04_RouterAddressReallocation.py @@ -72,8 +72,8 @@ class Cert_5_1_04_RouterAddressReallocation(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_1_05_RouterAddressTimeout.py b/tests/scripts/thread-cert/Cert_5_1_05_RouterAddressTimeout.py index cce38a959..cacbf28d0 100755 --- a/tests/scripts/thread-cert/Cert_5_1_05_RouterAddressTimeout.py +++ b/tests/scripts/thread-cert/Cert_5_1_05_RouterAddressTimeout.py @@ -65,8 +65,8 @@ class Cert_5_1_05_RouterAddressTimeout(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_1_06_RemoveRouterId.py b/tests/scripts/thread-cert/Cert_5_1_06_RemoveRouterId.py index 663d8b264..780e4f6e1 100755 --- a/tests/scripts/thread-cert/Cert_5_1_06_RemoveRouterId.py +++ b/tests/scripts/thread-cert/Cert_5_1_06_RemoveRouterId.py @@ -62,8 +62,8 @@ class Cert_5_1_06_RemoveRouterId(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_1_07_MaxChildCount.py b/tests/scripts/thread-cert/Cert_5_1_07_MaxChildCount.py index 265672ca5..d6833e71a 100755 --- a/tests/scripts/thread-cert/Cert_5_1_07_MaxChildCount.py +++ b/tests/scripts/thread-cert/Cert_5_1_07_MaxChildCount.py @@ -71,8 +71,8 @@ class Cert_5_1_07_MaxChildCount(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_1_08_RouterAttachConnectivity.py b/tests/scripts/thread-cert/Cert_5_1_08_RouterAttachConnectivity.py index 54c87f1da..e2fc82b1c 100755 --- a/tests/scripts/thread-cert/Cert_5_1_08_RouterAttachConnectivity.py +++ b/tests/scripts/thread-cert/Cert_5_1_08_RouterAttachConnectivity.py @@ -89,8 +89,8 @@ class Cert_5_1_08_RouterAttachConnectivity(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_1_09_REEDAttachConnectivity.py b/tests/scripts/thread-cert/Cert_5_1_09_REEDAttachConnectivity.py index 7eef2474e..d75bff772 100755 --- a/tests/scripts/thread-cert/Cert_5_1_09_REEDAttachConnectivity.py +++ b/tests/scripts/thread-cert/Cert_5_1_09_REEDAttachConnectivity.py @@ -89,8 +89,8 @@ class Cert_5_1_09_REEDAttachConnectivity(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_1_10_RouterAttachLinkQuality.py b/tests/scripts/thread-cert/Cert_5_1_10_RouterAttachLinkQuality.py index 0052e1e66..b26199a54 100755 --- a/tests/scripts/thread-cert/Cert_5_1_10_RouterAttachLinkQuality.py +++ b/tests/scripts/thread-cert/Cert_5_1_10_RouterAttachLinkQuality.py @@ -79,8 +79,8 @@ class Cert_5_1_10_RouterAttachLinkQuality(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_1_11_REEDAttachLinkQuality.py b/tests/scripts/thread-cert/Cert_5_1_11_REEDAttachLinkQuality.py index f03be3302..d6417ecc6 100755 --- a/tests/scripts/thread-cert/Cert_5_1_11_REEDAttachLinkQuality.py +++ b/tests/scripts/thread-cert/Cert_5_1_11_REEDAttachLinkQuality.py @@ -79,8 +79,8 @@ class Cert_5_1_11_REEDAttachLinkQuality(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_1_12_NewRouterNeighborSync.py b/tests/scripts/thread-cert/Cert_5_1_12_NewRouterNeighborSync.py index 3e2c80cf3..7344deea5 100755 --- a/tests/scripts/thread-cert/Cert_5_1_12_NewRouterNeighborSync.py +++ b/tests/scripts/thread-cert/Cert_5_1_12_NewRouterNeighborSync.py @@ -69,8 +69,8 @@ class Cert_5_1_12_NewRouterSync(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def verify_step_4(self, router1_messages, router2_messages, req_receiver, accept_receiver): if router2_messages.contains_mle_message(mle.CommandType.LINK_REQUEST) and \ diff --git a/tests/scripts/thread-cert/Cert_5_1_13_RouterReset.py b/tests/scripts/thread-cert/Cert_5_1_13_RouterReset.py index 7383666f7..02b0fb4bc 100755 --- a/tests/scripts/thread-cert/Cert_5_1_13_RouterReset.py +++ b/tests/scripts/thread-cert/Cert_5_1_13_RouterReset.py @@ -64,8 +64,8 @@ class Cert_5_1_13_RouterReset(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_2_01_REEDAttach.py b/tests/scripts/thread-cert/Cert_5_2_01_REEDAttach.py index 11c0344bd..acd1afc77 100755 --- a/tests/scripts/thread-cert/Cert_5_2_01_REEDAttach.py +++ b/tests/scripts/thread-cert/Cert_5_2_01_REEDAttach.py @@ -79,8 +79,8 @@ class Cert_5_2_01_REEDAttach(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_2_03_LeaderReject2Hops.py b/tests/scripts/thread-cert/Cert_5_2_03_LeaderReject2Hops.py index 82bbfac18..82148c384 100755 --- a/tests/scripts/thread-cert/Cert_5_2_03_LeaderReject2Hops.py +++ b/tests/scripts/thread-cert/Cert_5_2_03_LeaderReject2Hops.py @@ -77,8 +77,8 @@ class Cert_5_2_3_LeaderReject2Hops(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): # 1 diff --git a/tests/scripts/thread-cert/Cert_5_2_04_REEDUpgrade.py b/tests/scripts/thread-cert/Cert_5_2_04_REEDUpgrade.py index a4667bec1..e9987d491 100755 --- a/tests/scripts/thread-cert/Cert_5_2_04_REEDUpgrade.py +++ b/tests/scripts/thread-cert/Cert_5_2_04_REEDUpgrade.py @@ -81,8 +81,8 @@ class Cert_5_2_4_REEDUpgrade(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): # 1 Ensure topology is formed correctly without the DUT_REED. diff --git a/tests/scripts/thread-cert/Cert_5_2_05_AddressQuery.py b/tests/scripts/thread-cert/Cert_5_2_05_AddressQuery.py index ff9bc7b39..99bbb5f19 100755 --- a/tests/scripts/thread-cert/Cert_5_2_05_AddressQuery.py +++ b/tests/scripts/thread-cert/Cert_5_2_05_AddressQuery.py @@ -76,8 +76,8 @@ class Cert_5_2_5_AddressQuery(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): # 1. LEADER: DHCPv6 Server for prefix 2001::/64. diff --git a/tests/scripts/thread-cert/Cert_5_2_06_RouterDowngrade.py b/tests/scripts/thread-cert/Cert_5_2_06_RouterDowngrade.py index 9c56c41c5..e016b543c 100755 --- a/tests/scripts/thread-cert/Cert_5_2_06_RouterDowngrade.py +++ b/tests/scripts/thread-cert/Cert_5_2_06_RouterDowngrade.py @@ -57,8 +57,8 @@ class Cert_5_2_06_RouterDowngrade(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): # 1 Ensure topology is formed correctly without ROUTER24. diff --git a/tests/scripts/thread-cert/Cert_5_2_07_REEDSynchronization.py b/tests/scripts/thread-cert/Cert_5_2_07_REEDSynchronization.py index b2b54d622..1ad339893 100755 --- a/tests/scripts/thread-cert/Cert_5_2_07_REEDSynchronization.py +++ b/tests/scripts/thread-cert/Cert_5_2_07_REEDSynchronization.py @@ -54,8 +54,8 @@ class Cert_5_2_7_REEDSynchronization(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): # 1. Ensure topology is formed correctly without DUT_ROUTER1. diff --git a/tests/scripts/thread-cert/Cert_5_3_01_LinkLocal.py b/tests/scripts/thread-cert/Cert_5_3_01_LinkLocal.py index 73c316184..95adcbcaf 100755 --- a/tests/scripts/thread-cert/Cert_5_3_01_LinkLocal.py +++ b/tests/scripts/thread-cert/Cert_5_3_01_LinkLocal.py @@ -55,8 +55,8 @@ class Cert_5_3_1_LinkLocal(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): # 1 diff --git a/tests/scripts/thread-cert/Cert_5_3_02_RealmLocal.py b/tests/scripts/thread-cert/Cert_5_3_02_RealmLocal.py index 477ff32d3..22221bfbc 100755 --- a/tests/scripts/thread-cert/Cert_5_3_02_RealmLocal.py +++ b/tests/scripts/thread-cert/Cert_5_3_02_RealmLocal.py @@ -75,8 +75,8 @@ class Cert_5_3_2_RealmLocal(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): # 1 diff --git a/tests/scripts/thread-cert/Cert_5_3_03_AddressQuery.py b/tests/scripts/thread-cert/Cert_5_3_03_AddressQuery.py index 7910a87d3..914baa7d0 100755 --- a/tests/scripts/thread-cert/Cert_5_3_03_AddressQuery.py +++ b/tests/scripts/thread-cert/Cert_5_3_03_AddressQuery.py @@ -86,8 +86,8 @@ class Cert_5_3_3_AddressQuery(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): # 1 diff --git a/tests/scripts/thread-cert/Cert_5_3_04_AddressMapCache.py b/tests/scripts/thread-cert/Cert_5_3_04_AddressMapCache.py index e5d888857..d454c566a 100755 --- a/tests/scripts/thread-cert/Cert_5_3_04_AddressMapCache.py +++ b/tests/scripts/thread-cert/Cert_5_3_04_AddressMapCache.py @@ -85,8 +85,8 @@ class Cert_5_3_4_AddressMapCache(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): # 1 diff --git a/tests/scripts/thread-cert/Cert_5_3_05_RoutingLinkQuality.py b/tests/scripts/thread-cert/Cert_5_3_05_RoutingLinkQuality.py index ee901451b..7938e4909 100755 --- a/tests/scripts/thread-cert/Cert_5_3_05_RoutingLinkQuality.py +++ b/tests/scripts/thread-cert/Cert_5_3_05_RoutingLinkQuality.py @@ -77,8 +77,8 @@ class Cert_5_3_5_RoutingLinkQuality(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): # 1 diff --git a/tests/scripts/thread-cert/Cert_5_3_06_RouterIdMask.py b/tests/scripts/thread-cert/Cert_5_3_06_RouterIdMask.py index 1d6c68ade..bfb27d294 100755 --- a/tests/scripts/thread-cert/Cert_5_3_06_RouterIdMask.py +++ b/tests/scripts/thread-cert/Cert_5_3_06_RouterIdMask.py @@ -71,8 +71,8 @@ class Cert_5_3_6_RouterIdMask(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): # 1 diff --git a/tests/scripts/thread-cert/Cert_5_3_06b_RouterIdMask.py b/tests/scripts/thread-cert/Cert_5_3_06b_RouterIdMask.py index b7f0aaa38..a4c05df28 100755 --- a/tests/scripts/thread-cert/Cert_5_3_06b_RouterIdMask.py +++ b/tests/scripts/thread-cert/Cert_5_3_06b_RouterIdMask.py @@ -66,8 +66,8 @@ class Cert_5_3_6_RouterIdMask(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_3_07_DuplicateAddress.py b/tests/scripts/thread-cert/Cert_5_3_07_DuplicateAddress.py index 58fd9831a..af9c36974 100755 --- a/tests/scripts/thread-cert/Cert_5_3_07_DuplicateAddress.py +++ b/tests/scripts/thread-cert/Cert_5_3_07_DuplicateAddress.py @@ -91,8 +91,8 @@ class Cert_5_3_7_DuplicateAddress(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): # 1 diff --git a/tests/scripts/thread-cert/Cert_5_3_08_ChildAddressSet.py b/tests/scripts/thread-cert/Cert_5_3_08_ChildAddressSet.py index 041665359..6926ff086 100755 --- a/tests/scripts/thread-cert/Cert_5_3_08_ChildAddressSet.py +++ b/tests/scripts/thread-cert/Cert_5_3_08_ChildAddressSet.py @@ -73,8 +73,8 @@ class Cert_5_3_8_ChildAddressSet(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[DUT_LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_3_09_AddressQuery.py b/tests/scripts/thread-cert/Cert_5_3_09_AddressQuery.py index 37c1a4268..9a913c911 100755 --- a/tests/scripts/thread-cert/Cert_5_3_09_AddressQuery.py +++ b/tests/scripts/thread-cert/Cert_5_3_09_AddressQuery.py @@ -86,8 +86,8 @@ class Cert_5_3_09_AddressQuery(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): # 1 & 2 ALL: Build and verify the topology diff --git a/tests/scripts/thread-cert/Cert_5_3_10_AddressQuery.py b/tests/scripts/thread-cert/Cert_5_3_10_AddressQuery.py index c23c391a1..379206850 100755 --- a/tests/scripts/thread-cert/Cert_5_3_10_AddressQuery.py +++ b/tests/scripts/thread-cert/Cert_5_3_10_AddressQuery.py @@ -88,8 +88,8 @@ class Cert_5_3_10_AddressQuery(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): # 1 & 2 diff --git a/tests/scripts/thread-cert/Cert_5_3_11_AddressQueryTimeoutIntervals.py b/tests/scripts/thread-cert/Cert_5_3_11_AddressQueryTimeoutIntervals.py index 2697f1cef..4a9314ffd 100755 --- a/tests/scripts/thread-cert/Cert_5_3_11_AddressQueryTimeoutIntervals.py +++ b/tests/scripts/thread-cert/Cert_5_3_11_AddressQueryTimeoutIntervals.py @@ -66,8 +66,8 @@ class Cert_5_3_11_AddressQueryTimeoutIntervals(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): # 1 ALL: Build and verify the topology diff --git a/tests/scripts/thread-cert/Cert_5_5_01_LeaderReboot.py b/tests/scripts/thread-cert/Cert_5_5_01_LeaderReboot.py index b4106fe04..5ed43257d 100755 --- a/tests/scripts/thread-cert/Cert_5_5_01_LeaderReboot.py +++ b/tests/scripts/thread-cert/Cert_5_5_01_LeaderReboot.py @@ -64,8 +64,8 @@ class Cert_5_5_1_LeaderReboot(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): # 1 ALL: Build and verify the topology diff --git a/tests/scripts/thread-cert/Cert_5_5_02_LeaderReboot.py b/tests/scripts/thread-cert/Cert_5_5_02_LeaderReboot.py index 403edc322..5e526992a 100755 --- a/tests/scripts/thread-cert/Cert_5_5_02_LeaderReboot.py +++ b/tests/scripts/thread-cert/Cert_5_5_02_LeaderReboot.py @@ -69,8 +69,8 @@ class Cert_5_5_2_LeaderReboot(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_5_03_SplitMergeChildren.py b/tests/scripts/thread-cert/Cert_5_5_03_SplitMergeChildren.py index bad45596a..2e4ecd96f 100755 --- a/tests/scripts/thread-cert/Cert_5_5_03_SplitMergeChildren.py +++ b/tests/scripts/thread-cert/Cert_5_5_03_SplitMergeChildren.py @@ -93,8 +93,8 @@ class Cert_5_5_3_SplitMergeChildren(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_5_04_SplitMergeRouters.py b/tests/scripts/thread-cert/Cert_5_5_04_SplitMergeRouters.py index 80d43d3f9..c31a0d36a 100755 --- a/tests/scripts/thread-cert/Cert_5_5_04_SplitMergeRouters.py +++ b/tests/scripts/thread-cert/Cert_5_5_04_SplitMergeRouters.py @@ -86,8 +86,8 @@ class Cert_5_5_4_SplitMergeRouters(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_5_05_SplitMergeREED.py b/tests/scripts/thread-cert/Cert_5_5_05_SplitMergeREED.py index b8e5bcd8a..b8f1a17c4 100755 --- a/tests/scripts/thread-cert/Cert_5_5_05_SplitMergeREED.py +++ b/tests/scripts/thread-cert/Cert_5_5_05_SplitMergeREED.py @@ -78,8 +78,8 @@ class Cert_5_5_5_SplitMergeREED(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_5_07_SplitMergeThreeWay.py b/tests/scripts/thread-cert/Cert_5_5_07_SplitMergeThreeWay.py index ec68df2ef..204de9063 100755 --- a/tests/scripts/thread-cert/Cert_5_5_07_SplitMergeThreeWay.py +++ b/tests/scripts/thread-cert/Cert_5_5_07_SplitMergeThreeWay.py @@ -78,8 +78,8 @@ class Cert_5_5_7_SplitMergeThreeWay(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER1].start() diff --git a/tests/scripts/thread-cert/Cert_5_5_08_SplitRoutersLostLeader.py b/tests/scripts/thread-cert/Cert_5_5_08_SplitRoutersLostLeader.py index c8dcee177..24c44fde6 100755 --- a/tests/scripts/thread-cert/Cert_5_5_08_SplitRoutersLostLeader.py +++ b/tests/scripts/thread-cert/Cert_5_5_08_SplitRoutersLostLeader.py @@ -87,7 +87,7 @@ class Cert_5_5_8_SplitRoutersLostLeader(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes + node.destroy() def test(self): self.nodes[LEADER1].start() diff --git a/tests/scripts/thread-cert/Cert_5_6_01_NetworkDataRegisterBeforeAttachLeader.py b/tests/scripts/thread-cert/Cert_5_6_01_NetworkDataRegisterBeforeAttachLeader.py index 06bf9b534..9b52d7190 100755 --- a/tests/scripts/thread-cert/Cert_5_6_01_NetworkDataRegisterBeforeAttachLeader.py +++ b/tests/scripts/thread-cert/Cert_5_6_01_NetworkDataRegisterBeforeAttachLeader.py @@ -75,8 +75,8 @@ class Cert_5_6_1_NetworkDataLeaderAsBr(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_6_02_NetworkDataRegisterBeforeAttachRouter.py b/tests/scripts/thread-cert/Cert_5_6_02_NetworkDataRegisterBeforeAttachRouter.py index 374f5664a..6f8a17c74 100755 --- a/tests/scripts/thread-cert/Cert_5_6_02_NetworkDataRegisterBeforeAttachRouter.py +++ b/tests/scripts/thread-cert/Cert_5_6_02_NetworkDataRegisterBeforeAttachRouter.py @@ -75,8 +75,8 @@ class Cert_5_6_2_NetworkDataRouterAsBr(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_6_03_NetworkDataRegisterAfterAttachLeader.py b/tests/scripts/thread-cert/Cert_5_6_03_NetworkDataRegisterAfterAttachLeader.py index 9a4a0b61b..81d7d680c 100755 --- a/tests/scripts/thread-cert/Cert_5_6_03_NetworkDataRegisterAfterAttachLeader.py +++ b/tests/scripts/thread-cert/Cert_5_6_03_NetworkDataRegisterAfterAttachLeader.py @@ -75,8 +75,8 @@ class Cert_5_6_3_NetworkDataRegisterAfterAttachLeader(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_6_04_NetworkDataRegisterAfterAttachRouter.py b/tests/scripts/thread-cert/Cert_5_6_04_NetworkDataRegisterAfterAttachRouter.py index ca7ec4ebd..900d27e5b 100755 --- a/tests/scripts/thread-cert/Cert_5_6_04_NetworkDataRegisterAfterAttachRouter.py +++ b/tests/scripts/thread-cert/Cert_5_6_04_NetworkDataRegisterAfterAttachRouter.py @@ -75,8 +75,8 @@ class Cert_5_6_4_NetworkDataRegisterAfterAttachRouter(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_6_05_NetworkDataRegisterAfterAttachRouter.py b/tests/scripts/thread-cert/Cert_5_6_05_NetworkDataRegisterAfterAttachRouter.py index e40ed5681..00a673b8e 100755 --- a/tests/scripts/thread-cert/Cert_5_6_05_NetworkDataRegisterAfterAttachRouter.py +++ b/tests/scripts/thread-cert/Cert_5_6_05_NetworkDataRegisterAfterAttachRouter.py @@ -75,8 +75,8 @@ class Cert_5_6_5_NetworkDataRegisterAfterAttachRouter(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_6_06_NetworkDataExpiration.py b/tests/scripts/thread-cert/Cert_5_6_06_NetworkDataExpiration.py index 2b17c0186..a67d093ba 100755 --- a/tests/scripts/thread-cert/Cert_5_6_06_NetworkDataExpiration.py +++ b/tests/scripts/thread-cert/Cert_5_6_06_NetworkDataExpiration.py @@ -75,8 +75,8 @@ class Cert_5_6_6_NetworkDataExpiration(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_6_07_NetworkDataRequestREED.py b/tests/scripts/thread-cert/Cert_5_6_07_NetworkDataRequestREED.py index aa09d9774..636a4b1f2 100755 --- a/tests/scripts/thread-cert/Cert_5_6_07_NetworkDataRequestREED.py +++ b/tests/scripts/thread-cert/Cert_5_6_07_NetworkDataRequestREED.py @@ -66,8 +66,8 @@ class Cert_5_6_7_NetworkDataRequestREED(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_6_08_ContextManagement.py b/tests/scripts/thread-cert/Cert_5_6_08_ContextManagement.py index e606f7b10..0527a0caa 100755 --- a/tests/scripts/thread-cert/Cert_5_6_08_ContextManagement.py +++ b/tests/scripts/thread-cert/Cert_5_6_08_ContextManagement.py @@ -66,8 +66,8 @@ class Cert_5_6_8_ContextManagement(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_6_09_NetworkDataForwarding.py b/tests/scripts/thread-cert/Cert_5_6_09_NetworkDataForwarding.py index 9e23b7e69..381d2f94d 100755 --- a/tests/scripts/thread-cert/Cert_5_6_09_NetworkDataForwarding.py +++ b/tests/scripts/thread-cert/Cert_5_6_09_NetworkDataForwarding.py @@ -83,8 +83,8 @@ class Cert_5_6_9_NetworkDataForwarding(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_8_01_KeySynchronization.py b/tests/scripts/thread-cert/Cert_5_8_01_KeySynchronization.py index 9d44d1c37..ffa5735e8 100755 --- a/tests/scripts/thread-cert/Cert_5_8_01_KeySynchronization.py +++ b/tests/scripts/thread-cert/Cert_5_8_01_KeySynchronization.py @@ -59,8 +59,8 @@ class Cert_5_8_1_KeySynchronization(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_8_02_KeyIncrement.py b/tests/scripts/thread-cert/Cert_5_8_02_KeyIncrement.py index 53527a6ef..cb8f2c59b 100755 --- a/tests/scripts/thread-cert/Cert_5_8_02_KeyIncrement.py +++ b/tests/scripts/thread-cert/Cert_5_8_02_KeyIncrement.py @@ -60,8 +60,8 @@ class Cert_5_8_2_KeyIncrement(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_8_03_KeyIncrementRollOver.py b/tests/scripts/thread-cert/Cert_5_8_03_KeyIncrementRollOver.py index 9a7e1dbdf..43b180908 100755 --- a/tests/scripts/thread-cert/Cert_5_8_03_KeyIncrementRollOver.py +++ b/tests/scripts/thread-cert/Cert_5_8_03_KeyIncrementRollOver.py @@ -61,8 +61,8 @@ class Cert_5_8_3_KeyIncrementRollOver(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_1_01_RouterAttach.py b/tests/scripts/thread-cert/Cert_6_1_01_RouterAttach.py index 12f6d1e73..fc179ab97 100755 --- a/tests/scripts/thread-cert/Cert_6_1_01_RouterAttach.py +++ b/tests/scripts/thread-cert/Cert_6_1_01_RouterAttach.py @@ -58,8 +58,8 @@ class Cert_6_1_1_RouterAttach(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_1_02_REEDAttach.py b/tests/scripts/thread-cert/Cert_6_1_02_REEDAttach.py index d934b086b..89cdd5860 100755 --- a/tests/scripts/thread-cert/Cert_6_1_02_REEDAttach.py +++ b/tests/scripts/thread-cert/Cert_6_1_02_REEDAttach.py @@ -65,8 +65,8 @@ class Cert_6_1_2_REEDAttach(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_1_03_RouterAttachConnectivity.py b/tests/scripts/thread-cert/Cert_6_1_03_RouterAttachConnectivity.py index c830025d5..06566facc 100755 --- a/tests/scripts/thread-cert/Cert_6_1_03_RouterAttachConnectivity.py +++ b/tests/scripts/thread-cert/Cert_6_1_03_RouterAttachConnectivity.py @@ -85,8 +85,8 @@ class Cert_6_1_3_RouterAttachConnectivity(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_1_04_REEDAttachConnectivity.py b/tests/scripts/thread-cert/Cert_6_1_04_REEDAttachConnectivity.py index 0a2c24d89..8fe8eee5a 100755 --- a/tests/scripts/thread-cert/Cert_6_1_04_REEDAttachConnectivity.py +++ b/tests/scripts/thread-cert/Cert_6_1_04_REEDAttachConnectivity.py @@ -85,8 +85,8 @@ class Cert_6_1_4_REEDAttachConnectivity(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_1_05_RouterAttachLinkQuality.py b/tests/scripts/thread-cert/Cert_6_1_05_RouterAttachLinkQuality.py index 772e55b28..010e60fa9 100755 --- a/tests/scripts/thread-cert/Cert_6_1_05_RouterAttachLinkQuality.py +++ b/tests/scripts/thread-cert/Cert_6_1_05_RouterAttachLinkQuality.py @@ -75,8 +75,8 @@ class Cert_6_1_5_RouterAttachLinkQuality(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_1_06_REEDAttachLinkQuality.py b/tests/scripts/thread-cert/Cert_6_1_06_REEDAttachLinkQuality.py index 13488ea60..076bda2b1 100755 --- a/tests/scripts/thread-cert/Cert_6_1_06_REEDAttachLinkQuality.py +++ b/tests/scripts/thread-cert/Cert_6_1_06_REEDAttachLinkQuality.py @@ -75,8 +75,8 @@ class Cert_6_1_6_REEDAttachLinkQuality(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_1_07_EDSynchronization.py b/tests/scripts/thread-cert/Cert_6_1_07_EDSynchronization.py index c7f48b341..bcbbd14f5 100755 --- a/tests/scripts/thread-cert/Cert_6_1_07_EDSynchronization.py +++ b/tests/scripts/thread-cert/Cert_6_1_07_EDSynchronization.py @@ -89,8 +89,8 @@ class Cert_6_1_7_EDSynchronization(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_2_01_NewPartition.py b/tests/scripts/thread-cert/Cert_6_2_01_NewPartition.py index 7c893568b..8899626f5 100755 --- a/tests/scripts/thread-cert/Cert_6_2_01_NewPartition.py +++ b/tests/scripts/thread-cert/Cert_6_2_01_NewPartition.py @@ -65,8 +65,8 @@ class Cert_6_2_1_NewPartition(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_2_02_NewPartition.py b/tests/scripts/thread-cert/Cert_6_2_02_NewPartition.py index c95f52ca6..823cfb917 100755 --- a/tests/scripts/thread-cert/Cert_6_2_02_NewPartition.py +++ b/tests/scripts/thread-cert/Cert_6_2_02_NewPartition.py @@ -76,8 +76,8 @@ class Cert_6_2_2_NewPartition(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_3_01_OrphanReattach.py b/tests/scripts/thread-cert/Cert_6_3_01_OrphanReattach.py index ff76e4d8c..7e4de0e5f 100755 --- a/tests/scripts/thread-cert/Cert_6_3_01_OrphanReattach.py +++ b/tests/scripts/thread-cert/Cert_6_3_01_OrphanReattach.py @@ -66,8 +66,8 @@ class Cert_6_3_1_OrphanReattach(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_3_02_NetworkDataUpdate.py b/tests/scripts/thread-cert/Cert_6_3_02_NetworkDataUpdate.py index 8bfb35a96..d02519b88 100755 --- a/tests/scripts/thread-cert/Cert_6_3_02_NetworkDataUpdate.py +++ b/tests/scripts/thread-cert/Cert_6_3_02_NetworkDataUpdate.py @@ -58,8 +58,8 @@ class Cert_6_3_2_NetworkDataUpdate(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_4_01_LinkLocal.py b/tests/scripts/thread-cert/Cert_6_4_01_LinkLocal.py index e4339c9e1..f0495820a 100755 --- a/tests/scripts/thread-cert/Cert_6_4_01_LinkLocal.py +++ b/tests/scripts/thread-cert/Cert_6_4_01_LinkLocal.py @@ -57,8 +57,8 @@ class Cert_6_4_1_LinkLocal(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_4_02_RealmLocal.py b/tests/scripts/thread-cert/Cert_6_4_02_RealmLocal.py index 2a0bd969d..4e7edef7c 100755 --- a/tests/scripts/thread-cert/Cert_6_4_02_RealmLocal.py +++ b/tests/scripts/thread-cert/Cert_6_4_02_RealmLocal.py @@ -65,8 +65,8 @@ class Cert_5_3_2_RealmLocal(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_5_01_ChildResetSynchronize.py b/tests/scripts/thread-cert/Cert_6_5_01_ChildResetSynchronize.py index 265fb9115..6631f63c4 100755 --- a/tests/scripts/thread-cert/Cert_6_5_01_ChildResetSynchronize.py +++ b/tests/scripts/thread-cert/Cert_6_5_01_ChildResetSynchronize.py @@ -61,8 +61,8 @@ class Cert_6_5_1_ChildResetSynchronize(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_5_02_ChildResetReattach.py b/tests/scripts/thread-cert/Cert_6_5_02_ChildResetReattach.py index 549102ad5..e90077768 100755 --- a/tests/scripts/thread-cert/Cert_6_5_02_ChildResetReattach.py +++ b/tests/scripts/thread-cert/Cert_6_5_02_ChildResetReattach.py @@ -60,8 +60,8 @@ class Cert_6_5_2_ChildResetReattach(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_6_01_KeyIncrement.py b/tests/scripts/thread-cert/Cert_6_6_01_KeyIncrement.py index cc327a055..0fa6ae1eb 100755 --- a/tests/scripts/thread-cert/Cert_6_6_01_KeyIncrement.py +++ b/tests/scripts/thread-cert/Cert_6_6_01_KeyIncrement.py @@ -59,8 +59,8 @@ class Cert_6_6_1_KeyIncrement(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_6_02_KeyIncrementRollOver.py b/tests/scripts/thread-cert/Cert_6_6_02_KeyIncrementRollOver.py index d37b052db..3b17eb6e4 100755 --- a/tests/scripts/thread-cert/Cert_6_6_02_KeyIncrementRollOver.py +++ b/tests/scripts/thread-cert/Cert_6_6_02_KeyIncrementRollOver.py @@ -60,8 +60,8 @@ class Cert_6_6_2_KeyIncrement1(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_7_1_01_BorderRouterAsLeader.py b/tests/scripts/thread-cert/Cert_7_1_01_BorderRouterAsLeader.py index 23eda976e..cdd2eeb07 100755 --- a/tests/scripts/thread-cert/Cert_7_1_01_BorderRouterAsLeader.py +++ b/tests/scripts/thread-cert/Cert_7_1_01_BorderRouterAsLeader.py @@ -75,8 +75,8 @@ class Cert_7_1_1_BorderRouterAsLeader(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_7_1_02_BorderRouterAsRouter.py b/tests/scripts/thread-cert/Cert_7_1_02_BorderRouterAsRouter.py index 1f7ff178e..aef3a6ae2 100755 --- a/tests/scripts/thread-cert/Cert_7_1_02_BorderRouterAsRouter.py +++ b/tests/scripts/thread-cert/Cert_7_1_02_BorderRouterAsRouter.py @@ -75,8 +75,8 @@ class Cert_7_1_2_BorderRouterAsRouter(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_7_1_03_BorderRouterAsLeader.py b/tests/scripts/thread-cert/Cert_7_1_03_BorderRouterAsLeader.py index deaddb6b2..5618bfca3 100755 --- a/tests/scripts/thread-cert/Cert_7_1_03_BorderRouterAsLeader.py +++ b/tests/scripts/thread-cert/Cert_7_1_03_BorderRouterAsLeader.py @@ -75,8 +75,8 @@ class Cert_7_1_3_BorderRouterAsLeader(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_7_1_04_BorderRouterAsRouter.py b/tests/scripts/thread-cert/Cert_7_1_04_BorderRouterAsRouter.py index 64c9462b6..817295128 100755 --- a/tests/scripts/thread-cert/Cert_7_1_04_BorderRouterAsRouter.py +++ b/tests/scripts/thread-cert/Cert_7_1_04_BorderRouterAsRouter.py @@ -75,8 +75,8 @@ class Cert_7_1_4_BorderRouterAsRouter(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_7_1_05_BorderRouterAsRouter.py b/tests/scripts/thread-cert/Cert_7_1_05_BorderRouterAsRouter.py index 89ed2901f..53f0d552b 100755 --- a/tests/scripts/thread-cert/Cert_7_1_05_BorderRouterAsRouter.py +++ b/tests/scripts/thread-cert/Cert_7_1_05_BorderRouterAsRouter.py @@ -75,8 +75,8 @@ class Cert_7_1_5_BorderRouterAsRouter(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_8_1_01_Commissioning.py b/tests/scripts/thread-cert/Cert_8_1_01_Commissioning.py index 2608b758c..8a7fd8a6f 100755 --- a/tests/scripts/thread-cert/Cert_8_1_01_Commissioning.py +++ b/tests/scripts/thread-cert/Cert_8_1_01_Commissioning.py @@ -55,8 +55,8 @@ class Cert_8_1_01_Commissioning(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[COMMISSIONER].interface_up() diff --git a/tests/scripts/thread-cert/Cert_8_1_02_Commissioning.py b/tests/scripts/thread-cert/Cert_8_1_02_Commissioning.py index 62b5b75f6..e54cff75b 100755 --- a/tests/scripts/thread-cert/Cert_8_1_02_Commissioning.py +++ b/tests/scripts/thread-cert/Cert_8_1_02_Commissioning.py @@ -55,8 +55,8 @@ class Cert_8_1_02_Commissioning(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[COMMISSIONER].interface_up() diff --git a/tests/scripts/thread-cert/Cert_8_2_01_JoinerRouter.py b/tests/scripts/thread-cert/Cert_8_2_01_JoinerRouter.py index 4d5f885dc..08b77d8a0 100755 --- a/tests/scripts/thread-cert/Cert_8_2_01_JoinerRouter.py +++ b/tests/scripts/thread-cert/Cert_8_2_01_JoinerRouter.py @@ -64,8 +64,8 @@ class Cert_8_2_01_JoinerRouter(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[COMMISSIONER].interface_up() diff --git a/tests/scripts/thread-cert/Cert_8_2_02_JoinerRouter.py b/tests/scripts/thread-cert/Cert_8_2_02_JoinerRouter.py index ea25b64b7..4be8d8e1b 100755 --- a/tests/scripts/thread-cert/Cert_8_2_02_JoinerRouter.py +++ b/tests/scripts/thread-cert/Cert_8_2_02_JoinerRouter.py @@ -64,8 +64,8 @@ class Cert_8_2_02_JoinerRouter(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[COMMISSIONER].interface_up() diff --git a/tests/scripts/thread-cert/Cert_9_2_04_ActiveDataset.py b/tests/scripts/thread-cert/Cert_9_2_04_ActiveDataset.py index ad69a6990..61b143bcf 100755 --- a/tests/scripts/thread-cert/Cert_9_2_04_ActiveDataset.py +++ b/tests/scripts/thread-cert/Cert_9_2_04_ActiveDataset.py @@ -55,8 +55,8 @@ class Cert_9_2_15_PendingPartition(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_9_2_07_DelayTimer.py b/tests/scripts/thread-cert/Cert_9_2_07_DelayTimer.py index b15c63c35..bfc9fb000 100755 --- a/tests/scripts/thread-cert/Cert_9_2_07_DelayTimer.py +++ b/tests/scripts/thread-cert/Cert_9_2_07_DelayTimer.py @@ -80,8 +80,8 @@ class Cert_9_2_7_DelayTimer(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_9_2_08_PersistentDatasets.py b/tests/scripts/thread-cert/Cert_9_2_08_PersistentDatasets.py index 35e582295..4bb5fff0a 100755 --- a/tests/scripts/thread-cert/Cert_9_2_08_PersistentDatasets.py +++ b/tests/scripts/thread-cert/Cert_9_2_08_PersistentDatasets.py @@ -102,7 +102,7 @@ class Cert_9_2_8_PersistentDatasets(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes + node.destroy() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_9_2_09_PendingPartition.py b/tests/scripts/thread-cert/Cert_9_2_09_PendingPartition.py index 7b0f51c21..a5736635e 100755 --- a/tests/scripts/thread-cert/Cert_9_2_09_PendingPartition.py +++ b/tests/scripts/thread-cert/Cert_9_2_09_PendingPartition.py @@ -83,8 +83,8 @@ class Cert_9_2_09_PendingPartition(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_9_2_10_PendingPartition.py b/tests/scripts/thread-cert/Cert_9_2_10_PendingPartition.py index 63e3e7101..ee0107973 100755 --- a/tests/scripts/thread-cert/Cert_9_2_10_PendingPartition.py +++ b/tests/scripts/thread-cert/Cert_9_2_10_PendingPartition.py @@ -93,8 +93,8 @@ class Cert_9_2_10_PendingPartition(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_9_2_11_MasterKey.py b/tests/scripts/thread-cert/Cert_9_2_11_MasterKey.py index ecf3b8b01..8d863bb54 100755 --- a/tests/scripts/thread-cert/Cert_9_2_11_MasterKey.py +++ b/tests/scripts/thread-cert/Cert_9_2_11_MasterKey.py @@ -94,8 +94,8 @@ class Cert_9_2_11_MasterKey(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_9_2_12_Announce.py b/tests/scripts/thread-cert/Cert_9_2_12_Announce.py index fc313d829..bd29c483a 100755 --- a/tests/scripts/thread-cert/Cert_9_2_12_Announce.py +++ b/tests/scripts/thread-cert/Cert_9_2_12_Announce.py @@ -90,8 +90,8 @@ class Cert_9_2_12_Announce(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER1].start() diff --git a/tests/scripts/thread-cert/Cert_9_2_13_EnergyScan.py b/tests/scripts/thread-cert/Cert_9_2_13_EnergyScan.py index 3c070a8f7..31ee6fd99 100755 --- a/tests/scripts/thread-cert/Cert_9_2_13_EnergyScan.py +++ b/tests/scripts/thread-cert/Cert_9_2_13_EnergyScan.py @@ -73,8 +73,8 @@ class Cert_9_2_13_EnergyScan(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_9_2_14_PanIdQuery.py b/tests/scripts/thread-cert/Cert_9_2_14_PanIdQuery.py index 1c4025180..da9fe9291 100755 --- a/tests/scripts/thread-cert/Cert_9_2_14_PanIdQuery.py +++ b/tests/scripts/thread-cert/Cert_9_2_14_PanIdQuery.py @@ -73,8 +73,8 @@ class Cert_9_2_14_PanIdQuery(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER1].start() diff --git a/tests/scripts/thread-cert/Cert_9_2_15_PendingPartition.py b/tests/scripts/thread-cert/Cert_9_2_15_PendingPartition.py index acd7f469f..87a38070e 100755 --- a/tests/scripts/thread-cert/Cert_9_2_15_PendingPartition.py +++ b/tests/scripts/thread-cert/Cert_9_2_15_PendingPartition.py @@ -84,8 +84,8 @@ class Cert_9_2_15_PendingPartition(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_9_2_16_ActivePendingPartition.py b/tests/scripts/thread-cert/Cert_9_2_16_ActivePendingPartition.py index e5219d12f..0bf1c6fa6 100755 --- a/tests/scripts/thread-cert/Cert_9_2_16_ActivePendingPartition.py +++ b/tests/scripts/thread-cert/Cert_9_2_16_ActivePendingPartition.py @@ -85,8 +85,8 @@ class Cert_9_2_16_ActivePendingPartition(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_9_2_17_Orphan.py b/tests/scripts/thread-cert/Cert_9_2_17_Orphan.py index 485c6d3f9..201b75918 100755 --- a/tests/scripts/thread-cert/Cert_9_2_17_Orphan.py +++ b/tests/scripts/thread-cert/Cert_9_2_17_Orphan.py @@ -71,8 +71,8 @@ class Cert_9_2_17_Orphan(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes - del self.simulator + node.destroy() + self.simulator.stop() def test(self): self.nodes[LEADER1].start() diff --git a/tests/scripts/thread-cert/Cert_9_2_18_RollBackActiveTimestamp.py b/tests/scripts/thread-cert/Cert_9_2_18_RollBackActiveTimestamp.py index 43a81758e..f9cf62a8e 100755 --- a/tests/scripts/thread-cert/Cert_9_2_18_RollBackActiveTimestamp.py +++ b/tests/scripts/thread-cert/Cert_9_2_18_RollBackActiveTimestamp.py @@ -103,7 +103,7 @@ class Cert_9_2_18_RollBackActiveTimestamp(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes + node.destroy() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Makefile.am b/tests/scripts/thread-cert/Makefile.am index 39c69d262..9adffddc3 100644 --- a/tests/scripts/thread-cert/Makefile.am +++ b/tests/scripts/thread-cert/Makefile.am @@ -134,6 +134,7 @@ EXTRA_DIST = \ network_layer.py \ node.py \ node_cli.py \ + pcap.py \ simulator.py \ sniffer.py \ sniffer_transport.py \ diff --git a/tests/scripts/thread-cert/Test_Cli.py b/tests/scripts/thread-cert/Test_Cli.py index 49762d05e..368754827 100755 --- a/tests/scripts/thread-cert/Test_Cli.py +++ b/tests/scripts/thread-cert/Test_Cli.py @@ -42,7 +42,7 @@ class Cert_Cli(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes + node.destroy() def test(self): commands = self.nodes[LEADER].get_commands() diff --git a/tests/scripts/thread-cert/Test_MacScan.py b/tests/scripts/thread-cert/Test_MacScan.py index 731420138..2adfc207a 100755 --- a/tests/scripts/thread-cert/Test_MacScan.py +++ b/tests/scripts/thread-cert/Test_MacScan.py @@ -58,7 +58,7 @@ class Test_MacScan(unittest.TestCase): def tearDown(self): for node in list(self.nodes.values()): node.stop() - del self.nodes + node.destroy() def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/node.py b/tests/scripts/thread-cert/node.py index 8f37cdf86..15265d8f1 100755 --- a/tests/scripts/thread-cert/node.py +++ b/tests/scripts/thread-cert/node.py @@ -51,7 +51,12 @@ class Node: self.interface.set_timeout(100) def __del__(self): - del self.interface + self.destroy() + + def destroy(self): + if self.interface: + self.interface.destroy() + self.interface = None def set_mode(self, mode): self.interface.set_mode(mode) diff --git a/tests/scripts/thread-cert/node_cli.py b/tests/scripts/thread-cert/node_cli.py index 94538f3a5..2c5592a11 100644 --- a/tests/scripts/thread-cert/node_cli.py +++ b/tests/scripts/thread-cert/node_cli.py @@ -108,11 +108,15 @@ class otCli: self.pexpect = fdpexpect.fdspawn(os.open(serialPort, os.O_RDWR|os.O_NONBLOCK|os.O_NOCTTY)) def __del__(self): - if self.pexpect.isalive(): + self.destroy() + + def destroy(self): + if self.pexpect and self.pexpect.isalive(): self.send_command('exit') self.pexpect.expect(pexpect.EOF) self.pexpect.terminate() self.pexpect.close(force=True) + self.pexpect = None def send_command(self, cmd): print("%d: %s" % (self.nodeid, cmd)) diff --git a/tests/scripts/thread-cert/pcap.py b/tests/scripts/thread-cert/pcap.py new file mode 100644 index 000000000..d90225abc --- /dev/null +++ b/tests/scripts/thread-cert/pcap.py @@ -0,0 +1,69 @@ +# +# Copyright (c) 2018, The OpenThread Authors. +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +""" Module to provide codec utilities for .pcap formatters. """ + +import struct +import time + +DLT_IEEE802_15_4 = 195 +PCAP_MAGIC_NUMBER = 0xa1b2c3d4 +PCAP_VERSION_MAJOR = 2 +PCAP_VERSION_MINOR = 4 + + +class PcapCodec(object): + """ Utility class for .pcap formatters. """ + + def __init__(self, filename): + self._pcap_file = open('%s.pcap' % filename, 'wb') + self._pcap_file.write(self.encode_header()) + self._epoch = time.time() + + def encode_header(self): + """ Returns a pcap file header. """ + return struct.pack("$log_file 2>&1 +TEST_NAME="${test_name}" PORT_OFFSET=$OFFSET "$@" >$log_file 2>&1 estatus=$? # Return the offset