From e5069a41d5b444e4f9d6ccfc354049efd8282d75 Mon Sep 17 00:00:00 2001 From: Simon Lin Date: Thu, 30 Apr 2020 01:41:04 +0800 Subject: [PATCH] [scripts] update cert tests to use `thread_cert.TestCase` (#4874) - Update all test cases to inherit thread_cert.TestCase and update topologies accordingly. The topologies should all be correct because they are automatically generated, not hand written. - Use default Thread version: 1.1 - Cleanup node tmp files in tmp directory according to the current PORT_OFFSET in setUp. This is required by test_reed_address_solicit_rejected.py and test_coap_observe.py since they define multiple test functions in one TestCase. - Removed call to set_extaddr64 because it's not necessary and causing failures. --- .../thread-cert/Cert_5_1_01_RouterAttach.py | 42 +-- .../Cert_5_1_02_ChildAddressTimeout.py | 69 ++-- .../Cert_5_1_03_RouterAddressReallocation.py | 57 ++-- .../Cert_5_1_04_RouterAddressReallocation.py | 57 ++-- .../Cert_5_1_05_RouterAddressTimeout.py | 40 +-- .../thread-cert/Cert_5_1_06_RemoveRouterId.py | 44 +-- .../thread-cert/Cert_5_1_07_MaxChildCount.py | 124 ++++--- .../Cert_5_1_08_RouterAttachConnectivity.py | 84 ++--- .../Cert_5_1_09_REEDAttachConnectivity.py | 84 ++--- .../Cert_5_1_10_RouterAttachLinkQuality.py | 71 ++-- .../Cert_5_1_11_REEDAttachLinkQuality.py | 71 ++-- .../Cert_5_1_12_NewRouterNeighborSync.py | 55 ++- .../thread-cert/Cert_5_1_13_RouterReset.py | 40 +-- .../thread-cert/Cert_5_2_01_REEDAttach.py | 72 ++-- .../Cert_5_2_03_LeaderReject2Hops.py | 317 +++++++++++++++--- .../thread-cert/Cert_5_2_04_REEDUpgrade.py | 155 ++++++--- .../thread-cert/Cert_5_2_05_AddressQuery.py | 157 ++++++--- .../Cert_5_2_06_RouterDowngrade.py | 193 +++++++++-- .../Cert_5_2_07_REEDSynchronization.py | 113 +++++-- .../thread-cert/Cert_5_3_01_LinkLocal.py | 35 +- .../thread-cert/Cert_5_3_02_RealmLocal.py | 68 ++-- .../thread-cert/Cert_5_3_03_AddressQuery.py | 85 ++--- .../Cert_5_3_04_AddressMapCache.py | 94 +++--- .../Cert_5_3_05_RoutingLinkQuality.py | 71 ++-- .../thread-cert/Cert_5_3_06_RouterIdMask.py | 56 ++-- .../thread-cert/Cert_5_3_06b_RouterIdMask.py | 55 ++- .../Cert_5_3_07_DuplicateAddress.py | 90 +++-- .../Cert_5_3_08_ChildAddressSet.py | 63 ++-- .../thread-cert/Cert_5_3_09_AddressQuery.py | 81 ++--- .../thread-cert/Cert_5_3_10_AddressQuery.py | 81 ++--- ...ert_5_3_11_AddressQueryTimeoutIntervals.py | 53 ++- .../thread-cert/Cert_5_5_01_LeaderReboot.py | 41 +-- .../thread-cert/Cert_5_5_02_LeaderReboot.py | 54 ++- .../Cert_5_5_03_SplitMergeChildren.py | 89 +++-- .../Cert_5_5_04_SplitMergeRouters.py | 80 ++--- .../thread-cert/Cert_5_5_05_SplitMergeREED.py | 152 ++++++--- .../Cert_5_5_07_SplitMergeThreeWay.py | 66 ++-- .../Cert_5_5_08_SplitRoutersLostLeader.py | 79 ++--- ...1_NetworkDataRegisterBeforeAttachLeader.py | 67 ++-- ...2_NetworkDataRegisterBeforeAttachRouter.py | 67 ++-- ...03_NetworkDataRegisterAfterAttachLeader.py | 67 ++-- ...04_NetworkDataRegisterAfterAttachRouter.py | 67 ++-- ...05_NetworkDataRegisterAfterAttachRouter.py | 67 ++-- .../Cert_5_6_06_NetworkDataExpiration.py | 67 ++-- .../Cert_5_6_07_NetworkDataRequestREED.py | 55 ++- .../Cert_5_6_08_ContextManagement.py | 56 ++-- .../Cert_5_6_09_NetworkDataForwarding.py | 80 ++--- .../Cert_5_7_01_CoapDiagCommands_A.py | 84 ++--- .../Cert_5_8_01_KeySynchronization.py | 45 +-- .../thread-cert/Cert_5_8_02_KeyIncrement.py | 46 +-- .../Cert_5_8_03_KeyIncrementRollOver.py | 48 +-- .../thread-cert/Cert_6_1_01_RouterAttach.py | 41 +-- .../thread-cert/Cert_6_1_02_REEDAttach_MED.py | 55 ++- .../thread-cert/Cert_6_1_02_REEDAttach_SED.py | 55 ++- .../Cert_6_1_03_RouterAttachConnectivity.py | 83 ++--- .../Cert_6_1_04_REEDAttachConnectivity.py | 84 ++--- .../Cert_6_1_05_RouterAttachLinkQuality.py | 69 ++-- .../Cert_6_1_06_REEDAttachLinkQuality_ED.py | 69 ++-- .../Cert_6_1_06_REEDAttachLinkQuality_SED.py | 71 ++-- .../Cert_6_1_07_EDSynchronization.py | 88 ++--- .../thread-cert/Cert_6_2_01_NewPartition.py | 54 ++- .../thread-cert/Cert_6_2_02_NewPartition.py | 71 ++-- .../thread-cert/Cert_6_3_01_OrphanReattach.py | 56 ++-- .../Cert_6_3_02_NetworkDataUpdate.py | 43 +-- .../thread-cert/Cert_6_4_01_LinkLocal.py | 41 +-- .../thread-cert/Cert_6_4_02_RealmLocal.py | 55 ++- .../Cert_6_5_01_ChildResetSynchronize.py | 41 +-- .../Cert_6_5_02_ChildResetReattach.py | 40 +-- .../thread-cert/Cert_6_6_01_KeyIncrement.py | 45 +-- .../Cert_6_6_02_KeyIncrementRollOver.py | 47 +-- .../Cert_7_1_01_BorderRouterAsLeader.py | 69 ++-- .../Cert_7_1_02_BorderRouterAsRouter.py | 67 ++-- .../Cert_7_1_03_BorderRouterAsLeader.py | 67 ++-- .../Cert_7_1_04_BorderRouterAsRouter.py | 67 ++-- .../Cert_7_1_05_BorderRouterAsRouter.py | 67 ++-- .../thread-cert/Cert_8_1_01_Commissioning.py | 39 +-- .../thread-cert/Cert_8_1_02_Commissioning.py | 39 +-- .../thread-cert/Cert_8_2_01_JoinerRouter.py | 54 ++- .../thread-cert/Cert_8_2_02_JoinerRouter.py | 54 ++- .../Cert_9_2_02_MGMTCommissionerSet.py | 44 +-- .../thread-cert/Cert_9_2_04_ActiveDataset.py | 48 ++- .../thread-cert/Cert_9_2_07_DelayTimer.py | 72 ++-- .../Cert_9_2_08_PersistentDatasets.py | 97 +++--- .../Cert_9_2_09_PendingPartition.py | 98 +++--- .../Cert_9_2_10_PendingPartition.py | 106 +++--- .../thread-cert/Cert_9_2_11_MasterKey.py | 114 +++---- .../thread-cert/Cert_9_2_12_Announce.py | 106 +++--- .../thread-cert/Cert_9_2_13_EnergyScan.py | 67 ++-- .../thread-cert/Cert_9_2_14_PanIdQuery.py | 66 ++-- .../Cert_9_2_15_PendingPartition.py | 94 +++--- .../Cert_9_2_16_ActivePendingPartition.py | 94 +++--- .../scripts/thread-cert/Cert_9_2_17_Orphan.py | 72 ++-- .../Cert_9_2_18_RollBackActiveTimestamp.py | 136 ++++---- tests/scripts/thread-cert/Makefile.am | 2 + tests/scripts/thread-cert/Test_Cli.py | 16 +- tests/scripts/thread-cert/Test_MacScan.py | 44 +-- .../scripts/thread-cert/test_coap_observe.py | 47 +-- tests/scripts/thread-cert/test_coaps.py | 41 +-- tests/scripts/thread-cert/test_diag.py | 18 +- .../thread-cert/test_ipv6_fragmentation.py | 41 +-- .../thread-cert/test_ipv6_source_selection.py | 42 +-- .../test_reed_address_solicit_rejected.py | 36 +- tests/scripts/thread-cert/test_route_table.py | 55 ++- tests/scripts/thread-cert/test_service.py | 68 ++-- tests/scripts/thread-cert/thread_cert.py | 88 ++++- .../scripts/thread-cert/v1_2_router_5_1_1.py | 8 +- .../v1_2_test_enhanced_frame_pending.py | 5 +- .../v1_2_test_enhanced_keep_alive.py | 5 +- 108 files changed, 3564 insertions(+), 3851 deletions(-) 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 dafb2dd6e..05e9e042f 100755 --- a/tests/scripts/thread-cert/Cert_5_1_01_RouterAttach.py +++ b/tests/scripts/thread-cert/Cert_5_1_01_RouterAttach.py @@ -29,40 +29,28 @@ import unittest -import config import mle import network_layer -import node +import thread_cert LEADER = 1 ROUTER = 2 -class Cert_5_1_01_RouterAttach(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_1_01_RouterAttach(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + } 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 03734b218..33f3d3e7b 100755 --- a/tests/scripts/thread-cert/Cert_5_1_02_ChildAddressTimeout.py +++ b/tests/scripts/thread-cert/Cert_5_1_02_ChildAddressTimeout.py @@ -31,7 +31,7 @@ import unittest import config import mle -import node +import thread_cert LEADER = 1 ROUTER = 2 @@ -41,45 +41,34 @@ SED = 4 MTDS = [ED, SED] -class Cert_5_1_02_ChildAddressTimeout(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[SED].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - self.nodes[ED].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[ED].enable_whitelist() - - self.nodes[SED].set_panid(0xface) - self.nodes[SED].set_mode('sn') - self.nodes[SED].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - self.nodes[SED].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[SED].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_1_02_ChildAddressTimeout(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED, SED] + }, + ED: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + SED: { + 'is_mtd': True, + 'mode': 'sn', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + } 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 2ce8c0c6b..59a71a1cd 100755 --- a/tests/scripts/thread-cert/Cert_5_1_03_RouterAddressReallocation.py +++ b/tests/scripts/thread-cert/Cert_5_1_03_RouterAddressReallocation.py @@ -29,50 +29,35 @@ import unittest -import config import mle import network_layer -import node +import thread_cert LEADER = 1 ROUTER1 = 2 ROUTER2 = 3 -class Cert_5_1_03_RouterAddressReallocation(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 4): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER2].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_1_03_RouterAddressReallocation(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1, ROUTER2] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER2] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER1] + }, + } 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 605f55b45..327876ba4 100755 --- a/tests/scripts/thread-cert/Cert_5_1_04_RouterAddressReallocation.py +++ b/tests/scripts/thread-cert/Cert_5_1_04_RouterAddressReallocation.py @@ -29,50 +29,35 @@ import unittest -import config import mle import network_layer -import node +import thread_cert LEADER = 1 ROUTER1 = 2 ROUTER2 = 3 -class Cert_5_1_04_RouterAddressReallocation(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 4): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER2].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_1_04_RouterAddressReallocation(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1, ROUTER2] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER2] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER1] + }, + } 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 c61abbf1a..71e7da489 100755 --- a/tests/scripts/thread-cert/Cert_5_1_05_RouterAddressTimeout.py +++ b/tests/scripts/thread-cert/Cert_5_1_05_RouterAddressTimeout.py @@ -29,44 +29,34 @@ import unittest -import config import mle import network_layer -import node +import thread_cert LEADER = 1 ROUTER1 = 2 -class Cert_5_1_05_RouterAddressTimeout(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self._setUpRouter1() +class Cert_5_1_05_RouterAddressTimeout(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + } def _setUpRouter1(self): self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) self.nodes[ROUTER1].enable_whitelist() self.nodes[ROUTER1].set_router_selection_jitter(1) - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() - def test(self): self.nodes[LEADER].start() self.simulator.go(5) 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 9b642abb1..dc5e78a7e 100755 --- a/tests/scripts/thread-cert/Cert_5_1_06_RemoveRouterId.py +++ b/tests/scripts/thread-cert/Cert_5_1_06_RemoveRouterId.py @@ -30,40 +30,28 @@ import unittest import command -from command import CheckType -import config import mle -import node +import thread_cert +from command import CheckType LEADER = 1 ROUTER1 = 2 -class Cert_5_1_06_RemoveRouterId(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_1_06_RemoveRouterId(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + } 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 d87c3bb63..dcbc927e2 100755 --- a/tests/scripts/thread-cert/Cert_5_1_07_MaxChildCount.py +++ b/tests/scripts/thread-cert/Cert_5_1_07_MaxChildCount.py @@ -30,50 +30,98 @@ import unittest import config -import node +import thread_cert LEADER = 1 ROUTER = 2 SED1 = 7 -class Cert_5_1_07_MaxChildCount(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 13): - self.nodes[i] = node.Node(i, (i >= 3), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - self.nodes[ROUTER].set_max_children(10) - - for i in range(3, 13): - if i in range(3, 7): - self.nodes[i].set_mode('rsn') - else: - self.nodes[i].set_mode('s') - self.nodes[i].set_panid(0xface) - self.nodes[i].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[i].get_addr64()) - self.nodes[i].enable_whitelist() - self.nodes[i].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_1_07_MaxChildCount(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'max_children': 10, + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, 3, 4, 5, 6, SED1, 8, 9, 10, 11, 12] + }, + 3: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + 4: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + 5: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + 6: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + SED1: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + 8: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + 9: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + 10: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + 11: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + 12: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + } 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 4c3fa25f3..37cc93c5a 100755 --- a/tests/scripts/thread-cert/Cert_5_1_08_RouterAttachConnectivity.py +++ b/tests/scripts/thread-cert/Cert_5_1_08_RouterAttachConnectivity.py @@ -31,7 +31,7 @@ import unittest import config import mle -import node +import thread_cert LEADER = 1 ROUTER1 = 2 @@ -40,56 +40,38 @@ ROUTER3 = 4 ROUTER4 = 5 -class Cert_5_1_08_RouterAttachConnectivity(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 6): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER3].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER3].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER2].add_whitelist(self.nodes[ROUTER4].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - self.nodes[ROUTER3].set_panid(0xface) - self.nodes[ROUTER3].set_mode('rsdn') - self.nodes[ROUTER3].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER3].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ROUTER3].add_whitelist(self.nodes[ROUTER4].get_addr64()) - self.nodes[ROUTER3].enable_whitelist() - self.nodes[ROUTER3].set_router_selection_jitter(1) - - self.nodes[ROUTER4].set_panid(0xface) - self.nodes[ROUTER4].set_mode('rsdn') - self.nodes[ROUTER4].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ROUTER4].add_whitelist(self.nodes[ROUTER3].get_addr64()) - self.nodes[ROUTER4].enable_whitelist() - self.nodes[ROUTER4].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_1_08_RouterAttachConnectivity(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1, ROUTER2, ROUTER3] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER3] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER4] + }, + ROUTER3: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER1, ROUTER4] + }, + ROUTER4: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [ROUTER2, ROUTER3] + }, + } 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 b1fd33124..33c697682 100755 --- a/tests/scripts/thread-cert/Cert_5_1_09_REEDAttachConnectivity.py +++ b/tests/scripts/thread-cert/Cert_5_1_09_REEDAttachConnectivity.py @@ -31,7 +31,7 @@ import unittest import config import mle -import node +import thread_cert LEADER = 1 ROUTER1 = 2 @@ -40,56 +40,38 @@ REED1 = 4 ROUTER2 = 5 -class Cert_5_1_09_REEDAttachConnectivity(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 6): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[REED0].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[REED1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[REED1].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[REED0].set_panid(0xface) - self.nodes[REED0].set_mode('rsdn') - self.nodes[REED0].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[REED0].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[REED0].set_router_upgrade_threshold(0) - self.nodes[REED0].enable_whitelist() - - self.nodes[REED1].set_panid(0xface) - self.nodes[REED1].set_mode('rsdn') - self.nodes[REED1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[REED1].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[REED1].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[REED1].set_router_upgrade_threshold(0) - self.nodes[REED1].enable_whitelist() - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[REED0].get_addr64()) - self.nodes[ROUTER2].add_whitelist(self.nodes[REED1].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_1_09_REEDAttachConnectivity(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1, REED0, REED1] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, REED1] + }, + REED0: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_upgrade_threshold': 0, + 'whitelist': [LEADER, ROUTER2] + }, + REED1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_upgrade_threshold': 0, + 'whitelist': [LEADER, ROUTER1, ROUTER2] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [REED0, REED1] + }, + } 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 6a32821cd..fc55c8d29 100755 --- a/tests/scripts/thread-cert/Cert_5_1_10_RouterAttachLinkQuality.py +++ b/tests/scripts/thread-cert/Cert_5_1_10_RouterAttachLinkQuality.py @@ -29,9 +29,8 @@ import unittest -import config import mle -import node +import thread_cert LEADER = 1 ROUTER1 = 2 @@ -39,48 +38,32 @@ ROUTER2 = 3 ROUTER3 = 4 -class Cert_5_1_10_RouterAttachLinkQuality(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER3].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER2].add_whitelist(self.nodes[ROUTER3].get_addr64(), - rssi=-85) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - self.nodes[ROUTER3].set_panid(0xface) - self.nodes[ROUTER3].set_mode('rsdn') - self.nodes[ROUTER3].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ROUTER3].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ROUTER3].enable_whitelist() - self.nodes[ROUTER3].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_1_10_RouterAttachLinkQuality(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1, ROUTER2] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER3] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, (ROUTER3, -85)] + }, + ROUTER3: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [ROUTER1, ROUTER2] + }, + } 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 412dada4d..7a3cd4ccb 100755 --- a/tests/scripts/thread-cert/Cert_5_1_11_REEDAttachLinkQuality.py +++ b/tests/scripts/thread-cert/Cert_5_1_11_REEDAttachLinkQuality.py @@ -29,9 +29,8 @@ import unittest -import config import mle -import node +import thread_cert LEADER = 1 REED = 2 @@ -39,48 +38,32 @@ ROUTER2 = 3 ROUTER1 = 4 -class Cert_5_1_11_REEDAttachLinkQuality(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[REED].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[REED].set_panid(0xface) - self.nodes[REED].set_mode('rsdn') - self.nodes[REED].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[REED].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[REED].set_router_upgrade_threshold(0) - self.nodes[REED].enable_whitelist() - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER2].add_whitelist(self.nodes[ROUTER1].get_addr64(), - rssi=-85) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[REED].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_1_11_REEDAttachLinkQuality(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [REED, ROUTER2] + }, + REED: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_upgrade_threshold': 0, + 'whitelist': [LEADER, ROUTER1] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, (ROUTER1, -85)] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [REED, ROUTER2] + }, + } 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 f8ccdaa24..adea84c11 100755 --- a/tests/scripts/thread-cert/Cert_5_1_12_NewRouterNeighborSync.py +++ b/tests/scripts/thread-cert/Cert_5_1_12_NewRouterNeighborSync.py @@ -29,47 +29,34 @@ import unittest -import config import mle -import node +import thread_cert LEADER = 1 ROUTER1 = 2 ROUTER2 = 3 -class Cert_5_1_12_NewRouterSync(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 4): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_1_12_NewRouterSync(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1, ROUTER2] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + } def verify_step_4(self, router1_messages, router2_messages, req_receiver, accept_receiver): 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 ed94bd7f3..90331f2ff 100755 --- a/tests/scripts/thread-cert/Cert_5_1_13_RouterReset.py +++ b/tests/scripts/thread-cert/Cert_5_1_13_RouterReset.py @@ -29,43 +29,33 @@ import unittest -import config import mle -import node +import thread_cert LEADER = 1 ROUTER = 2 -class Cert_5_1_13_RouterReset(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self._setUpRouter() +class Cert_5_1_13_RouterReset(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + } def _setUpRouter(self): self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) self.nodes[ROUTER].enable_whitelist() self.nodes[ROUTER].set_router_selection_jitter(1) - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() - def test(self): self.nodes[LEADER].start() self.simulator.go(5) 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 a1d2682cf..fc27c34f6 100755 --- a/tests/scripts/thread-cert/Cert_5_2_01_REEDAttach.py +++ b/tests/scripts/thread-cert/Cert_5_2_01_REEDAttach.py @@ -29,10 +29,10 @@ import unittest -import node -import mle -import config import command +import config +import mle +import thread_cert LEADER = 1 DUT_ROUTER1 = 2 @@ -40,45 +40,33 @@ REED1 = 3 MED1 = 4 -class Cert_5_2_01_REEDAttach(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, i == MED1, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[DUT_ROUTER1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[DUT_ROUTER1].set_panid(0xface) - self.nodes[DUT_ROUTER1].set_mode('rsdn') - self.nodes[DUT_ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[DUT_ROUTER1].add_whitelist(self.nodes[REED1].get_addr64()) - self.nodes[DUT_ROUTER1].enable_whitelist() - self.nodes[DUT_ROUTER1].set_router_selection_jitter(1) - - self.nodes[REED1].set_panid(0xface) - self.nodes[REED1].set_mode('rsdn') - self.nodes[REED1].add_whitelist(self.nodes[DUT_ROUTER1].get_addr64()) - self.nodes[REED1].add_whitelist(self.nodes[MED1].get_addr64()) - self.nodes[REED1].enable_whitelist() - self.nodes[REED1].set_router_selection_jitter(1) - self.nodes[REED1].set_router_upgrade_threshold(1) - - self.nodes[MED1].set_panid(0xface) - self.nodes[MED1].set_mode('rsn') - self.nodes[MED1].add_whitelist(self.nodes[REED1].get_addr64()) - self.nodes[MED1].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_2_01_REEDAttach(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [DUT_ROUTER1] + }, + DUT_ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, REED1] + }, + REED1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 1, + 'whitelist': [DUT_ROUTER1, MED1] + }, + MED1: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [REED1] + }, + } 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 5bee43bd6..548ca4d80 100755 --- a/tests/scripts/thread-cert/Cert_5_2_03_LeaderReject2Hops.py +++ b/tests/scripts/thread-cert/Cert_5_2_03_LeaderReject2Hops.py @@ -29,10 +29,9 @@ import unittest -import node import mle import network_layer -import config +import thread_cert DUT_LEADER = 1 ROUTER_1 = 2 @@ -40,46 +39,280 @@ ROUTER_31 = 32 ROUTER_32 = 33 -class Cert_5_2_3_LeaderReject2Hops(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - - self.nodes[DUT_LEADER] = node.Node(DUT_LEADER, simulator=self.simulator) - self.nodes[DUT_LEADER].set_panid(0xface) - self.nodes[DUT_LEADER].set_mode('rsdn') - self.nodes[DUT_LEADER].enable_whitelist() - self.nodes[DUT_LEADER].set_router_upgrade_threshold(32) - self.nodes[DUT_LEADER].set_router_downgrade_threshold(33) - - for i in range(2, 33): - self.nodes[i] = node.Node(i, simulator=self.simulator) - self.nodes[i].set_panid(0xface) - self.nodes[i].set_mode('rsdn') - self.nodes[i].add_whitelist(self.nodes[DUT_LEADER].get_addr64()) - self.nodes[DUT_LEADER].add_whitelist(self.nodes[i].get_addr64()) - self.nodes[i].enable_whitelist() - self.nodes[i].set_router_upgrade_threshold(33) - self.nodes[i].set_router_downgrade_threshold(33) - self.nodes[i].set_router_selection_jitter(1) - - self.nodes[ROUTER_32] = node.Node(ROUTER_32, simulator=self.simulator) - self.nodes[ROUTER_32].set_panid(0xface) - self.nodes[ROUTER_32].set_mode('rsdn') - self.nodes[ROUTER_32].add_whitelist(self.nodes[ROUTER_1].get_addr64()) - self.nodes[ROUTER_1].add_whitelist(self.nodes[ROUTER_32].get_addr64()) - self.nodes[ROUTER_32].enable_whitelist() - self.nodes[ROUTER_32].set_router_upgrade_threshold(33) - self.nodes[ROUTER_32].set_router_downgrade_threshold(33) - self.nodes[ROUTER_32].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_2_3_LeaderReject2Hops(thread_cert.TestCase): + topology = { + DUT_LEADER: { + 'mode': + 'rsdn', + 'panid': + 0xface, + 'router_downgrade_threshold': + 33, + 'router_upgrade_threshold': + 32, + 'whitelist': [ + ROUTER_1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + ROUTER_31 + ] + }, + ROUTER_1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER, ROUTER_32] + }, + 3: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 4: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 5: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 6: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 7: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 8: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 9: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 10: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 11: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 12: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 13: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 14: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 15: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 16: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 17: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 18: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 19: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 20: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 21: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 22: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 23: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 24: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 25: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 26: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 27: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 28: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 29: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 30: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + 31: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + ROUTER_31: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [DUT_LEADER] + }, + ROUTER_32: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 33, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 33, + 'whitelist': [ROUTER_1] + }, + } 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 78dea46ca..fb8e9f6d5 100755 --- a/tests/scripts/thread-cert/Cert_5_2_04_REEDUpgrade.py +++ b/tests/scripts/thread-cert/Cert_5_2_04_REEDUpgrade.py @@ -29,10 +29,9 @@ import unittest -import node import mle import network_layer -import config +import thread_cert LEADER = 1 ROUTER = 16 @@ -45,45 +44,119 @@ REED_ADVERTISEMENT_MAX_JITTER = 60 ROUTER_SELECTION_JITTER = 1 -class Cert_5_2_4_REEDUpgrade(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 19): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].enable_whitelist() - - for i in range(2, 17): - self.nodes[i].set_panid(0xface) - self.nodes[i].set_mode('rsdn') - self.nodes[i].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[i].get_addr64()) - self.nodes[i].enable_whitelist() - self.nodes[i].set_router_selection_jitter(1) - - self.nodes[DUT_REED].set_panid(0xface) - self.nodes[DUT_REED].set_mode('rsdn') - self.nodes[DUT_REED].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[DUT_REED].get_addr64()) - self.nodes[DUT_REED].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[DUT_REED].enable_whitelist() - self.nodes[DUT_REED].set_router_selection_jitter(1) - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsdn') - self.nodes[ED].add_whitelist(self.nodes[DUT_REED].get_addr64()) - self.nodes[ED].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_2_4_REEDUpgrade(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': + 'rsdn', + 'panid': + 0xface, + 'whitelist': [ + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, ROUTER + ] + }, + 2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 3: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 4: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 5: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 6: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 7: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 8: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 9: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 10: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 11: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 12: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 13: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 14: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 15: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, DUT_REED] + }, + DUT_REED: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [ROUTER, ED] + }, + ED: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [DUT_REED] + }, + } 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 393659e01..5fb04a627 100755 --- a/tests/scripts/thread-cert/Cert_5_2_05_AddressQuery.py +++ b/tests/scripts/thread-cert/Cert_5_2_05_AddressQuery.py @@ -29,9 +29,9 @@ import unittest -import node -import config import command +import config +import thread_cert LEADER = 1 ROUTER1 = 2 @@ -41,45 +41,120 @@ DUT_REED = 18 ROUTER_SELECTION_JITTER = 1 -class Cert_5_2_5_AddressQuery(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 19): - self.nodes[i] = node.Node(i, (i == ED1), simulator=self.simulator) - - self.nodes[LEADER].set_panid() - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].enable_whitelist() - - for i in range(2, 17): - self.nodes[i].set_panid() - self.nodes[i].set_mode('rsdn') - self.nodes[i].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[i].get_addr64()) - self.nodes[i].enable_whitelist() - self.nodes[i].set_router_selection_jitter(1) - - self.nodes[ED1].set_panid() - self.nodes[ED1].set_mode('rsn') - self.nodes[ED1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ED1].get_addr64()) - self.nodes[ED1].enable_whitelist() - - self.nodes[DUT_REED].set_panid() - self.nodes[DUT_REED].set_mode('rsdn') - self.nodes[DUT_REED].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[DUT_REED].get_addr64()) - self.nodes[DUT_REED].enable_whitelist() - self.nodes[DUT_REED].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_2_5_AddressQuery(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': + 'rsdn', + 'panid': + 0xface, + 'whitelist': [ + ROUTER1, BR, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ED1 + ] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, DUT_REED] + }, + BR: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 4: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 5: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 6: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 7: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 8: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 9: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 10: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 11: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 12: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 13: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 14: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 15: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 16: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + ED1: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [LEADER] + }, + DUT_REED: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [ROUTER1] + }, + } 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 2ef104cb7..6d8d9af66 100755 --- a/tests/scripts/thread-cert/Cert_5_2_06_RouterDowngrade.py +++ b/tests/scripts/thread-cert/Cert_5_2_06_RouterDowngrade.py @@ -29,10 +29,10 @@ import unittest -import node -import config import command +import config import mle +import thread_cert LEADER = 1 DUT_ROUTER1 = 2 @@ -40,26 +40,175 @@ ROUTER2 = 3 ROUTER24 = 24 -class Cert_5_2_06_RouterDowngrade(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 25): - self.nodes[i] = node.Node(i, simulator=self.simulator) - self.nodes[i].set_panid() - self.nodes[i].set_mode('rsdn') - self.nodes[i].set_router_selection_jitter(1) - if i != DUT_ROUTER1: - self.nodes[i].set_router_upgrade_threshold(32) - self.nodes[i].set_router_downgrade_threshold(32) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_2_06_RouterDowngrade(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + DUT_ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 4: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 5: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 6: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 7: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 8: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 9: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 10: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 11: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 12: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 13: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 14: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 15: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 16: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 17: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 18: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 19: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 20: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 21: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 22: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + 23: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + ROUTER24: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_downgrade_threshold': 32, + 'router_selection_jitter': 1, + 'router_upgrade_threshold': 32 + }, + } 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 8752ab66e..ef467e6a7 100755 --- a/tests/scripts/thread-cert/Cert_5_2_07_REEDSynchronization.py +++ b/tests/scripts/thread-cert/Cert_5_2_07_REEDSynchronization.py @@ -28,12 +28,12 @@ # import unittest -import ipv6 -import node -import mle -import config import command +import config +import ipv6 +import mle +import thread_cert LEADER = 1 DUT_ROUTER1 = 2 @@ -42,23 +42,94 @@ DUT_REED = 17 MLE_MIN_LINKS = 3 -class Cert_5_2_7_REEDSynchronization(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 18): - self.nodes[i] = node.Node(i, simulator=self.simulator) - self.nodes[i].set_panid(0xface) - self.nodes[i].set_mode('rsdn') - self.nodes[i].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_2_7_REEDSynchronization(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + DUT_ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + 3: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + 4: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + 5: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + 6: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + 7: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + 8: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + 9: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + 10: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + 11: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + 12: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + 13: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + 14: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + 15: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + 16: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + DUT_REED: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + } 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 5a2df87ad..0ab4d0b8f 100755 --- a/tests/scripts/thread-cert/Cert_5_3_01_LinkLocal.py +++ b/tests/scripts/thread-cert/Cert_5_3_01_LinkLocal.py @@ -29,34 +29,25 @@ import unittest -import node import config +import thread_cert LEADER = 1 DUT_ROUTER1 = 2 -class Cert_5_3_1_LinkLocal(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - - self.nodes[DUT_ROUTER1].set_panid(0xface) - self.nodes[DUT_ROUTER1].set_mode('rsdn') - self.nodes[DUT_ROUTER1].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_3_1_LinkLocal(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface + }, + DUT_ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + } 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 bb7e9aafd..bd9527fef 100755 --- a/tests/scripts/thread-cert/Cert_5_3_02_RealmLocal.py +++ b/tests/scripts/thread-cert/Cert_5_3_02_RealmLocal.py @@ -29,8 +29,8 @@ import unittest -import node import config +import thread_cert LEADER = 1 ROUTER1 = 2 @@ -38,45 +38,33 @@ DUT_ROUTER2 = 3 SED1 = 4 -class Cert_5_3_2_RealmLocal(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i == SED1), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[DUT_ROUTER2].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[DUT_ROUTER2].set_panid(0xface) - self.nodes[DUT_ROUTER2].set_mode('rsdn') - self.nodes[DUT_ROUTER2].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[DUT_ROUTER2].add_whitelist(self.nodes[SED1].get_addr64()) - self.nodes[DUT_ROUTER2].enable_whitelist() - self.nodes[DUT_ROUTER2].set_router_selection_jitter(1) - - self.nodes[SED1].set_panid(0xface) - self.nodes[SED1].set_mode('sn') - self.nodes[SED1].add_whitelist(self.nodes[DUT_ROUTER2].get_addr64()) - self.nodes[SED1].enable_whitelist() - self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_3_2_RealmLocal(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, DUT_ROUTER2] + }, + DUT_ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [ROUTER1, SED1] + }, + SED1: { + 'is_mtd': True, + 'mode': 'sn', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [DUT_ROUTER2] + }, + } 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 3403a702f..4282e09cd 100755 --- a/tests/scripts/thread-cert/Cert_5_3_03_AddressQuery.py +++ b/tests/scripts/thread-cert/Cert_5_3_03_AddressQuery.py @@ -29,9 +29,9 @@ import unittest -import node -import config import command +import config +import thread_cert LEADER = 1 ROUTER1 = 2 @@ -41,54 +41,39 @@ MED1 = 5 MED1_TIMEOUT = 3 -class Cert_5_3_3_AddressQuery(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 6): - self.nodes[i] = node.Node(i, (i == MED1), simulator=self.simulator) - - self.nodes[LEADER].set_panid() - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[DUT_ROUTER2].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER3].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid() - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[DUT_ROUTER2].set_panid() - self.nodes[DUT_ROUTER2].set_mode('rsdn') - self.nodes[DUT_ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[DUT_ROUTER2].add_whitelist(self.nodes[ROUTER3].get_addr64()) - self.nodes[DUT_ROUTER2].add_whitelist(self.nodes[MED1].get_addr64()) - self.nodes[DUT_ROUTER2].enable_whitelist() - self.nodes[DUT_ROUTER2].set_router_selection_jitter(1) - - self.nodes[ROUTER3].set_panid() - self.nodes[ROUTER3].set_mode('rsdn') - self.nodes[ROUTER3].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER3].add_whitelist(self.nodes[DUT_ROUTER2].get_addr64()) - self.nodes[ROUTER3].enable_whitelist() - self.nodes[ROUTER3].set_router_selection_jitter(1) - - self.nodes[MED1].set_panid() - self.nodes[MED1].set_mode('rsn') - self.nodes[MED1].add_whitelist(self.nodes[DUT_ROUTER2].get_addr64()) - self.nodes[MED1].set_timeout(MED1_TIMEOUT) - self.nodes[MED1].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_3_3_AddressQuery(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1, DUT_ROUTER2, ROUTER3] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + DUT_ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER3, MED1] + }, + ROUTER3: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, DUT_ROUTER2] + }, + MED1: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'timeout': 3, + 'whitelist': [DUT_ROUTER2] + }, + } 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 277ec4772..dc5c6d0e8 100755 --- a/tests/scripts/thread-cert/Cert_5_3_04_AddressMapCache.py +++ b/tests/scripts/thread-cert/Cert_5_3_04_AddressMapCache.py @@ -29,9 +29,9 @@ import unittest -import node -import config import command +import config +import thread_cert LEADER = 1 DUT_ROUTER1 = 2 @@ -44,51 +44,51 @@ ED4 = 7 MTDS = [SED1, ED1, ED2, ED3, ED4] -class Cert_5_3_4_AddressMapCache(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 8): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[DUT_ROUTER1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ED1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ED2].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ED3].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ED4].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[DUT_ROUTER1].set_panid(0xface) - self.nodes[DUT_ROUTER1].set_mode('rsdn') - self.nodes[DUT_ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[DUT_ROUTER1].add_whitelist(self.nodes[SED1].get_addr64()) - self.nodes[DUT_ROUTER1].enable_whitelist() - self.nodes[DUT_ROUTER1].set_router_selection_jitter(1) - - self.nodes[SED1].set_panid(0xface) - self.nodes[SED1].set_mode('s') - self.nodes[SED1].add_whitelist(self.nodes[DUT_ROUTER1].get_addr64()) - - # Set the SED1's timeout in order to receive the icmp reply when keep - # alive with DUT_ROUTER. - self.nodes[SED1].set_timeout(5) - self.nodes[SED1].enable_whitelist() - - for ED in [ED1, ED2, ED3, ED4]: - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ED].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_3_4_AddressMapCache(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [DUT_ROUTER1, ED1, ED2, ED3, ED4] + }, + DUT_ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, SED1] + }, + SED1: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': 5, + 'whitelist': [DUT_ROUTER1] + }, + ED1: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [LEADER] + }, + ED2: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [LEADER] + }, + ED3: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [LEADER] + }, + ED4: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [LEADER] + }, + } 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 fcbc7f263..4dba2647e 100755 --- a/tests/scripts/thread-cert/Cert_5_3_05_RoutingLinkQuality.py +++ b/tests/scripts/thread-cert/Cert_5_3_05_RoutingLinkQuality.py @@ -29,9 +29,9 @@ import unittest -import node -import config import command +import config +import thread_cert LEADER = 1 DUT_ROUTER1 = 2 @@ -39,47 +39,32 @@ ROUTER2 = 3 ROUTER3 = 4 -class Cert_5_3_5_RoutingLinkQuality(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[DUT_ROUTER1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[DUT_ROUTER1].set_panid(0xface) - self.nodes[DUT_ROUTER1].set_mode('rsdn') - self.nodes[DUT_ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[DUT_ROUTER1].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[DUT_ROUTER1].add_whitelist(self.nodes[ROUTER3].get_addr64()) - self.nodes[DUT_ROUTER1].enable_whitelist() - self.nodes[DUT_ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER2].add_whitelist(self.nodes[DUT_ROUTER1].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - self.nodes[ROUTER3].set_panid(0xface) - self.nodes[ROUTER3].set_mode('rsdn') - self.nodes[ROUTER3].add_whitelist(self.nodes[DUT_ROUTER1].get_addr64()) - self.nodes[ROUTER3].enable_whitelist() - self.nodes[ROUTER3].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_3_5_RoutingLinkQuality(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [DUT_ROUTER1, ROUTER2] + }, + DUT_ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER2, ROUTER3] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, DUT_ROUTER1] + }, + ROUTER3: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [DUT_ROUTER1] + }, + } 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 66fd8d4a5..19cb7d485 100755 --- a/tests/scripts/thread-cert/Cert_5_3_06_RouterIdMask.py +++ b/tests/scripts/thread-cert/Cert_5_3_06_RouterIdMask.py @@ -29,52 +29,42 @@ import unittest -import node -import mle -import config import command +import config +import mle +import thread_cert DUT_LEADER = 1 ROUTER1 = 2 ROUTER2 = 3 -class Cert_5_3_6_RouterIdMask(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 4): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[DUT_LEADER].set_panid(0xface) - self.nodes[DUT_LEADER].set_mode('rsdn') - self.nodes[DUT_LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[DUT_LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[DUT_LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self._setUpRouter2() +class Cert_5_3_6_RouterIdMask(thread_cert.TestCase): + topology = { + DUT_LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [DUT_LEADER, ROUTER2] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [ROUTER1] + }, + } def _setUpRouter2(self): self.nodes[ROUTER2].add_whitelist(self.nodes[ROUTER1].get_addr64()) self.nodes[ROUTER2].enable_whitelist() self.nodes[ROUTER2].set_router_selection_jitter(1) - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() - def test(self): # 1 self.nodes[DUT_LEADER].start() 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 892a2f037..856e688c8 100755 --- a/tests/scripts/thread-cert/Cert_5_3_06b_RouterIdMask.py +++ b/tests/scripts/thread-cert/Cert_5_3_06b_RouterIdMask.py @@ -29,46 +29,33 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ROUTER1 = 2 ROUTER2 = 3 -class Cert_5_3_6_RouterIdMask(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 4): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_3_6_RouterIdMask(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER2] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [ROUTER1] + }, + } 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 14b63c027..9038073a7 100755 --- a/tests/scripts/thread-cert/Cert_5_3_07_DuplicateAddress.py +++ b/tests/scripts/thread-cert/Cert_5_3_07_DuplicateAddress.py @@ -29,10 +29,10 @@ import unittest -import node import command import config import mle +import thread_cert DUT_LEADER = 1 ROUTER1 = 2 @@ -44,56 +44,44 @@ MED3 = 6 MTDS = [MED1, SED1, MED3] -class Cert_5_3_7_DuplicateAddress(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 7): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[DUT_LEADER].set_panid(0xface) - self.nodes[DUT_LEADER].set_mode('rsdn') - self.nodes[DUT_LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[DUT_LEADER].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[DUT_LEADER].add_whitelist(self.nodes[MED3].get_addr64()) - self.nodes[DUT_LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[DUT_LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[MED1].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[DUT_LEADER].get_addr64()) - self.nodes[ROUTER2].add_whitelist(self.nodes[SED1].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - self.nodes[MED1].set_panid(0xface) - self.nodes[MED1].set_mode('rsn') - self.nodes[MED1].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[MED1].enable_whitelist() - - self.nodes[SED1].set_panid(0xface) - self.nodes[SED1].set_mode('s') - self.nodes[SED1].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[SED1].enable_whitelist() - - self.nodes[MED3].set_panid(0xface) - self.nodes[MED3].set_mode('rsn') - self.nodes[MED3].add_whitelist(self.nodes[DUT_LEADER].get_addr64()) - self.nodes[MED3].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_3_7_DuplicateAddress(thread_cert.TestCase): + topology = { + DUT_LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1, ROUTER2, MED3] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [DUT_LEADER, MED1] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [DUT_LEADER, SED1] + }, + MED1: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER1] + }, + SED1: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'whitelist': [ROUTER2] + }, + MED3: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [DUT_LEADER] + }, + } 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 f8370fffa..6e841a619 100755 --- a/tests/scripts/thread-cert/Cert_5_3_08_ChildAddressSet.py +++ b/tests/scripts/thread-cert/Cert_5_3_08_ChildAddressSet.py @@ -29,11 +29,11 @@ import unittest -import config import command +import config import ipv6 import mle -import node +import thread_cert DUT_LEADER = 1 BR = 2 @@ -43,39 +43,32 @@ MED2 = 4 MTDS = [MED1, MED2] -class Cert_5_3_8_ChildAddressSet(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[DUT_LEADER].set_panid(0xface) - self.nodes[DUT_LEADER].set_mode('rsdn') - self.nodes[DUT_LEADER].add_whitelist(self.nodes[BR].get_addr64()) - self.nodes[DUT_LEADER].add_whitelist(self.nodes[MED1].get_addr64()) - self.nodes[DUT_LEADER].add_whitelist(self.nodes[MED2].get_addr64()) - self.nodes[DUT_LEADER].enable_whitelist() - - self.nodes[BR].set_panid(0xface) - self.nodes[BR].set_mode('rsdn') - self.nodes[BR].add_whitelist(self.nodes[DUT_LEADER].get_addr64()) - self.nodes[BR].enable_whitelist() - self.nodes[BR].set_router_selection_jitter(1) - - for i in MTDS: - self.nodes[i].set_panid(0xface) - self.nodes[i].set_mode('rsn') - self.nodes[i].add_whitelist(self.nodes[DUT_LEADER].get_addr64()) - self.nodes[i].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_3_8_ChildAddressSet(thread_cert.TestCase): + topology = { + DUT_LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [BR, MED1, MED2] + }, + BR: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [DUT_LEADER] + }, + MED1: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [DUT_LEADER] + }, + MED2: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [DUT_LEADER] + }, + } 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 d898c6de2..d9c4bc6a1 100755 --- a/tests/scripts/thread-cert/Cert_5_3_09_AddressQuery.py +++ b/tests/scripts/thread-cert/Cert_5_3_09_AddressQuery.py @@ -33,7 +33,7 @@ import unittest import command import config import ipv6 -import node +import thread_cert LEADER = 1 ROUTER1 = 2 @@ -42,52 +42,39 @@ ROUTER3 = 4 SED1 = 5 -class Cert_5_3_09_AddressQuery(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 6): - self.nodes[i] = node.Node(i, (i == SED1), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[DUT_ROUTER2].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER3].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[DUT_ROUTER2].set_panid(0xface) - self.nodes[DUT_ROUTER2].set_mode('rsdn') - self.nodes[DUT_ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[DUT_ROUTER2].add_whitelist(self.nodes[SED1].get_addr64()) - self.nodes[DUT_ROUTER2].enable_whitelist() - self.nodes[DUT_ROUTER2].set_router_selection_jitter(1) - - self.nodes[ROUTER3].set_panid(0xface) - self.nodes[ROUTER3].set_mode('rsdn') - self.nodes[ROUTER3].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER3].enable_whitelist() - self.nodes[ROUTER3].set_router_selection_jitter(1) - - self.nodes[SED1].set_panid(0xface) - self.nodes[SED1].set_mode('s') - self.nodes[SED1].add_whitelist(self.nodes[DUT_ROUTER2].get_addr64()) - self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - self.nodes[SED1].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_3_09_AddressQuery(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1, DUT_ROUTER2, ROUTER3] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + DUT_ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, SED1] + }, + ROUTER3: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + SED1: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [DUT_ROUTER2] + }, + } 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 7aee11511..fce8d3838 100755 --- a/tests/scripts/thread-cert/Cert_5_3_10_AddressQuery.py +++ b/tests/scripts/thread-cert/Cert_5_3_10_AddressQuery.py @@ -33,7 +33,7 @@ import unittest import command import config import ipv6 -import node +import thread_cert LEADER = 1 BR = 2 @@ -42,53 +42,38 @@ DUT_ROUTER2 = 4 MED1 = 5 -class Cert_5_3_10_AddressQuery(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 6): - self.nodes[i] = node.Node(i, (i == MED1), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[BR].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[DUT_ROUTER2].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[BR].set_panid(0xface) - self.nodes[BR].set_mode('rsdn') - self.nodes[BR].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[BR].enable_whitelist() - self.nodes[BR].set_router_selection_jitter(1) - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[DUT_ROUTER2].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[DUT_ROUTER2].set_panid(0xface) - self.nodes[DUT_ROUTER2].set_mode('rsdn') - self.nodes[DUT_ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[DUT_ROUTER2].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[DUT_ROUTER2].add_whitelist(self.nodes[MED1].get_addr64()) - self.nodes[DUT_ROUTER2].enable_whitelist() - self.nodes[DUT_ROUTER2].set_router_selection_jitter(1) - - self.nodes[MED1].set_panid(0xface) - self.nodes[MED1].set_mode('rsn') - self.nodes[MED1].add_whitelist(self.nodes[DUT_ROUTER2].get_addr64()) - self.nodes[MED1].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_3_10_AddressQuery(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [BR, ROUTER1, DUT_ROUTER2] + }, + BR: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, DUT_ROUTER2] + }, + DUT_ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER1, MED1] + }, + MED1: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [DUT_ROUTER2] + }, + } 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 6b97b141e..768b123ef 100755 --- a/tests/scripts/thread-cert/Cert_5_3_11_AddressQueryTimeoutIntervals.py +++ b/tests/scripts/thread-cert/Cert_5_3_11_AddressQueryTimeoutIntervals.py @@ -31,44 +31,33 @@ import unittest import command import config -import node +import thread_cert LEADER = 1 DUT_ROUTER1 = 2 MED1 = 3 -class Cert_5_3_11_AddressQueryTimeoutIntervals(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 4): - self.nodes[i] = node.Node(i, (i == MED1), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[DUT_ROUTER1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[DUT_ROUTER1].set_panid(0xface) - self.nodes[DUT_ROUTER1].set_mode('rsdn') - self.nodes[DUT_ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[DUT_ROUTER1].add_whitelist(self.nodes[MED1].get_addr64()) - self.nodes[DUT_ROUTER1].enable_whitelist() - self.nodes[DUT_ROUTER1].set_router_selection_jitter(1) - - self.nodes[MED1].set_panid(0xface) - self.nodes[MED1].set_mode('rsn') - self.nodes[MED1].add_whitelist(self.nodes[DUT_ROUTER1].get_addr64()) - self.nodes[MED1].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_3_11_AddressQueryTimeoutIntervals(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [DUT_ROUTER1] + }, + DUT_ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, MED1] + }, + MED1: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [DUT_ROUTER1] + }, + } 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 a287f89cb..1678bdd63 100755 --- a/tests/scripts/thread-cert/Cert_5_5_01_LeaderReboot.py +++ b/tests/scripts/thread-cert/Cert_5_5_01_LeaderReboot.py @@ -33,43 +33,32 @@ import unittest import command import config import mle -import node +import thread_cert DUT_LEADER = 1 DUT_ROUTER1 = 2 -class Cert_5_5_1_LeaderReboot(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[DUT_LEADER].set_panid(0xface) - self.nodes[DUT_LEADER].set_mode('rsdn') - self._setUpLeader() - - self.nodes[DUT_ROUTER1].set_panid(0xface) - self.nodes[DUT_ROUTER1].set_mode('rsdn') - self.nodes[DUT_ROUTER1].add_whitelist( - self.nodes[DUT_LEADER].get_addr64()) - self.nodes[DUT_ROUTER1].enable_whitelist() - self.nodes[DUT_ROUTER1].set_router_selection_jitter(1) +class Cert_5_5_1_LeaderReboot(thread_cert.TestCase): + topology = { + DUT_LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [DUT_ROUTER1] + }, + DUT_ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [DUT_LEADER] + }, + } def _setUpLeader(self): self.nodes[DUT_LEADER].add_whitelist( self.nodes[DUT_ROUTER1].get_addr64()) self.nodes[DUT_LEADER].enable_whitelist() - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() - def test(self): # 1 ALL: Build and verify the topology self.nodes[DUT_LEADER].start() 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 047cff40b..f43b0a8bd 100755 --- a/tests/scripts/thread-cert/Cert_5_5_02_LeaderReboot.py +++ b/tests/scripts/thread-cert/Cert_5_5_02_LeaderReboot.py @@ -29,50 +29,40 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ROUTER = 2 ED = 3 -class Cert_5_5_2_LeaderReboot(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 4): - self.nodes[i] = node.Node(i, (i == ED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self._setUpLeader() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[ED].enable_whitelist() +class Cert_5_5_2_LeaderReboot(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED] + }, + ED: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + } def _setUpLeader(self): self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) self.nodes[LEADER].enable_whitelist() self.nodes[LEADER].set_router_selection_jitter(1) - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() - def test(self): self.nodes[LEADER].start() self.simulator.go(5) 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 653858f27..d9f9a0316 100755 --- a/tests/scripts/thread-cert/Cert_5_5_03_SplitMergeChildren.py +++ b/tests/scripts/thread-cert/Cert_5_5_03_SplitMergeChildren.py @@ -29,8 +29,7 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ROUTER1 = 2 @@ -42,47 +41,45 @@ ED3 = 6 MTDS = [ED1, ED2, ED3] -class Cert_5_5_3_SplitMergeChildren(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 7): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self._setUpLeader() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ED2].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ED3].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - self.nodes[ED1].set_panid(0xface) - self.nodes[ED1].set_mode('rsn') - self.nodes[ED1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ED1].enable_whitelist() - - self.nodes[ED2].set_panid(0xface) - self.nodes[ED2].set_mode('rsn') - self.nodes[ED2].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ED2].enable_whitelist() - - self.nodes[ED3].set_panid(0xface) - self.nodes[ED3].set_mode('rsn') - self.nodes[ED3].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ED3].enable_whitelist() +class Cert_5_5_3_SplitMergeChildren(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [ROUTER1, ROUTER2, ED1] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED2, ED3] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + ED1: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [LEADER] + }, + ED2: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER1] + }, + ED3: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER1] + }, + } def _setUpLeader(self): self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) @@ -91,12 +88,6 @@ class Cert_5_5_3_SplitMergeChildren(unittest.TestCase): self.nodes[LEADER].enable_whitelist() self.nodes[LEADER].set_router_selection_jitter(1) - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() - def test(self): self.nodes[LEADER].start() self.simulator.go(5) 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 d4b0cf7d5..b121635fd 100755 --- a/tests/scripts/thread-cert/Cert_5_5_04_SplitMergeRouters.py +++ b/tests/scripts/thread-cert/Cert_5_5_04_SplitMergeRouters.py @@ -29,8 +29,7 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ROUTER1 = 2 @@ -39,44 +38,39 @@ ROUTER3 = 4 ROUTER4 = 5 -class Cert_5_5_4_SplitMergeRouters(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 6): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self._setUpLeader() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER3].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER2].add_whitelist(self.nodes[ROUTER4].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - self.nodes[ROUTER3].set_panid(0xface) - self.nodes[ROUTER3].set_mode('rsdn') - self.nodes[ROUTER3].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ROUTER3].enable_whitelist() - self.nodes[ROUTER3].set_router_selection_jitter(1) - - self.nodes[ROUTER4].set_panid(0xface) - self.nodes[ROUTER4].set_mode('rsdn') - self.nodes[ROUTER4].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ROUTER4].enable_whitelist() - self.nodes[ROUTER4].set_router_selection_jitter(1) +class Cert_5_5_4_SplitMergeRouters(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [ROUTER1, ROUTER2] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER3] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER4] + }, + ROUTER3: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [ROUTER1] + }, + ROUTER4: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [ROUTER2] + }, + } def _setUpLeader(self): self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) @@ -84,12 +78,6 @@ class Cert_5_5_4_SplitMergeRouters(unittest.TestCase): self.nodes[LEADER].enable_whitelist() self.nodes[LEADER].set_router_selection_jitter(1) - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() - def test(self): self.nodes[LEADER].start() self.simulator.go(5) 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 7b3cc2108..13052b58b 100755 --- a/tests/scripts/thread-cert/Cert_5_5_05_SplitMergeREED.py +++ b/tests/scripts/thread-cert/Cert_5_5_05_SplitMergeREED.py @@ -29,8 +29,7 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ROUTER1 = 2 @@ -40,47 +39,114 @@ ROUTER15 = 16 REED1 = 17 -class Cert_5_5_5_SplitMergeREED(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 18): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - for i in range(ROUTER2, ROUTER15 + 1): - self.nodes[LEADER].add_whitelist(self.nodes[i].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - for i in range(ROUTER2, ROUTER15 + 1): - self.nodes[i].set_panid(0xface) - self.nodes[i].set_mode('rsdn') - self.nodes[i].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[i].enable_whitelist() - self.nodes[i].set_router_selection_jitter(1) - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER3].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].add_whitelist(self.nodes[REED1].get_addr64()) - self.nodes[ROUTER3].add_whitelist(self.nodes[ROUTER1].get_addr64()) - - self.nodes[REED1].set_panid(0xface) - self.nodes[REED1].set_mode('rsdn') - self.nodes[REED1].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[REED1].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_5_5_SplitMergeREED(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': + 'rsdn', + 'panid': + 0xface, + 'whitelist': [ + ROUTER2, ROUTER3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + ROUTER15 + ] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [ROUTER3] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, REED1] + }, + ROUTER3: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER1] + }, + 5: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 6: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 7: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 8: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 9: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 10: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 11: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 12: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 13: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 14: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + 15: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + ROUTER15: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + REED1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER2] + }, + } 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 47cc480cb..24869942b 100755 --- a/tests/scripts/thread-cert/Cert_5_5_07_SplitMergeThreeWay.py +++ b/tests/scripts/thread-cert/Cert_5_5_07_SplitMergeThreeWay.py @@ -29,8 +29,7 @@ import unittest -import config -import node +import thread_cert LEADER1 = 1 ROUTER1 = 2 @@ -38,36 +37,33 @@ ROUTER2 = 3 ROUTER3 = 4 -class Cert_5_5_7_SplitMergeThreeWay(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER1].set_panid(0xface) - self.nodes[LEADER1].set_mode('rsdn') - self._setUpLeader1() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER1].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[LEADER1].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - self.nodes[ROUTER3].set_panid(0xface) - self.nodes[ROUTER3].set_mode('rsdn') - self.nodes[ROUTER3].add_whitelist(self.nodes[LEADER1].get_addr64()) - self.nodes[ROUTER3].enable_whitelist() - self.nodes[ROUTER3].set_router_selection_jitter(1) +class Cert_5_5_7_SplitMergeThreeWay(thread_cert.TestCase): + topology = { + LEADER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [ROUTER1, ROUTER2, ROUTER3] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER1] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER1] + }, + ROUTER3: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER1] + }, + } def _setUpLeader1(self): self.nodes[LEADER1].add_whitelist(self.nodes[ROUTER1].get_addr64()) @@ -76,12 +72,6 @@ class Cert_5_5_7_SplitMergeThreeWay(unittest.TestCase): self.nodes[LEADER1].enable_whitelist() self.nodes[LEADER1].set_router_selection_jitter(1) - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() - def test(self): self.nodes[LEADER1].start() self.simulator.go(5) 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 df2c8505b..d2dc3395b 100755 --- a/tests/scripts/thread-cert/Cert_5_5_08_SplitRoutersLostLeader.py +++ b/tests/scripts/thread-cert/Cert_5_5_08_SplitRoutersLostLeader.py @@ -29,8 +29,7 @@ import unittest -import config -import node +import thread_cert LEADER1 = 1 ROUTER1 = 2 @@ -39,44 +38,39 @@ ROUTER3 = 4 ED1 = 5 -class Cert_5_5_8_SplitRoutersLostLeader(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 6): - self.nodes[i] = node.Node(i, (i == ED1), simulator=self.simulator) - - self.nodes[LEADER1].set_panid(0xface) - self.nodes[LEADER1].set_mode('rsdn') - self.nodes[LEADER1].add_whitelist(self.nodes[ROUTER3].get_addr64()) - self.nodes[LEADER1].enable_whitelist() - self.nodes[LEADER1].set_router_selection_jitter(1) - - self.nodes[ROUTER3].set_panid(0xface) - self.nodes[ROUTER3].set_mode('rsdn') - self._setUpRouter3() - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[ROUTER3].get_addr64()) - self.nodes[ROUTER2].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER3].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ED1].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ED1].set_panid(0xface) - self.nodes[ED1].set_mode('rsn') - self.nodes[ED1].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ED1].enable_whitelist() +class Cert_5_5_8_SplitRoutersLostLeader(thread_cert.TestCase): + topology = { + LEADER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [ROUTER3] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [ROUTER3, ROUTER2, ED1] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [ROUTER3, ROUTER1] + }, + ROUTER3: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER1, ROUTER2, ROUTER1] + }, + ED1: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER1] + }, + } def _setUpRouter3(self): self.nodes[ROUTER3].add_whitelist(self.nodes[LEADER1].get_addr64()) @@ -85,11 +79,6 @@ class Cert_5_5_8_SplitRoutersLostLeader(unittest.TestCase): self.nodes[ROUTER3].enable_whitelist() self.nodes[ROUTER3].set_router_selection_jitter(1) - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - def test(self): self.nodes[LEADER1].start() self.simulator.go(5) 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 701a38656..85afb1318 100755 --- a/tests/scripts/thread-cert/Cert_5_6_01_NetworkDataRegisterBeforeAttachLeader.py +++ b/tests/scripts/thread-cert/Cert_5_6_01_NetworkDataRegisterBeforeAttachLeader.py @@ -30,7 +30,7 @@ import unittest import config -import node +import thread_cert LEADER = 1 ROUTER = 2 @@ -40,44 +40,33 @@ SED1 = 4 MTDS = [ED1, SED1] -class Cert_5_6_1_NetworkDataLeaderAsBr(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[ED1].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[SED1].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - self.nodes[ED1].set_panid(0xface) - self.nodes[ED1].set_mode('rsn') - self.nodes[ED1].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[ED1].enable_whitelist() - - self.nodes[SED1].set_panid(0xface) - self.nodes[SED1].set_mode('s') - self.nodes[SED1].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[SED1].enable_whitelist() - self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_6_1_NetworkDataLeaderAsBr(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED1, SED1] + }, + ED1: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + SED1: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + } 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 6b332f5f8..fa91cd155 100755 --- a/tests/scripts/thread-cert/Cert_5_6_02_NetworkDataRegisterBeforeAttachRouter.py +++ b/tests/scripts/thread-cert/Cert_5_6_02_NetworkDataRegisterBeforeAttachRouter.py @@ -30,7 +30,7 @@ import unittest import config -import node +import thread_cert LEADER = 1 ROUTER = 2 @@ -40,44 +40,33 @@ SED1 = 4 MTDS = [ED1, SED1] -class Cert_5_6_2_NetworkDataRouterAsBr(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ED1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[SED1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - self.nodes[ED1].set_panid(0xface) - self.nodes[ED1].set_mode('rsn') - self.nodes[ED1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ED1].enable_whitelist() - - self.nodes[SED1].set_panid(0xface) - self.nodes[SED1].set_mode('s') - self.nodes[SED1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[SED1].enable_whitelist() - self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_6_2_NetworkDataRouterAsBr(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER, ED1, SED1] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + ED1: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [LEADER] + }, + SED1: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [LEADER] + }, + } 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 c8979bfed..e66259d4e 100755 --- a/tests/scripts/thread-cert/Cert_5_6_03_NetworkDataRegisterAfterAttachLeader.py +++ b/tests/scripts/thread-cert/Cert_5_6_03_NetworkDataRegisterAfterAttachLeader.py @@ -30,7 +30,7 @@ import unittest import config -import node +import thread_cert LEADER = 1 ROUTER = 2 @@ -40,44 +40,33 @@ SED1 = 4 MTDS = [ED1, SED1] -class Cert_5_6_3_NetworkDataRegisterAfterAttachLeader(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[ED1].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[SED1].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - self.nodes[ED1].set_panid(0xface) - self.nodes[ED1].set_mode('rsn') - self.nodes[ED1].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[ED1].enable_whitelist() - - self.nodes[SED1].set_panid(0xface) - self.nodes[SED1].set_mode('s') - self.nodes[SED1].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[SED1].enable_whitelist() - self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_6_3_NetworkDataRegisterAfterAttachLeader(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED1, SED1] + }, + ED1: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + SED1: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + } 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 f083f22c0..80edcfbe2 100755 --- a/tests/scripts/thread-cert/Cert_5_6_04_NetworkDataRegisterAfterAttachRouter.py +++ b/tests/scripts/thread-cert/Cert_5_6_04_NetworkDataRegisterAfterAttachRouter.py @@ -30,7 +30,7 @@ import unittest import config -import node +import thread_cert LEADER = 1 ROUTER = 2 @@ -40,44 +40,33 @@ SED1 = 4 MTDS = [ED1, SED1] -class Cert_5_6_4_NetworkDataRegisterAfterAttachRouter(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[ED1].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[SED1].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - self.nodes[ED1].set_panid(0xface) - self.nodes[ED1].set_mode('rsn') - self.nodes[ED1].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[ED1].enable_whitelist() - - self.nodes[SED1].set_panid(0xface) - self.nodes[SED1].set_mode('s') - self.nodes[SED1].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[SED1].enable_whitelist() - self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_6_4_NetworkDataRegisterAfterAttachRouter(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED1, SED1] + }, + ED1: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + SED1: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + } 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 2a42f95ef..4ce313429 100755 --- a/tests/scripts/thread-cert/Cert_5_6_05_NetworkDataRegisterAfterAttachRouter.py +++ b/tests/scripts/thread-cert/Cert_5_6_05_NetworkDataRegisterAfterAttachRouter.py @@ -30,7 +30,7 @@ import unittest import config -import node +import thread_cert LEADER = 1 ROUTER = 2 @@ -40,44 +40,33 @@ SED1 = 4 MTDS = [ED1, SED1] -class Cert_5_6_5_NetworkDataRegisterAfterAttachRouter(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[ED1].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[SED1].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - self.nodes[ED1].set_panid(0xface) - self.nodes[ED1].set_mode('rsn') - self.nodes[ED1].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[ED1].enable_whitelist() - - self.nodes[SED1].set_panid(0xface) - self.nodes[SED1].set_mode('s') - self.nodes[SED1].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[SED1].enable_whitelist() - self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_6_5_NetworkDataRegisterAfterAttachRouter(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED1, SED1] + }, + ED1: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + SED1: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + } 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 fbae55c72..93992a978 100755 --- a/tests/scripts/thread-cert/Cert_5_6_06_NetworkDataExpiration.py +++ b/tests/scripts/thread-cert/Cert_5_6_06_NetworkDataExpiration.py @@ -30,7 +30,7 @@ import unittest import config -import node +import thread_cert LEADER = 1 ROUTER = 2 @@ -40,44 +40,33 @@ SED1 = 4 MTDS = [ED1, SED1] -class Cert_5_6_6_NetworkDataExpiration(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[ED1].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[SED1].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - self.nodes[ED1].set_panid(0xface) - self.nodes[ED1].set_mode('rsn') - self.nodes[ED1].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[ED1].enable_whitelist() - - self.nodes[SED1].set_panid(0xface) - self.nodes[SED1].set_mode('s') - self.nodes[SED1].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[SED1].enable_whitelist() - self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_6_6_NetworkDataExpiration(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED1, SED1] + }, + ED1: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + SED1: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + } 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 9fc2a5ecd..6331e3409 100755 --- a/tests/scripts/thread-cert/Cert_5_6_07_NetworkDataRequestREED.py +++ b/tests/scripts/thread-cert/Cert_5_6_07_NetworkDataRequestREED.py @@ -29,46 +29,33 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ROUTER = 2 REED = 3 -class Cert_5_6_7_NetworkDataRequestREED(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 4): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[REED].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - self.nodes[REED].set_panid(0xface) - self.nodes[REED].set_mode('rsdn') - self.nodes[REED].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[REED].enable_whitelist() - self.nodes[REED].set_router_upgrade_threshold(0) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_6_7_NetworkDataRequestREED(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER, REED] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + REED: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_upgrade_threshold': 0, + 'whitelist': [LEADER] + }, + } 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 247696348..b2184b5d6 100755 --- a/tests/scripts/thread-cert/Cert_5_6_08_ContextManagement.py +++ b/tests/scripts/thread-cert/Cert_5_6_08_ContextManagement.py @@ -29,46 +29,34 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ROUTER = 2 ED = 3 -class Cert_5_6_8_ContextManagement(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 4): - self.nodes[i] = node.Node(i, (i == ED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[LEADER].enable_whitelist() - self.nodes[LEADER].set_context_reuse_delay(10) - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ED].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_6_8_ContextManagement(thread_cert.TestCase): + topology = { + LEADER: { + 'context_reuse_delay': 10, + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER, ED] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + ED: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [LEADER] + }, + } 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 ae6b48bcf..39d92a000 100755 --- a/tests/scripts/thread-cert/Cert_5_6_09_NetworkDataForwarding.py +++ b/tests/scripts/thread-cert/Cert_5_6_09_NetworkDataForwarding.py @@ -30,7 +30,7 @@ import unittest import config -import node +import thread_cert LEADER = 1 ROUTER1 = 2 @@ -41,51 +41,39 @@ SED = 5 MTDS = [ED, SED] -class Cert_5_6_9_NetworkDataForwarding(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 6): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[SED].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ED].enable_whitelist() - - self.nodes[SED].set_panid(0xface) - self.nodes[SED].set_mode('s') - self.nodes[SED].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[SED].enable_whitelist() - self.nodes[SED].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_6_9_NetworkDataForwarding(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1, ROUTER2] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED, SED] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + ED: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER1] + }, + SED: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER1] + }, + } def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_5_7_01_CoapDiagCommands_A.py b/tests/scripts/thread-cert/Cert_5_7_01_CoapDiagCommands_A.py index 8fde1efce..49862bb94 100755 --- a/tests/scripts/thread-cert/Cert_5_7_01_CoapDiagCommands_A.py +++ b/tests/scripts/thread-cert/Cert_5_7_01_CoapDiagCommands_A.py @@ -33,8 +33,7 @@ import config import mle import network_diag import network_layer -import node - +import thread_cert from network_diag import TlvType LEADER = 1 @@ -48,58 +47,35 @@ DUT = ROUTER1 MTDS = [MED1, SED1] -class Cert_5_7_01_CoapDiagCommands_A(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 7): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[REED1].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[SED1].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[MED1].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[FED1].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[REED1].set_panid(0xface) - self.nodes[REED1].set_mode('rsdn') - self.nodes[REED1].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[REED1].set_router_upgrade_threshold(0) - self.nodes[REED1].enable_whitelist() - - self.nodes[SED1].set_panid(0xface) - self.nodes[SED1].set_mode('s') - self.nodes[SED1].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[SED1].enable_whitelist() - self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - self.nodes[MED1].set_panid(0xface) - self.nodes[MED1].set_mode('rsn') - self.nodes[MED1].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[MED1].enable_whitelist() - - self.nodes[FED1].set_panid(0xface) - self.nodes[FED1].set_mode('rsdn') - self.nodes[FED1].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[FED1].set_router_upgrade_threshold(0) - self.nodes[FED1].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_7_01_CoapDiagCommands_A(thread_cert.TestCase): + topology = { + LEADER: { + 'whitelist': [ROUTER1], + }, + ROUTER1: { + 'whitelist': [LEADER, REED1, SED1, MED1, FED1], + 'router_selection_jitter': 1 + }, + REED1: { + 'whitelist': [ROUTER1], + 'router_upgrade_threshold': 0 + }, + SED1: { + 'is_mtd': True, + 'mode': 's', + 'whitelist': [ROUTER1], + 'timeout': config.DEFAULT_CHILD_TIMEOUT + }, + MED1: { + 'is_mtd': True, + 'mode': 'rsn', + 'whitelist': [ROUTER1] + }, + FED1: { + 'whitelist': [ROUTER1], + 'router_upgrade_threshold': 0 + }, + } def test(self): # 1 - Form topology 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 703ce865e..dbebc0903 100755 --- a/tests/scripts/thread-cert/Cert_5_8_01_KeySynchronization.py +++ b/tests/scripts/thread-cert/Cert_5_8_01_KeySynchronization.py @@ -29,39 +29,28 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ED = 2 -class Cert_5_8_1_KeySynchronization(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, (i == ED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[LEADER].enable_whitelist() - self.nodes[LEADER].set_key_switch_guardtime(0) - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ED].enable_whitelist() - self.nodes[ED].set_key_switch_guardtime(0) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_8_1_KeySynchronization(thread_cert.TestCase): + topology = { + LEADER: { + 'key_switch_guardtime': 0, + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ED] + }, + ED: { + 'is_mtd': True, + 'key_switch_guardtime': 0, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [LEADER] + }, + } 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 d45973edc..37c9d2c1f 100755 --- a/tests/scripts/thread-cert/Cert_5_8_02_KeyIncrement.py +++ b/tests/scripts/thread-cert/Cert_5_8_02_KeyIncrement.py @@ -29,40 +29,28 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ROUTER = 2 -class Cert_5_8_2_KeyIncrement(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].set_key_switch_guardtime(0) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_key_switch_guardtime(0) - self.nodes[ROUTER].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_8_2_KeyIncrement(thread_cert.TestCase): + topology = { + LEADER: { + 'key_switch_guardtime': 0, + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'key_switch_guardtime': 0, + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + } 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 ac75a97f4..f350718ad 100755 --- a/tests/scripts/thread-cert/Cert_5_8_03_KeyIncrementRollOver.py +++ b/tests/scripts/thread-cert/Cert_5_8_03_KeyIncrementRollOver.py @@ -29,41 +29,29 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ROUTER = 2 -class Cert_5_8_3_KeyIncrementRollOver(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - self.nodes[LEADER].set_key_switch_guardtime(0) - self.nodes[LEADER].set_key_sequence_counter(127) - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_key_switch_guardtime(0) - self.nodes[ROUTER].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_8_3_KeyIncrementRollOver(thread_cert.TestCase): + topology = { + LEADER: { + 'key_sequence_counter': 127, + 'key_switch_guardtime': 0, + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'key_switch_guardtime': 0, + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + } 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 e19f06b17..2a1a2088c 100755 --- a/tests/scripts/thread-cert/Cert_6_1_01_RouterAttach.py +++ b/tests/scripts/thread-cert/Cert_6_1_01_RouterAttach.py @@ -29,38 +29,27 @@ import unittest -import config import mle -import node +import thread_cert LEADER = 1 ED = 2 -class Cert_6_1_1_RouterAttach(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, (i == ED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ED].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_6_1_1_RouterAttach(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ED] + }, + ED: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [LEADER] + }, + } def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_1_02_REEDAttach_MED.py b/tests/scripts/thread-cert/Cert_6_1_02_REEDAttach_MED.py index 40d229a2f..260ba80b7 100755 --- a/tests/scripts/thread-cert/Cert_6_1_02_REEDAttach_MED.py +++ b/tests/scripts/thread-cert/Cert_6_1_02_REEDAttach_MED.py @@ -29,51 +29,40 @@ import unittest +import thread_cert from command import check_parent_request from command import check_child_id_request from command import check_child_update_request_from_child from command import CheckType import config import mle -import node LEADER = 1 REED = 2 MED = 3 -class Cert_6_1_2_REEDAttach_MED(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 4): - self.nodes[i] = node.Node(i, (i == MED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[REED].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[REED].set_panid(0xface) - self.nodes[REED].set_mode('rsdn') - self.nodes[REED].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[REED].add_whitelist(self.nodes[MED].get_addr64()) - self.nodes[REED].enable_whitelist() - self.nodes[REED].set_router_upgrade_threshold(0) - - self.nodes[MED].set_panid(0xface) - self.nodes[MED].set_mode('rsn') - self.nodes[MED].add_whitelist(self.nodes[REED].get_addr64()) - self.nodes[MED].enable_whitelist() - self.nodes[MED].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_6_1_2_REEDAttach_MED(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [REED] + }, + REED: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_upgrade_threshold': 0, + 'whitelist': [LEADER, MED] + }, + MED: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [REED] + }, + } def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_1_02_REEDAttach_SED.py b/tests/scripts/thread-cert/Cert_6_1_02_REEDAttach_SED.py index a9cc61cb7..95c982ab7 100755 --- a/tests/scripts/thread-cert/Cert_6_1_02_REEDAttach_SED.py +++ b/tests/scripts/thread-cert/Cert_6_1_02_REEDAttach_SED.py @@ -29,6 +29,7 @@ import unittest +import thread_cert from command import check_parent_request from command import check_child_id_request from command import CheckType @@ -36,45 +37,33 @@ import config import mac802154 import message import mle -import node LEADER = 1 REED = 2 SED = 3 -class Cert_6_1_2_REEDAttach_SED(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 4): - self.nodes[i] = node.Node(i, (i == SED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[REED].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[REED].set_panid(0xface) - self.nodes[REED].set_mode('rsdn') - self.nodes[REED].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[REED].add_whitelist(self.nodes[SED].get_addr64()) - self.nodes[REED].enable_whitelist() - self.nodes[REED].set_router_upgrade_threshold(0) - - self.nodes[SED].set_panid(0xface) - self.nodes[SED].set_mode('s') - self.nodes[SED].add_whitelist(self.nodes[REED].get_addr64()) - self.nodes[SED].enable_whitelist() - self.nodes[SED].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_6_1_2_REEDAttach_SED(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [REED] + }, + REED: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_upgrade_threshold': 0, + 'whitelist': [LEADER, SED] + }, + SED: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [REED] + }, + } 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 18eadf0a2..d60737293 100755 --- a/tests/scripts/thread-cert/Cert_6_1_03_RouterAttachConnectivity.py +++ b/tests/scripts/thread-cert/Cert_6_1_03_RouterAttachConnectivity.py @@ -30,7 +30,7 @@ import unittest import config -import node +import thread_cert LEADER = 1 ROUTER1 = 2 @@ -39,55 +39,38 @@ ROUTER3 = 4 ED = 5 -class Cert_6_1_3_RouterAttachConnectivity(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 6): - self.nodes[i] = node.Node(i, (i == ED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER3].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER3].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER2].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - self.nodes[ROUTER3].set_panid(0xface) - self.nodes[ROUTER3].set_mode('rsdn') - self.nodes[ROUTER3].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER3].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ROUTER3].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[ROUTER3].enable_whitelist() - self.nodes[ROUTER3].set_router_selection_jitter(1) - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ED].add_whitelist(self.nodes[ROUTER3].get_addr64()) - self.nodes[ED].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_6_1_3_RouterAttachConnectivity(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1, ROUTER2, ROUTER3] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER3] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED] + }, + ROUTER3: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER1, ED] + }, + ED: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER2, ROUTER3] + }, + } 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 d046a9235..6d75ffd1d 100755 --- a/tests/scripts/thread-cert/Cert_6_1_04_REEDAttachConnectivity.py +++ b/tests/scripts/thread-cert/Cert_6_1_04_REEDAttachConnectivity.py @@ -29,8 +29,7 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ROUTER1 = 2 @@ -39,55 +38,38 @@ REED1 = 4 ED = 5 -class Cert_6_1_4_REEDAttachConnectivity(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 6): - self.nodes[i] = node.Node(i, (i == ED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[REED0].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[REED1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[REED1].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[REED0].set_panid(0xface) - self.nodes[REED0].set_mode('rsdn') - self.nodes[REED0].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[REED0].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[REED0].set_router_upgrade_threshold(0) - self.nodes[REED0].enable_whitelist() - - self.nodes[REED1].set_panid(0xface) - self.nodes[REED1].set_mode('rsdn') - self.nodes[REED1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[REED1].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[REED1].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[REED1].set_router_upgrade_threshold(0) - self.nodes[REED1].enable_whitelist() - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].add_whitelist(self.nodes[REED0].get_addr64()) - self.nodes[ED].add_whitelist(self.nodes[REED1].get_addr64()) - self.nodes[ED].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_6_1_4_REEDAttachConnectivity(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1, REED0, REED1] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, REED1] + }, + REED0: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_upgrade_threshold': 0, + 'whitelist': [LEADER, ED] + }, + REED1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_upgrade_threshold': 0, + 'whitelist': [LEADER, ROUTER1, ED] + }, + ED: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [REED0, REED1] + }, + } 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 92587647c..254ebb9ab 100755 --- a/tests/scripts/thread-cert/Cert_6_1_05_RouterAttachLinkQuality.py +++ b/tests/scripts/thread-cert/Cert_6_1_05_RouterAttachLinkQuality.py @@ -29,8 +29,7 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ROUTER1 = 2 @@ -38,46 +37,32 @@ ROUTER2 = 3 ED = 4 -class Cert_6_1_5_RouterAttachLinkQuality(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i == ED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER2].add_whitelist(self.nodes[ED].get_addr64(), rssi=-85) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ED].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ED].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_6_1_5_RouterAttachLinkQuality(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1, ROUTER2] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, (ED, -85)] + }, + ED: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER1, ROUTER2] + }, + } def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_1_06_REEDAttachLinkQuality_ED.py b/tests/scripts/thread-cert/Cert_6_1_06_REEDAttachLinkQuality_ED.py index e71e254d7..64950bc61 100755 --- a/tests/scripts/thread-cert/Cert_6_1_06_REEDAttachLinkQuality_ED.py +++ b/tests/scripts/thread-cert/Cert_6_1_06_REEDAttachLinkQuality_ED.py @@ -29,9 +29,8 @@ import unittest -import config import mle -import node +import thread_cert LEADER = 1 REED = 2 @@ -39,46 +38,32 @@ ROUTER2 = 3 ED = 4 -class Cert_6_1_6_REEDAttachLinkQuality_ED(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i == ED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[REED].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[REED].set_panid(0xface) - self.nodes[REED].set_mode('rsdn') - self.nodes[REED].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[REED].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[REED].set_router_upgrade_threshold(0) - self.nodes[REED].enable_whitelist() - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER2].add_whitelist(self.nodes[ED].get_addr64(), rssi=-85) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].add_whitelist(self.nodes[REED].get_addr64()) - self.nodes[ED].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ED].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_6_1_6_REEDAttachLinkQuality_ED(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [REED, ROUTER2] + }, + REED: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_upgrade_threshold': 0, + 'whitelist': [LEADER, ED] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, (ED, -85)] + }, + ED: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [REED, ROUTER2] + }, + } def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Cert_6_1_06_REEDAttachLinkQuality_SED.py b/tests/scripts/thread-cert/Cert_6_1_06_REEDAttachLinkQuality_SED.py index ab43e8cef..217775773 100755 --- a/tests/scripts/thread-cert/Cert_6_1_06_REEDAttachLinkQuality_SED.py +++ b/tests/scripts/thread-cert/Cert_6_1_06_REEDAttachLinkQuality_SED.py @@ -31,7 +31,7 @@ import unittest import config import mle -import node +import thread_cert LEADER = 1 REED = 2 @@ -39,48 +39,33 @@ ROUTER2 = 3 SED = 4 -class Cert_6_1_6_REEDAttachLinkQuality_SED(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i == SED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[REED].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[REED].set_panid(0xface) - self.nodes[REED].set_mode('rsdn') - self.nodes[REED].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[REED].add_whitelist(self.nodes[SED].get_addr64()) - self.nodes[REED].set_router_upgrade_threshold(0) - self.nodes[REED].enable_whitelist() - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER2].add_whitelist(self.nodes[SED].get_addr64(), - rssi=-85) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - self.nodes[SED].set_panid(0xface) - self.nodes[SED].set_mode('s') - self.nodes[SED].add_whitelist(self.nodes[REED].get_addr64()) - self.nodes[SED].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[SED].enable_whitelist() - self.nodes[SED].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_6_1_6_REEDAttachLinkQuality_SED(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [REED, ROUTER2] + }, + REED: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_upgrade_threshold': 0, + 'whitelist': [LEADER, SED] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, (SED, -85)] + }, + SED: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [REED, ROUTER2] + }, + } 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 e0e82c1e5..0fbe8d04c 100755 --- a/tests/scripts/thread-cert/Cert_6_1_07_EDSynchronization.py +++ b/tests/scripts/thread-cert/Cert_6_1_07_EDSynchronization.py @@ -29,8 +29,7 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ROUTER1 = 2 @@ -39,59 +38,38 @@ ROUTER2 = 4 ROUTER3 = 5 -class Cert_6_1_7_EDSynchronization(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 6): - self.nodes[i] = node.Node(i, (i == ED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER3].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ED].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ED].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ED].add_whitelist(self.nodes[ROUTER3].get_addr64()) - self.nodes[ED].enable_whitelist() - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER2].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[ROUTER2].add_whitelist(self.nodes[ROUTER3].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - self.nodes[ROUTER3].set_panid(0xface) - self.nodes[ROUTER3].set_mode('rsdn') - self.nodes[ROUTER3].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[ROUTER3].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ROUTER3].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ROUTER3].enable_whitelist() - self.nodes[ROUTER3].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_6_1_7_EDSynchronization(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1, ED, ROUTER2] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED, ROUTER3] + }, + ED: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [LEADER, ROUTER1, ROUTER2, ROUTER3] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED, ROUTER3] + }, + ROUTER3: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [ED, ROUTER1, ROUTER2] + }, + } 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 7ddc94dc1..d4653b178 100755 --- a/tests/scripts/thread-cert/Cert_6_2_01_NewPartition.py +++ b/tests/scripts/thread-cert/Cert_6_2_01_NewPartition.py @@ -29,45 +29,33 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ROUTER1 = 2 ED = 3 -class Cert_6_2_1_NewPartition(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 4): - self.nodes[i] = node.Node(i, (i == ED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ED].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_6_2_1_NewPartition(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED] + }, + ED: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER1] + }, + } 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 c6fb19370..65ecbfec9 100755 --- a/tests/scripts/thread-cert/Cert_6_2_02_NewPartition.py +++ b/tests/scripts/thread-cert/Cert_6_2_02_NewPartition.py @@ -29,8 +29,7 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ROUTER1 = 2 @@ -38,47 +37,33 @@ ROUTER2 = 3 ED = 4 -class Cert_6_2_2_NewPartition(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i == ED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER2].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_network_id_timeout(110) - self.nodes[ROUTER2].set_router_selection_jitter(1) - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ED].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_6_2_2_NewPartition(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1, ROUTER2] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER2, ED] + }, + ROUTER2: { + 'mode': 'rsdn', + 'network_id_timeout': 110, + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER1] + }, + ED: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER1] + }, + } 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 d838d1aca..e38fb30c7 100755 --- a/tests/scripts/thread-cert/Cert_6_3_01_OrphanReattach.py +++ b/tests/scripts/thread-cert/Cert_6_3_01_OrphanReattach.py @@ -29,46 +29,34 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ROUTER = 2 ED = 3 -class Cert_6_3_1_OrphanReattach(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 4): - self.nodes[i] = node.Node(i, (i == ED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[ED].enable_whitelist() - self.nodes[ED].set_timeout(10) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_6_3_1_OrphanReattach(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED] + }, + ED: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'timeout': 10, + 'whitelist': [ROUTER] + }, + } 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 745c0b609..23471b0ec 100755 --- a/tests/scripts/thread-cert/Cert_6_3_02_NetworkDataUpdate.py +++ b/tests/scripts/thread-cert/Cert_6_3_02_NetworkDataUpdate.py @@ -29,38 +29,27 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ED = 2 -class Cert_6_3_2_NetworkDataUpdate(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, (i == ED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ED].enable_whitelist() - self.nodes[ED].set_timeout(10) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_6_3_2_NetworkDataUpdate(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ED] + }, + ED: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'timeout': 10, + 'whitelist': [LEADER] + }, + } 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 84eca5057..d2cca1744 100755 --- a/tests/scripts/thread-cert/Cert_6_4_01_LinkLocal.py +++ b/tests/scripts/thread-cert/Cert_6_4_01_LinkLocal.py @@ -29,37 +29,26 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ED = 2 -class Cert_6_4_1_LinkLocal(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, (i == ED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ED].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_6_4_1_LinkLocal(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ED] + }, + ED: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [LEADER] + }, + } 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 6f30f3328..722dc79f3 100755 --- a/tests/scripts/thread-cert/Cert_6_4_02_RealmLocal.py +++ b/tests/scripts/thread-cert/Cert_6_4_02_RealmLocal.py @@ -29,45 +29,34 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ROUTER = 2 ED = 3 -class Cert_5_3_2_RealmLocal(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i == ED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[ED].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_5_3_2_RealmLocal(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED] + }, + ED: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + 4: {}, + } 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 02fc98620..e3a49b18d 100755 --- a/tests/scripts/thread-cert/Cert_6_5_01_ChildResetSynchronize.py +++ b/tests/scripts/thread-cert/Cert_6_5_01_ChildResetSynchronize.py @@ -30,41 +30,32 @@ import unittest import config -import node +import thread_cert LEADER = 1 ED = 2 -class Cert_6_5_1_ChildResetSynchronize(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, (i == ED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - self._setUpEd() +class Cert_6_5_1_ChildResetSynchronize(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ED] + }, + ED: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [LEADER] + }, + } def _setUpEd(self): self.nodes[ED].add_whitelist(self.nodes[LEADER].get_addr64()) self.nodes[ED].enable_whitelist() - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() - def test(self): self.nodes[LEADER].start() self.simulator.go(5) 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 3e11840e3..58e1c6528 100755 --- a/tests/scripts/thread-cert/Cert_6_5_02_ChildResetReattach.py +++ b/tests/scripts/thread-cert/Cert_6_5_02_ChildResetReattach.py @@ -29,41 +29,31 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ED = 2 -class Cert_6_5_2_ChildResetReattach(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, (i == ED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self._setUpEd() +class Cert_6_5_2_ChildResetReattach(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ED] + }, + ED: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [LEADER] + }, + } def _setUpEd(self): self.nodes[ED].add_whitelist(self.nodes[LEADER].get_addr64()) self.nodes[ED].enable_whitelist() - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() - def test(self): self.nodes[LEADER].start() self.simulator.go(5) 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 1e6664c4b..a75ef6b30 100755 --- a/tests/scripts/thread-cert/Cert_6_6_01_KeyIncrement.py +++ b/tests/scripts/thread-cert/Cert_6_6_01_KeyIncrement.py @@ -29,39 +29,28 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ED = 2 -class Cert_6_6_1_KeyIncrement(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, (i == ED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[LEADER].enable_whitelist() - self.nodes[LEADER].set_key_switch_guardtime(0) - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ED].enable_whitelist() - self.nodes[ED].set_key_switch_guardtime(0) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_6_6_1_KeyIncrement(thread_cert.TestCase): + topology = { + LEADER: { + 'key_switch_guardtime': 0, + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ED] + }, + ED: { + 'is_mtd': True, + 'key_switch_guardtime': 0, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [LEADER] + }, + } 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 25637a145..2fe72d524 100755 --- a/tests/scripts/thread-cert/Cert_6_6_02_KeyIncrementRollOver.py +++ b/tests/scripts/thread-cert/Cert_6_6_02_KeyIncrementRollOver.py @@ -29,40 +29,29 @@ import unittest -import config -import node +import thread_cert LEADER = 1 ED = 2 -class Cert_6_6_2_KeyIncrement1(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, (i == ED), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[LEADER].enable_whitelist() - self.nodes[LEADER].set_key_switch_guardtime(0) - self.nodes[LEADER].set_key_sequence_counter(127) - - self.nodes[ED].set_panid(0xface) - self.nodes[ED].set_mode('rsn') - self.nodes[ED].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ED].enable_whitelist() - self.nodes[ED].set_key_switch_guardtime(0) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_6_6_2_KeyIncrement1(thread_cert.TestCase): + topology = { + LEADER: { + 'key_sequence_counter': 127, + 'key_switch_guardtime': 0, + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ED] + }, + ED: { + 'is_mtd': True, + 'key_switch_guardtime': 0, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [LEADER] + }, + } 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 1118ab7a9..5d893c72a 100755 --- a/tests/scripts/thread-cert/Cert_7_1_01_BorderRouterAsLeader.py +++ b/tests/scripts/thread-cert/Cert_7_1_01_BorderRouterAsLeader.py @@ -29,6 +29,8 @@ import unittest +import config +import thread_cert from command import ( check_child_id_response, check_child_update_response, @@ -38,9 +40,7 @@ from command import ( from command import CheckType from command import NetworkDataCheck, PrefixesCheck, SinglePrefixCheck -import config import mle -import node LEADER = 1 ROUTER = 2 @@ -50,44 +50,33 @@ MED1 = 4 MTDS = [SED1, MED1] -class Cert_7_1_1_BorderRouterAsLeader(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[SED1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[MED1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - self.nodes[SED1].set_panid(0xface) - self.nodes[SED1].set_mode('s') - self.nodes[SED1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[SED1].enable_whitelist() - self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - self.nodes[MED1].set_panid(0xface) - self.nodes[MED1].set_mode('rsn') - self.nodes[MED1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[MED1].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_7_1_1_BorderRouterAsLeader(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER, SED1, MED1] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + SED1: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [LEADER] + }, + MED1: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [LEADER] + }, + } 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 c6098b276..b18d38164 100755 --- a/tests/scripts/thread-cert/Cert_7_1_02_BorderRouterAsRouter.py +++ b/tests/scripts/thread-cert/Cert_7_1_02_BorderRouterAsRouter.py @@ -30,7 +30,7 @@ import unittest import config -import node +import thread_cert LEADER = 1 ROUTER = 2 @@ -40,44 +40,33 @@ SED2 = 4 MTDS = [ED2, SED2] -class Cert_7_1_2_BorderRouterAsRouter(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[ED2].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[SED2].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - self.nodes[ED2].set_panid(0xface) - self.nodes[ED2].set_mode('rsn') - self.nodes[ED2].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[ED2].enable_whitelist() - - self.nodes[SED2].set_panid(0xface) - self.nodes[SED2].set_mode('s') - self.nodes[SED2].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[SED2].enable_whitelist() - self.nodes[SED2].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_7_1_2_BorderRouterAsRouter(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED2, SED2] + }, + ED2: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + SED2: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + } 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 8a6543791..bf3a2c68d 100755 --- a/tests/scripts/thread-cert/Cert_7_1_03_BorderRouterAsLeader.py +++ b/tests/scripts/thread-cert/Cert_7_1_03_BorderRouterAsLeader.py @@ -29,6 +29,7 @@ import unittest +import thread_cert from command import ( check_child_update_request_from_child, check_child_update_request_from_parent, @@ -40,7 +41,6 @@ from command import NetworkDataCheck, PrefixesCheck, SinglePrefixCheck import config import mle -import node LEADER = 1 ROUTER = 2 @@ -50,44 +50,33 @@ MED1 = 4 MTDS = [SED1, MED1] -class Cert_7_1_3_BorderRouterAsLeader(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[SED1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[MED1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - self.nodes[SED1].set_panid(0xface) - self.nodes[SED1].set_mode('s') - self.nodes[SED1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[SED1].enable_whitelist() - self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - self.nodes[MED1].set_panid(0xface) - self.nodes[MED1].set_mode('rsn') - self.nodes[MED1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[MED1].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_7_1_3_BorderRouterAsLeader(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER, SED1, MED1] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + SED1: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [LEADER] + }, + MED1: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [LEADER] + }, + } def test(self): # 1 - All 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 6f9c1441e..cd7ba8bd0 100755 --- a/tests/scripts/thread-cert/Cert_7_1_04_BorderRouterAsRouter.py +++ b/tests/scripts/thread-cert/Cert_7_1_04_BorderRouterAsRouter.py @@ -30,7 +30,7 @@ import unittest import config -import node +import thread_cert LEADER = 1 ROUTER = 2 @@ -40,44 +40,33 @@ SED2 = 4 MTDS = [SED2, ED2] -class Cert_7_1_4_BorderRouterAsRouter(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[ED2].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[SED2].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - self.nodes[ED2].set_panid(0xface) - self.nodes[ED2].set_mode('rsn') - self.nodes[ED2].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[ED2].enable_whitelist() - - self.nodes[SED2].set_panid(0xface) - self.nodes[SED2].set_mode('s') - self.nodes[SED2].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[SED2].enable_whitelist() - self.nodes[SED2].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_7_1_4_BorderRouterAsRouter(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED2, SED2] + }, + ED2: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + SED2: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + } 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 431cc2303..f3433dff2 100755 --- a/tests/scripts/thread-cert/Cert_7_1_05_BorderRouterAsRouter.py +++ b/tests/scripts/thread-cert/Cert_7_1_05_BorderRouterAsRouter.py @@ -30,7 +30,7 @@ import unittest import config -import node +import thread_cert LEADER = 1 ROUTER = 2 @@ -40,44 +40,33 @@ SED2 = 4 MTDS = [ED2, SED2] -class Cert_7_1_5_BorderRouterAsRouter(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[ED2].get_addr64()) - self.nodes[ROUTER].add_whitelist(self.nodes[SED2].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - self.nodes[ED2].set_panid(0xface) - self.nodes[ED2].set_mode('rsn') - self.nodes[ED2].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[ED2].enable_whitelist() - - self.nodes[SED2].set_panid(0xface) - self.nodes[SED2].set_mode('s') - self.nodes[SED2].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[SED2].enable_whitelist() - self.nodes[SED2].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_7_1_5_BorderRouterAsRouter(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED2, SED2] + }, + ED2: { + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + SED2: { + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER] + }, + } 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 aaa9b83a7..0bf673f02 100755 --- a/tests/scripts/thread-cert/Cert_8_1_01_Commissioning.py +++ b/tests/scripts/thread-cert/Cert_8_1_01_Commissioning.py @@ -30,10 +30,9 @@ import unittest import command -import config import dtls import mle -import node +import thread_cert from command import CheckType @@ -41,29 +40,19 @@ COMMISSIONER = 1 JOINER = 2 -class Cert_8_1_01_Commissioning(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[COMMISSIONER].set_panid(0xface) - self.nodes[COMMISSIONER].set_mode('rsdn') - self.nodes[COMMISSIONER].set_masterkey( - '00112233445566778899aabbccddeeff') - - self.nodes[JOINER].set_mode('rsdn') - self.nodes[JOINER].set_masterkey('deadbeefdeadbeefdeadbeefdeadbeef') - self.nodes[JOINER].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_8_1_01_Commissioning(thread_cert.TestCase): + topology = { + COMMISSIONER: { + 'masterkey': '00112233445566778899aabbccddeeff', + 'mode': 'rsdn', + 'panid': 0xface + }, + JOINER: { + 'masterkey': 'deadbeefdeadbeefdeadbeefdeadbeef', + 'mode': 'rsdn', + 'router_selection_jitter': 1 + }, + } 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 017f2aa6b..382bdd441 100755 --- a/tests/scripts/thread-cert/Cert_8_1_02_Commissioning.py +++ b/tests/scripts/thread-cert/Cert_8_1_02_Commissioning.py @@ -29,36 +29,25 @@ import unittest -import config -import node +import thread_cert COMMISSIONER = 1 JOINER = 2 -class Cert_8_1_02_Commissioning(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[COMMISSIONER].set_panid(0xface) - self.nodes[COMMISSIONER].set_mode('rsdn') - self.nodes[COMMISSIONER].set_masterkey( - 'deadbeefdeadbeefdeadbeefdeadbeef') - - self.nodes[JOINER].set_mode('rsdn') - self.nodes[JOINER].set_masterkey('00112233445566778899aabbccddeeff') - self.nodes[JOINER].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_8_1_02_Commissioning(thread_cert.TestCase): + topology = { + COMMISSIONER: { + 'masterkey': 'deadbeefdeadbeefdeadbeefdeadbeef', + 'mode': 'rsdn', + 'panid': 0xface + }, + JOINER: { + 'masterkey': '00112233445566778899aabbccddeeff', + 'mode': 'rsdn', + 'router_selection_jitter': 1 + }, + } 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 d9963013e..2691fa186 100755 --- a/tests/scripts/thread-cert/Cert_8_2_01_JoinerRouter.py +++ b/tests/scripts/thread-cert/Cert_8_2_01_JoinerRouter.py @@ -29,46 +29,32 @@ import unittest -import config -import node +import thread_cert COMMISSIONER = 1 JOINER_ROUTER = 2 JOINER = 3 -class Cert_8_2_01_JoinerRouter(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 4): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[COMMISSIONER].set_panid(0xface) - self.nodes[COMMISSIONER].set_mode('rsdn') - self.nodes[COMMISSIONER].set_masterkey( - 'deadbeefdeadbeefdeadbeefdeadbeef') - self.nodes[COMMISSIONER].enable_whitelist() - self.nodes[COMMISSIONER].set_router_selection_jitter(1) - - self.nodes[JOINER_ROUTER].set_mode('rsdn') - self.nodes[JOINER_ROUTER].set_masterkey( - '00112233445566778899aabbccddeeff') - self.nodes[JOINER_ROUTER].enable_whitelist() - self.nodes[JOINER_ROUTER].set_router_selection_jitter(1) - - self.nodes[JOINER].set_mode('rsdn') - self.nodes[JOINER].set_masterkey('00112233445566778899aabbccddeeff') - self.nodes[JOINER].enable_whitelist() - self.nodes[JOINER].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_8_2_01_JoinerRouter(thread_cert.TestCase): + topology = { + COMMISSIONER: { + 'masterkey': 'deadbeefdeadbeefdeadbeefdeadbeef', + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + JOINER_ROUTER: { + 'masterkey': '00112233445566778899aabbccddeeff', + 'mode': 'rsdn', + 'router_selection_jitter': 1 + }, + JOINER: { + 'masterkey': '00112233445566778899aabbccddeeff', + 'mode': 'rsdn', + 'router_selection_jitter': 1 + }, + } 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 7b042504f..f35c9811b 100755 --- a/tests/scripts/thread-cert/Cert_8_2_02_JoinerRouter.py +++ b/tests/scripts/thread-cert/Cert_8_2_02_JoinerRouter.py @@ -29,46 +29,32 @@ import unittest -import config -import node +import thread_cert COMMISSIONER = 1 JOINER_ROUTER = 2 JOINER = 3 -class Cert_8_2_02_JoinerRouter(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 4): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[COMMISSIONER].set_panid(0xface) - self.nodes[COMMISSIONER].set_mode('rsdn') - self.nodes[COMMISSIONER].set_masterkey( - 'deadbeefdeadbeefdeadbeefdeadbeef') - self.nodes[COMMISSIONER].enable_whitelist() - self.nodes[COMMISSIONER].set_router_selection_jitter(1) - - self.nodes[JOINER_ROUTER].set_mode('rsdn') - self.nodes[JOINER_ROUTER].set_masterkey( - '00112233445566778899aabbccddeeff') - self.nodes[JOINER_ROUTER].enable_whitelist() - self.nodes[JOINER_ROUTER].set_router_selection_jitter(1) - - self.nodes[JOINER].set_mode('rsdn') - self.nodes[JOINER].set_masterkey('00112233445566778899aabbccddeeff') - self.nodes[JOINER].enable_whitelist() - self.nodes[JOINER].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_8_2_02_JoinerRouter(thread_cert.TestCase): + topology = { + COMMISSIONER: { + 'masterkey': 'deadbeefdeadbeefdeadbeefdeadbeef', + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + JOINER_ROUTER: { + 'masterkey': '00112233445566778899aabbccddeeff', + 'mode': 'rsdn', + 'router_selection_jitter': 1 + }, + JOINER: { + 'masterkey': '00112233445566778899aabbccddeeff', + 'mode': 'rsdn', + 'router_selection_jitter': 1 + }, + } def test(self): self.nodes[COMMISSIONER].interface_up() diff --git a/tests/scripts/thread-cert/Cert_9_2_02_MGMTCommissionerSet.py b/tests/scripts/thread-cert/Cert_9_2_02_MGMTCommissionerSet.py index e4f3b66e5..8023d0b3a 100755 --- a/tests/scripts/thread-cert/Cert_9_2_02_MGMTCommissionerSet.py +++ b/tests/scripts/thread-cert/Cert_9_2_02_MGMTCommissionerSet.py @@ -31,41 +31,29 @@ from ipaddress import ip_address import unittest import command -import config import mesh_cop import mle -import node +import thread_cert COMMISSIONER = 1 LEADER = 2 -class Cert_9_2_02_MGMTCommissionerSet(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[COMMISSIONER].set_panid(0xface) - self.nodes[COMMISSIONER].set_mode('rsdn') - self.nodes[COMMISSIONER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[COMMISSIONER].enable_whitelist() - self.nodes[COMMISSIONER].set_router_selection_jitter(1) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[COMMISSIONER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - self.nodes[LEADER].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_9_2_02_MGMTCommissionerSet(thread_cert.TestCase): + topology = { + COMMISSIONER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [COMMISSIONER] + }, + } def test(self): self.nodes[LEADER].start() 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 b1aa5936d..99786bb2f 100755 --- a/tests/scripts/thread-cert/Cert_9_2_04_ActiveDataset.py +++ b/tests/scripts/thread-cert/Cert_9_2_04_ActiveDataset.py @@ -29,37 +29,33 @@ import unittest -import config -import node +import thread_cert COMMISSIONER = 1 LEADER = 2 -class Cert_9_2_04_ActiveDataset(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[COMMISSIONER].set_active_dataset( - 10, panid=0xface, master_key='000102030405060708090a0b0c0d0e0f') - self.nodes[COMMISSIONER].set_mode('rsdn') - self.nodes[COMMISSIONER].set_router_selection_jitter(1) - - self.nodes[LEADER].set_active_dataset( - 10, panid=0xface, master_key='000102030405060708090a0b0c0d0e0f') - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_9_2_04_ActiveDataset(thread_cert.TestCase): + topology = { + COMMISSIONER: { + 'active_dataset': { + 'timestamp': 10, + 'panid': 0xface, + 'master_key': '000102030405060708090a0b0c0d0e0f' + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1 + }, + LEADER: { + 'active_dataset': { + 'timestamp': 10, + 'panid': 0xface, + 'master_key': '000102030405060708090a0b0c0d0e0f' + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1 + }, + } 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 8c6e074eb..c7129af1e 100755 --- a/tests/scripts/thread-cert/Cert_9_2_07_DelayTimer.py +++ b/tests/scripts/thread-cert/Cert_9_2_07_DelayTimer.py @@ -29,8 +29,7 @@ import unittest -import config -import node +import thread_cert PANID_INIT = 0xface @@ -47,43 +46,38 @@ COMMISSIONER_PENDING_CHANNEL = 20 COMMISSIONER_PENDING_PANID = 0xafce -class Cert_9_2_7_DelayTimer(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 4): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[COMMISSIONER].set_active_dataset(LEADER_ACTIVE_TIMESTAMP) - self.nodes[COMMISSIONER].set_mode('rsdn') - self.nodes[COMMISSIONER].set_panid(PANID_INIT) - self.nodes[COMMISSIONER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[COMMISSIONER].enable_whitelist() - self.nodes[COMMISSIONER].set_router_selection_jitter(1) - - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].set_panid(PANID_INIT) - self.nodes[LEADER].set_partition_id(0xffffffff) - self.nodes[LEADER].add_whitelist(self.nodes[COMMISSIONER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - self.nodes[LEADER].set_router_selection_jitter(1) - - self.nodes[ROUTER].set_active_dataset(ROUTER_ACTIVE_TIMESTAMP) - self.nodes[ROUTER].set_pending_dataset(ROUTER_PENDING_TIMESTAMP, - ROUTER_PENDING_ACTIVE_TIMESTAMP) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].set_panid(PANID_INIT) - self.nodes[ROUTER].set_partition_id(0x1) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_9_2_7_DelayTimer(thread_cert.TestCase): + topology = { + COMMISSIONER: { + 'active_dataset': { + 'timestamp': LEADER_ACTIVE_TIMESTAMP + }, + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'partition_id': 0xffffffff, + 'router_selection_jitter': 1, + 'whitelist': [COMMISSIONER] + }, + ROUTER: { + 'active_dataset': { + 'timestamp': ROUTER_ACTIVE_TIMESTAMP + }, + 'mode': 'rsdn', + 'panid': 0xface, + 'partition_id': 1, + 'pending_dataset': { + 'pendingtimestamp': ROUTER_PENDING_TIMESTAMP, + 'activetimestamp': ROUTER_PENDING_ACTIVE_TIMESTAMP + }, + 'router_selection_jitter': 1 + }, + } 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 8af00765b..587c2eb28 100755 --- a/tests/scripts/thread-cert/Cert_9_2_08_PersistentDatasets.py +++ b/tests/scripts/thread-cert/Cert_9_2_08_PersistentDatasets.py @@ -30,7 +30,7 @@ import unittest import config -import node +import thread_cert COMMISSIONER = 1 LEADER = 2 @@ -48,48 +48,54 @@ COMMISSIONER_PENDING_PANID = 0xafce MTDS = [ED, SED] -class Cert_9_2_8_PersistentDatasets(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 6): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[COMMISSIONER].set_active_dataset(LEADER_ACTIVE_TIMESTAMP, - panid=PANID_INIT, - channel=CHANNEL_INIT) - self.nodes[COMMISSIONER].set_mode('rsdn') - self.nodes[COMMISSIONER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[COMMISSIONER].enable_whitelist() - self.nodes[COMMISSIONER].set_router_selection_jitter(1) - - self.nodes[LEADER].set_active_dataset(LEADER_ACTIVE_TIMESTAMP, - panid=PANID_INIT, - channel=CHANNEL_INIT) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[COMMISSIONER].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ED].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[SED].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_active_dataset(LEADER_ACTIVE_TIMESTAMP, - panid=PANID_INIT, - channel=CHANNEL_INIT) - self.nodes[ROUTER].set_mode('rsdn') - self._setUpRouter() - - self.nodes[ED].set_channel(CHANNEL_INIT) - self.nodes[ED].set_panid(PANID_INIT) - self.nodes[ED].set_mode('rsn') - self._setUpEd() - - self.nodes[SED].set_channel(CHANNEL_INIT) - self.nodes[SED].set_panid(PANID_INIT) - self.nodes[SED].set_mode('s') - self._setUpSed() +class Cert_9_2_8_PersistentDatasets(thread_cert.TestCase): + topology = { + COMMISSIONER: { + 'active_dataset': { + 'timestamp': LEADER_ACTIVE_TIMESTAMP, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + LEADER: { + 'active_dataset': { + 'timestamp': LEADER_ACTIVE_TIMESTAMP, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT + }, + 'mode': 'rsdn', + 'whitelist': [COMMISSIONER, ROUTER, ED, SED] + }, + ROUTER: { + 'active_dataset': { + 'timestamp': LEADER_ACTIVE_TIMESTAMP, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + ED: { + 'channel': CHANNEL_INIT, + 'is_mtd': True, + 'mode': 'rsn', + 'panid': PANID_INIT, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [LEADER] + }, + SED: { + 'channel': CHANNEL_INIT, + 'is_mtd': True, + 'mode': 's', + 'panid': PANID_INIT, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [LEADER] + }, + } def _setUpRouter(self): self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) @@ -106,11 +112,6 @@ class Cert_9_2_8_PersistentDatasets(unittest.TestCase): self.nodes[SED].enable_whitelist() self.nodes[SED].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - def test(self): self.nodes[LEADER].start() self.simulator.go(5) 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 60a1e0c3b..3b26b08ba 100755 --- a/tests/scripts/thread-cert/Cert_9_2_09_PendingPartition.py +++ b/tests/scripts/thread-cert/Cert_9_2_09_PendingPartition.py @@ -29,8 +29,7 @@ import unittest -import config -import node +import thread_cert CHANNEL_INIT = 19 PANID_INIT = 0xface @@ -44,56 +43,51 @@ ROUTER1 = 3 ROUTER2 = 4 -class Cert_9_2_09_PendingPartition(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[COMMISSIONER].set_active_dataset(10, - channel=CHANNEL_INIT, - panid=PANID_INIT) - self.nodes[COMMISSIONER].set_mode('rsdn') - self.nodes[COMMISSIONER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[COMMISSIONER].enable_whitelist() - self.nodes[COMMISSIONER].set_router_selection_jitter(1) - - self.nodes[LEADER].set_active_dataset(10, - channel=CHANNEL_INIT, - panid=PANID_INIT) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].set_partition_id(0xffffffff) - self.nodes[LEADER].add_whitelist(self.nodes[COMMISSIONER].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - self.nodes[LEADER].set_router_selection_jitter(1) - - self.nodes[ROUTER1].set_active_dataset(10, - channel=CHANNEL_INIT, - panid=PANID_INIT) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_active_dataset(10, - channel=CHANNEL_INIT, - panid=PANID_INIT) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - self.nodes[ROUTER2].set_network_id_timeout(100) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_9_2_09_PendingPartition(thread_cert.TestCase): + topology = { + COMMISSIONER: { + 'active_dataset': { + 'timestamp': 10, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + LEADER: { + 'active_dataset': { + 'timestamp': 10, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT + }, + 'mode': 'rsdn', + 'partition_id': 0xffffffff, + 'router_selection_jitter': 1, + 'whitelist': [COMMISSIONER, ROUTER1] + }, + ROUTER1: { + 'active_dataset': { + 'timestamp': 10, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER2] + }, + ROUTER2: { + 'active_dataset': { + 'timestamp': 10, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT + }, + 'mode': 'rsdn', + 'network_id_timeout': 100, + 'router_selection_jitter': 1, + 'whitelist': [ROUTER1] + }, + } 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 379a81cdd..bea8506b2 100755 --- a/tests/scripts/thread-cert/Cert_9_2_10_PendingPartition.py +++ b/tests/scripts/thread-cert/Cert_9_2_10_PendingPartition.py @@ -30,7 +30,7 @@ import unittest import config -import node +import thread_cert CHANNEL_INIT = 19 PANID_INIT = 0xface @@ -47,61 +47,55 @@ SED1 = 5 MTDS = [ED1, SED1] -class Cert_9_2_10_PendingPartition(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 6): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[COMMISSIONER].set_active_dataset(15, - channel=CHANNEL_INIT, - panid=PANID_INIT) - self.nodes[COMMISSIONER].set_mode('rsdn') - self.nodes[COMMISSIONER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[COMMISSIONER].enable_whitelist() - self.nodes[COMMISSIONER].set_router_selection_jitter(1) - - self.nodes[LEADER].set_active_dataset(15, - channel=CHANNEL_INIT, - panid=PANID_INIT) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].set_partition_id(0xffffffff) - self.nodes[LEADER].add_whitelist(self.nodes[COMMISSIONER].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - self.nodes[LEADER].set_router_selection_jitter(1) - - self.nodes[ROUTER1].set_active_dataset(15, - channel=CHANNEL_INIT, - panid=PANID_INIT) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ED1].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[SED1].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ED1].set_channel(CHANNEL_INIT) - self.nodes[ED1].set_panid(PANID_INIT) - self.nodes[ED1].set_mode('rsn') - self.nodes[ED1].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ED1].enable_whitelist() - - self.nodes[SED1].set_channel(CHANNEL_INIT) - self.nodes[SED1].set_panid(PANID_INIT) - self.nodes[SED1].set_mode('s') - self.nodes[SED1].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[SED1].enable_whitelist() - self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_9_2_10_PendingPartition(thread_cert.TestCase): + topology = { + COMMISSIONER: { + 'active_dataset': { + 'timestamp': 15, + 'panid': 0xface, + 'channel': 19 + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + LEADER: { + 'active_dataset': { + 'timestamp': 15, + 'panid': 0xface, + 'channel': 19 + }, + 'mode': 'rsdn', + 'partition_id': 0xffffffff, + 'router_selection_jitter': 1, + 'whitelist': [COMMISSIONER, ROUTER1] + }, + ROUTER1: { + 'active_dataset': { + 'timestamp': 15, + 'panid': 0xface, + 'channel': 19 + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED1, SED1] + }, + ED1: { + 'channel': 19, + 'is_mtd': True, + 'mode': 'rsn', + 'panid': 0xface, + 'whitelist': [ROUTER1] + }, + SED1: { + 'channel': 19, + 'is_mtd': True, + 'mode': 's', + 'panid': 0xface, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER1] + }, + } 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 0a02440cd..6a22c0899 100755 --- a/tests/scripts/thread-cert/Cert_9_2_11_MasterKey.py +++ b/tests/scripts/thread-cert/Cert_9_2_11_MasterKey.py @@ -30,7 +30,7 @@ import unittest import config -import node +import thread_cert KEY1 = '000102030405060708090a0b0c0d0e0f' KEY2 = '0f0e0d0c0b0a09080706050403020100' @@ -47,65 +47,59 @@ SED1 = 5 MTDS = [ED1, SED1] -class Cert_9_2_11_MasterKey(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 6): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[COMMISSIONER].set_active_dataset(10, - channel=CHANNEL_INIT, - panid=PANID_INIT, - master_key=KEY1) - self.nodes[COMMISSIONER].set_mode('rsdn') - self.nodes[COMMISSIONER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[COMMISSIONER].enable_whitelist() - self.nodes[COMMISSIONER].set_router_selection_jitter(1) - - self.nodes[LEADER].set_active_dataset(10, - channel=CHANNEL_INIT, - panid=PANID_INIT, - master_key=KEY1) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[COMMISSIONER].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - self.nodes[LEADER].set_router_selection_jitter(1) - - self.nodes[ROUTER1].set_active_dataset(10, - channel=CHANNEL_INIT, - panid=PANID_INIT, - master_key=KEY1) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ED1].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[SED1].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ED1].set_channel(CHANNEL_INIT) - self.nodes[ED1].set_panid(PANID_INIT) - self.nodes[ED1].set_masterkey(KEY1) - self.nodes[ED1].set_mode('rsn') - self.nodes[ED1].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ED1].enable_whitelist() - - self.nodes[SED1].set_channel(CHANNEL_INIT) - self.nodes[SED1].set_panid(PANID_INIT) - self.nodes[SED1].set_masterkey(KEY1) - self.nodes[SED1].set_mode('s') - self.nodes[SED1].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[SED1].enable_whitelist() - self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_9_2_11_MasterKey(thread_cert.TestCase): + topology = { + COMMISSIONER: { + 'active_dataset': { + 'timestamp': 10, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT, + 'master_key': '000102030405060708090a0b0c0d0e0f' + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + LEADER: { + 'active_dataset': { + 'timestamp': 10, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT, + 'master_key': '000102030405060708090a0b0c0d0e0f' + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [COMMISSIONER, ROUTER1] + }, + ROUTER1: { + 'active_dataset': { + 'timestamp': 10, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT, + 'master_key': '000102030405060708090a0b0c0d0e0f' + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED1, SED1] + }, + ED1: { + 'channel': CHANNEL_INIT, + 'is_mtd': True, + 'masterkey': '000102030405060708090a0b0c0d0e0f', + 'mode': 'rsn', + 'panid': PANID_INIT, + 'whitelist': [ROUTER1] + }, + SED1: { + 'channel': CHANNEL_INIT, + 'is_mtd': True, + 'masterkey': '000102030405060708090a0b0c0d0e0f', + 'mode': 's', + 'panid': PANID_INIT, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER1] + }, + } 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 935b44250..52255351c 100755 --- a/tests/scripts/thread-cert/Cert_9_2_12_Announce.py +++ b/tests/scripts/thread-cert/Cert_9_2_12_Announce.py @@ -29,8 +29,7 @@ import unittest -import config -import node +import thread_cert LEADER1 = 1 ROUTER1 = 2 @@ -47,60 +46,55 @@ DATASET2_CHANNEL = 12 DATASET2_PANID = 0xafce -class Cert_9_2_12_Announce(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 6): - self.nodes[i] = node.Node(i, (i == MED), simulator=self.simulator) - - self.nodes[LEADER1].set_active_dataset(DATASET1_TIMESTAMP, - channel=DATASET1_CHANNEL, - panid=DATASET1_PANID) - self.nodes[LEADER1].set_mode('rsdn') - self.nodes[LEADER1].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER1].enable_whitelist() - - self.nodes[ROUTER1].set_active_dataset(DATASET1_TIMESTAMP, - channel=DATASET1_CHANNEL, - panid=DATASET1_PANID) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER1].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER2].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[LEADER2].set_active_dataset(DATASET2_TIMESTAMP, - channel=DATASET2_CHANNEL, - panid=DATASET2_PANID) - self.nodes[LEADER2].set_mode('rsdn') - self.nodes[LEADER2].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER2].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[LEADER2].enable_whitelist() - self.nodes[LEADER2].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_active_dataset(DATASET2_TIMESTAMP, - channel=DATASET2_CHANNEL, - panid=DATASET2_PANID) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[LEADER2].get_addr64()) - self.nodes[ROUTER2].add_whitelist(self.nodes[MED].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - self.nodes[MED].set_channel(DATASET2_CHANNEL) - self.nodes[MED].set_panid(DATASET2_PANID) - self.nodes[MED].set_mode('rsn') - self.nodes[MED].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[MED].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_9_2_12_Announce(thread_cert.TestCase): + topology = { + LEADER1: { + 'active_dataset': { + 'timestamp': DATASET1_TIMESTAMP, + 'panid': DATASET1_PANID, + 'channel': DATASET1_CHANNEL + }, + 'mode': 'rsdn', + 'whitelist': [ROUTER1] + }, + ROUTER1: { + 'active_dataset': { + 'timestamp': DATASET1_TIMESTAMP, + 'panid': DATASET1_PANID, + 'channel': DATASET1_CHANNEL + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [LEADER1, LEADER2] + }, + LEADER2: { + 'active_dataset': { + 'timestamp': DATASET2_TIMESTAMP, + 'panid': DATASET2_PANID, + 'channel': DATASET2_CHANNEL + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [ROUTER1, ROUTER2] + }, + ROUTER2: { + 'active_dataset': { + 'timestamp': DATASET2_TIMESTAMP, + 'panid': DATASET2_PANID, + 'channel': DATASET2_CHANNEL + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [LEADER2, MED] + }, + MED: { + 'channel': DATASET2_CHANNEL, + 'is_mtd': True, + 'mode': 'rsn', + 'panid': DATASET2_PANID, + 'whitelist': [ROUTER2] + }, + } 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 5ddfcb726..e0df5efb5 100755 --- a/tests/scripts/thread-cert/Cert_9_2_13_EnergyScan.py +++ b/tests/scripts/thread-cert/Cert_9_2_13_EnergyScan.py @@ -29,8 +29,7 @@ import unittest -import config -import node +import thread_cert COMMISSIONER = 1 LEADER = 2 @@ -38,44 +37,32 @@ ROUTER1 = 3 ED1 = 4 -class Cert_9_2_13_EnergyScan(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, (i == ED1), simulator=self.simulator) - - self.nodes[COMMISSIONER].set_panid(0xface) - self.nodes[COMMISSIONER].set_mode('rsdn') - self.nodes[COMMISSIONER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[COMMISSIONER].enable_whitelist() - self.nodes[COMMISSIONER].set_router_selection_jitter(1) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[COMMISSIONER].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ED1].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ED1].set_panid(0xface) - self.nodes[ED1].set_mode('rs') - self.nodes[ED1].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ED1].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_9_2_13_EnergyScan(thread_cert.TestCase): + topology = { + COMMISSIONER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [COMMISSIONER, ROUTER1] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ED1] + }, + ED1: { + 'is_mtd': True, + 'mode': 'rs', + 'panid': 0xface, + 'whitelist': [ROUTER1] + }, + } 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 9da95fa96..cb2b96348 100755 --- a/tests/scripts/thread-cert/Cert_9_2_14_PanIdQuery.py +++ b/tests/scripts/thread-cert/Cert_9_2_14_PanIdQuery.py @@ -29,8 +29,7 @@ import unittest -import config -import node +import thread_cert COMMISSIONER = 1 LEADER1 = 2 @@ -38,44 +37,31 @@ ROUTER1 = 3 LEADER2 = 4 -class Cert_9_2_14_PanIdQuery(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[COMMISSIONER].set_panid(0xface) - self.nodes[COMMISSIONER].set_mode('rsdn') - self.nodes[COMMISSIONER].add_whitelist(self.nodes[LEADER1].get_addr64()) - self.nodes[COMMISSIONER].enable_whitelist() - self.nodes[COMMISSIONER].set_router_selection_jitter(1) - - self.nodes[LEADER1].set_panid(0xface) - self.nodes[LEADER1].set_mode('rsdn') - self.nodes[LEADER1].add_whitelist(self.nodes[COMMISSIONER].get_addr64()) - self.nodes[LEADER1].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER1].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER1].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER2].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[LEADER2].set_panid(0xdead) - self.nodes[LEADER2].set_mode('rsdn') - self.nodes[LEADER2].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER2].enable_whitelist() - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_9_2_14_PanIdQuery(thread_cert.TestCase): + topology = { + COMMISSIONER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER1] + }, + LEADER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [COMMISSIONER, ROUTER1] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER1, LEADER2] + }, + LEADER2: { + 'mode': 'rsdn', + 'panid': 0xdead, + 'whitelist': [ROUTER1] + }, + } 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 063a69694..385a5cbb5 100755 --- a/tests/scripts/thread-cert/Cert_9_2_15_PendingPartition.py +++ b/tests/scripts/thread-cert/Cert_9_2_15_PendingPartition.py @@ -29,8 +29,7 @@ import unittest -import config -import node +import thread_cert CHANNEL_INIT = 19 PANID_INIT = 0xface @@ -43,59 +42,56 @@ ROUTER1 = 3 ROUTER2 = 4 -class Cert_9_2_15_PendingPartition(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[COMMISSIONER].set_active_dataset(15, - channel=CHANNEL_INIT, - panid=PANID_INIT) - self.nodes[COMMISSIONER].set_mode('rsdn') - self.nodes[COMMISSIONER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[COMMISSIONER].enable_whitelist() - self.nodes[COMMISSIONER].set_router_selection_jitter(1) - - self.nodes[LEADER].set_active_dataset(15, - channel=CHANNEL_INIT, - panid=PANID_INIT) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].set_partition_id(0xffffffff) - self.nodes[LEADER].add_whitelist(self.nodes[COMMISSIONER].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - self.nodes[LEADER].set_router_selection_jitter(1) - - self.nodes[ROUTER1].set_active_dataset(15, - channel=CHANNEL_INIT, - panid=PANID_INIT) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_active_dataset(15, - channel=CHANNEL_INIT, - panid=PANID_INIT) - self.nodes[ROUTER2].set_mode('rsdn') - self._setUpRouter2() +class Cert_9_2_15_PendingPartition(thread_cert.TestCase): + topology = { + COMMISSIONER: { + 'active_dataset': { + 'timestamp': 15, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + LEADER: { + 'active_dataset': { + 'timestamp': 15, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT + }, + 'mode': 'rsdn', + 'partition_id': 0xffffffff, + 'router_selection_jitter': 1, + 'whitelist': [COMMISSIONER, ROUTER1] + }, + ROUTER1: { + 'active_dataset': { + 'timestamp': 15, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER2] + }, + ROUTER2: { + 'active_dataset': { + 'timestamp': 15, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [ROUTER1] + }, + } def _setUpRouter2(self): self.nodes[ROUTER2].add_whitelist(self.nodes[ROUTER1].get_addr64()) self.nodes[ROUTER2].enable_whitelist() self.nodes[ROUTER2].set_router_selection_jitter(1) - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() - def test(self): self.nodes[LEADER].start() self.simulator.go(5) 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 05abade5c..30ecdae80 100755 --- a/tests/scripts/thread-cert/Cert_9_2_16_ActivePendingPartition.py +++ b/tests/scripts/thread-cert/Cert_9_2_16_ActivePendingPartition.py @@ -29,8 +29,7 @@ import unittest -import config -import node +import thread_cert CHANNEL_INIT = 19 PANID_INIT = 0xface @@ -44,59 +43,56 @@ ROUTER1 = 3 ROUTER2 = 4 -class Cert_9_2_16_ActivePendingPartition(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 5): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[COMMISSIONER].set_active_dataset(1, - channel=CHANNEL_INIT, - panid=PANID_INIT) - self.nodes[COMMISSIONER].set_mode('rsdn') - self.nodes[COMMISSIONER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[COMMISSIONER].enable_whitelist() - self.nodes[COMMISSIONER].set_router_selection_jitter(1) - - self.nodes[LEADER].set_active_dataset(1, - channel=CHANNEL_INIT, - panid=PANID_INIT) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].set_partition_id(0xffffffff) - self.nodes[LEADER].add_whitelist(self.nodes[COMMISSIONER].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - self.nodes[LEADER].set_router_selection_jitter(1) - - self.nodes[ROUTER1].set_active_dataset(1, - channel=CHANNEL_INIT, - panid=PANID_INIT) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_active_dataset(1, - channel=CHANNEL_INIT, - panid=PANID_INIT) - self.nodes[ROUTER2].set_mode('rsdn') - self._setUpRouter2() +class Cert_9_2_16_ActivePendingPartition(thread_cert.TestCase): + topology = { + COMMISSIONER: { + 'active_dataset': { + 'timestamp': 1, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + LEADER: { + 'active_dataset': { + 'timestamp': 1, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT + }, + 'mode': 'rsdn', + 'partition_id': 0xffffffff, + 'router_selection_jitter': 1, + 'whitelist': [COMMISSIONER, ROUTER1] + }, + ROUTER1: { + 'active_dataset': { + 'timestamp': 1, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER2] + }, + ROUTER2: { + 'active_dataset': { + 'timestamp': 1, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [ROUTER1] + }, + } def _setUpRouter2(self): self.nodes[ROUTER2].add_whitelist(self.nodes[ROUTER1].get_addr64()) self.nodes[ROUTER2].enable_whitelist() self.nodes[ROUTER2].set_router_selection_jitter(1) - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() - def test(self): self.nodes[LEADER].start() self.simulator.go(5) 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 3285d1236..83fd7ad89 100755 --- a/tests/scripts/thread-cert/Cert_9_2_17_Orphan.py +++ b/tests/scripts/thread-cert/Cert_9_2_17_Orphan.py @@ -30,7 +30,7 @@ import unittest import config -import node +import thread_cert CHANNEL1 = 11 CHANNEL2 = 18 @@ -42,44 +42,38 @@ LEADER2 = 2 ED1 = 3 -class Cert_9_2_17_Orphan(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 4): - self.nodes[i] = node.Node(i, (i == ED1), simulator=self.simulator) - - self.nodes[LEADER1].set_active_dataset(10, - channel=CHANNEL1, - panid=PANID_INIT, - channel_mask=CHANNEL_MASK) - self.nodes[LEADER1].set_mode('rsdn') - self.nodes[LEADER1].add_whitelist(self.nodes[ED1].get_addr64()) - self.nodes[LEADER1].enable_whitelist() - self.nodes[LEADER1].set_router_selection_jitter(1) - - self.nodes[LEADER2].set_active_dataset(20, - channel=CHANNEL2, - panid=PANID_INIT, - channel_mask=CHANNEL_MASK) - self.nodes[LEADER2].set_mode('rsdn') - self.nodes[LEADER2].enable_whitelist() - self.nodes[LEADER2].set_router_selection_jitter(1) - - self.nodes[ED1].set_channel(CHANNEL1) - self.nodes[ED1].set_mode('rsn') - self.nodes[ED1].set_panid(PANID_INIT) - self.nodes[ED1].add_whitelist(self.nodes[LEADER1].get_addr64()) - self.nodes[ED1].enable_whitelist() - self.nodes[ED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Cert_9_2_17_Orphan(thread_cert.TestCase): + topology = { + LEADER1: { + 'active_dataset': { + 'timestamp': 10, + 'panid': PANID_INIT, + 'channel': CHANNEL1, + 'channel_mask': CHANNEL_MASK + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [ED1] + }, + LEADER2: { + 'active_dataset': { + 'timestamp': 20, + 'panid': PANID_INIT, + 'channel': CHANNEL2, + 'channel_mask': CHANNEL_MASK + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1 + }, + ED1: { + 'channel': CHANNEL1, + 'is_mtd': True, + 'mode': 'rsn', + 'panid': PANID_INIT, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [LEADER1] + }, + } 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 ca3728f8c..72b1de463 100755 --- a/tests/scripts/thread-cert/Cert_9_2_18_RollBackActiveTimestamp.py +++ b/tests/scripts/thread-cert/Cert_9_2_18_RollBackActiveTimestamp.py @@ -30,7 +30,7 @@ import unittest import config -import node +import thread_cert KEY1 = '00112233445566778899aabbccddeeff' KEY2 = 'ffeeddccbbaa99887766554433221100' @@ -48,75 +48,71 @@ SED1 = 6 MTDS = [ED1, SED1] -class Cert_9_2_18_RollBackActiveTimestamp(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 7): - self.nodes[i] = node.Node(i, (i in MTDS), simulator=self.simulator) - - self.nodes[COMMISSIONER].set_active_dataset(1, - channel=CHANNEL_INIT, - panid=PANID_INIT, - master_key=KEY1) - self.nodes[COMMISSIONER].set_mode('rsdn') - self.nodes[COMMISSIONER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[COMMISSIONER].enable_whitelist() - self.nodes[COMMISSIONER].set_router_selection_jitter(1) - - self.nodes[LEADER].set_active_dataset(1, - channel=CHANNEL_INIT, - panid=PANID_INIT, - master_key=KEY1) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].set_partition_id(0xffffffff) - self.nodes[LEADER].add_whitelist(self.nodes[COMMISSIONER].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - self.nodes[LEADER].set_router_selection_jitter(1) - - self.nodes[ROUTER1].set_active_dataset(1, - channel=CHANNEL_INIT, - panid=PANID_INIT, - master_key=KEY1) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ED1].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[SED1].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_active_dataset(1, - channel=CHANNEL_INIT, - panid=PANID_INIT, - master_key=KEY1) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - self.nodes[ED1].set_channel(CHANNEL_INIT) - self.nodes[ED1].set_masterkey(KEY1) - self.nodes[ED1].set_mode('rsn') - self.nodes[ED1].set_panid(PANID_INIT) - self.nodes[ED1].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ED1].enable_whitelist() - - self.nodes[SED1].set_channel(CHANNEL_INIT) - self.nodes[SED1].set_masterkey(KEY1) - self.nodes[SED1].set_mode('s') - self.nodes[SED1].set_panid(PANID_INIT) - self.nodes[SED1].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[SED1].enable_whitelist() - self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() +class Cert_9_2_18_RollBackActiveTimestamp(thread_cert.TestCase): + topology = { + COMMISSIONER: { + 'active_dataset': { + 'timestamp': 1, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT, + 'master_key': '00112233445566778899aabbccddeeff' + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + LEADER: { + 'active_dataset': { + 'timestamp': 1, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT, + 'master_key': '00112233445566778899aabbccddeeff' + }, + 'mode': 'rsdn', + 'partition_id': 0xffffffff, + 'router_selection_jitter': 1, + 'whitelist': [COMMISSIONER, ROUTER1] + }, + ROUTER1: { + 'active_dataset': { + 'timestamp': 1, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT, + 'master_key': '00112233445566778899aabbccddeeff' + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER2, ED1, SED1] + }, + ROUTER2: { + 'active_dataset': { + 'timestamp': 1, + 'panid': PANID_INIT, + 'channel': CHANNEL_INIT, + 'master_key': '00112233445566778899aabbccddeeff' + }, + 'mode': 'rsdn', + 'router_selection_jitter': 1, + 'whitelist': [ROUTER1] + }, + ED1: { + 'channel': CHANNEL_INIT, + 'is_mtd': True, + 'masterkey': '00112233445566778899aabbccddeeff', + 'mode': 'rsn', + 'panid': PANID_INIT, + 'whitelist': [ROUTER1] + }, + SED1: { + 'channel': CHANNEL_INIT, + 'is_mtd': True, + 'masterkey': '00112233445566778899aabbccddeeff', + 'mode': 's', + 'panid': PANID_INIT, + 'timeout': config.DEFAULT_CHILD_TIMEOUT, + 'whitelist': [ROUTER1] + }, + } def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/Makefile.am b/tests/scripts/thread-cert/Makefile.am index 94c69b23f..e355c999c 100644 --- a/tests/scripts/thread-cert/Makefile.am +++ b/tests/scripts/thread-cert/Makefile.am @@ -128,6 +128,7 @@ EXTRA_DIST = \ command.py \ common.py \ config.py \ + debug.py \ dtls.py \ ipv6.py \ lowpan.py \ @@ -160,6 +161,7 @@ EXTRA_DIST = \ test_network_data.py \ test_network_layer.py \ test_reed_address_solicit_rejected.py \ + thread_cert.py \ tlvs_parsing.py \ $(NULL) diff --git a/tests/scripts/thread-cert/Test_Cli.py b/tests/scripts/thread-cert/Test_Cli.py index 93f5b6ba6..423a5a878 100755 --- a/tests/scripts/thread-cert/Test_Cli.py +++ b/tests/scripts/thread-cert/Test_Cli.py @@ -29,21 +29,15 @@ import unittest -import node +import thread_cert LEADER = 1 -class Cert_Cli(unittest.TestCase): - - def setUp(self): - self.nodes = {} - self.nodes[LEADER] = node.Node(LEADER) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() +class Cert_Cli(thread_cert.TestCase): + topology = { + LEADER: {}, + } 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 e0685c729..64984fa03 100755 --- a/tests/scripts/thread-cert/Test_MacScan.py +++ b/tests/scripts/thread-cert/Test_MacScan.py @@ -30,37 +30,29 @@ import time import unittest -import node +import thread_cert LEADER = 1 ROUTER = 2 -class Test_MacScan(unittest.TestCase): - - def setUp(self): - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - self.nodes[LEADER].set_channel(12) - self.nodes[LEADER].set_network_name('OpenThread') - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_channel(12) - self.nodes[ROUTER].set_network_name('OpenThread') - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() +class Test_MacScan(thread_cert.TestCase): + topology = { + LEADER: { + 'channel': 12, + 'mode': 'rsdn', + 'network_name': 'OpenThread', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'channel': 12, + 'mode': 'rsdn', + 'network_name': 'OpenThread', + 'panid': 0xface, + 'whitelist': [LEADER] + }, + } def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/test_coap_observe.py b/tests/scripts/thread-cert/test_coap_observe.py index bec9d57a1..8edf4355b 100755 --- a/tests/scripts/thread-cert/test_coap_observe.py +++ b/tests/scripts/thread-cert/test_coap_observe.py @@ -31,46 +31,29 @@ import unittest import pexpect import config -import node +import thread_cert LEADER = 1 ROUTER = 2 -class TestCoapObserve(unittest.TestCase): +class TestCoapObserve(thread_cert.TestCase): """ Test suite for CoAP Observations (RFC7641). """ - - def setUp(self): - """ - Start up two nodes and get them on the virtual network. - """ - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - def tearDown(self): - """ - Tear down the nodes created. - """ - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + } def _do_notification_test(self, con): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/test_coaps.py b/tests/scripts/thread-cert/test_coaps.py index 035d76599..d71e9c596 100755 --- a/tests/scripts/thread-cert/test_coaps.py +++ b/tests/scripts/thread-cert/test_coaps.py @@ -30,37 +30,26 @@ import unittest import config -import node +import thread_cert LEADER = 1 ROUTER = 2 -class TestCoaps(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xface) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class TestCoaps(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + } def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/test_diag.py b/tests/scripts/thread-cert/test_diag.py index 47a710578..ae5b42f97 100755 --- a/tests/scripts/thread-cert/test_diag.py +++ b/tests/scripts/thread-cert/test_diag.py @@ -27,24 +27,18 @@ # POSSIBILITY OF SUCH DAMAGE. # -import unittest import time +import unittest -import node -import config +import thread_cert -class TestDiag(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - self.node = node.Node(1, False, simulator=self.simulator) - - def tearDown(self): - self.node.destroy() - self.simulator.stop() +class TestDiag(thread_cert.TestCase): + topology = {1: None} def test(self): + self.node = self.nodes[1] + cases = [ ('diag\n', 'diagnostics mode is disabled\r\n'), ('diag send 10 100\n', 'Error 13: InvalidState\r\n'), diff --git a/tests/scripts/thread-cert/test_ipv6_fragmentation.py b/tests/scripts/thread-cert/test_ipv6_fragmentation.py index d4eae301e..f669e528d 100755 --- a/tests/scripts/thread-cert/test_ipv6_fragmentation.py +++ b/tests/scripts/thread-cert/test_ipv6_fragmentation.py @@ -31,37 +31,26 @@ import unittest import common import config -import node +import thread_cert LEADER = 1 ROUTER = 2 -class TestIPv6Fragmentation(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xcafe) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xcafe) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class TestIPv6Fragmentation(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xcafe, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xcafe, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + } def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/test_ipv6_source_selection.py b/tests/scripts/thread-cert/test_ipv6_source_selection.py index 0c51f0d32..ee59d9629 100755 --- a/tests/scripts/thread-cert/test_ipv6_source_selection.py +++ b/tests/scripts/thread-cert/test_ipv6_source_selection.py @@ -29,39 +29,27 @@ import unittest -import config import ipv6 -import node +import thread_cert LEADER = 1 ROUTER = 2 -class TestIPv6SourceSelection(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 3): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xcafe) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER].set_panid(0xcafe) - self.nodes[ROUTER].set_mode('rsdn') - self.nodes[ROUTER].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER].enable_whitelist() - self.nodes[ROUTER].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class TestIPv6SourceSelection(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xcafe, + 'whitelist': [ROUTER] + }, + ROUTER: { + 'mode': 'rsdn', + 'panid': 0xcafe, + 'router_selection_jitter': 1, + 'whitelist': [LEADER] + }, + } def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/test_reed_address_solicit_rejected.py b/tests/scripts/thread-cert/test_reed_address_solicit_rejected.py index d14fcd6a9..713c44dc9 100755 --- a/tests/scripts/thread-cert/test_reed_address_solicit_rejected.py +++ b/tests/scripts/thread-cert/test_reed_address_solicit_rejected.py @@ -28,10 +28,11 @@ # import config -import node import re import unittest +import thread_cert + LEADER = 1 REED = 2 @@ -45,27 +46,18 @@ SRV_0_SERVER_DATA = 'bar' # -class TestREEDAddressSolicitRejected(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in [LEADER, REED]: - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - - self.nodes[REED].set_panid(0xface) - self.nodes[REED].set_mode('rsdn') - self.nodes[REED].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class TestREEDAddressSolicitRejected(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface + }, + REED: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1 + }, + } def testAddressSolicitRejectedBeforeSvrData(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/test_route_table.py b/tests/scripts/thread-cert/test_route_table.py index 5ad519adc..16d5587cb 100755 --- a/tests/scripts/thread-cert/test_route_table.py +++ b/tests/scripts/thread-cert/test_route_table.py @@ -29,8 +29,7 @@ import unittest -import node -import config +import thread_cert LEADER = 1 ROUTER1 = 2 @@ -41,38 +40,26 @@ ROUTER2 = 3 # -class TestRouteTable(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 4): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].enable_whitelist() - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class TestRouteTable(thread_cert.TestCase): + topology = { + LEADER: { + 'mode': 'rsdn', + 'panid': 0xface, + 'whitelist': [ROUTER1] + }, + ROUTER1: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER2] + }, + ROUTER2: { + 'mode': 'rsdn', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [ROUTER1] + }, + } def test(self): self.nodes[LEADER].start() diff --git a/tests/scripts/thread-cert/test_service.py b/tests/scripts/thread-cert/test_service.py index eb6ad1b9d..c1c69e7bb 100755 --- a/tests/scripts/thread-cert/test_service.py +++ b/tests/scripts/thread-cert/test_service.py @@ -30,8 +30,8 @@ import re import unittest -import node import config +import thread_cert LEADER = 1 ROUTER1 = 2 @@ -48,46 +48,32 @@ SRV_1_SERVICE_DATA = 'baz' SRV_1_SERVER_DATA = 'qux' -class Test_Service(unittest.TestCase): - - def setUp(self): - self.simulator = config.create_default_simulator() - - self.nodes = {} - for i in range(1, 4): - self.nodes[i] = node.Node(i, simulator=self.simulator) - - self.nodes[LEADER].set_panid(0xface) - self.nodes[LEADER].set_mode('rsdn') - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[LEADER].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[LEADER].enable_whitelist() - self.nodes[LEADER].set_channel(12) - self.nodes[LEADER].set_network_name('OpenThread') - - self.nodes[ROUTER1].set_panid(0xface) - self.nodes[ROUTER1].set_mode('rsdn') - self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER2].get_addr64()) - self.nodes[ROUTER1].enable_whitelist() - self.nodes[ROUTER1].set_channel(12) - self.nodes[ROUTER1].set_network_name('OpenThread') - self.nodes[ROUTER1].set_router_selection_jitter(1) - - self.nodes[ROUTER2].set_panid(0xface) - self.nodes[ROUTER2].set_mode('rsdn') - self.nodes[ROUTER2].add_whitelist(self.nodes[LEADER].get_addr64()) - self.nodes[ROUTER2].add_whitelist(self.nodes[ROUTER1].get_addr64()) - self.nodes[ROUTER2].enable_whitelist() - self.nodes[ROUTER2].set_channel(12) - self.nodes[ROUTER2].set_network_name('OpenThread') - self.nodes[ROUTER2].set_router_selection_jitter(1) - - def tearDown(self): - for n in list(self.nodes.values()): - n.stop() - n.destroy() - self.simulator.stop() +class Test_Service(thread_cert.TestCase): + topology = { + LEADER: { + 'channel': 12, + 'mode': 'rsdn', + 'network_name': 'OpenThread', + 'panid': 0xface, + 'whitelist': [ROUTER1, ROUTER2] + }, + ROUTER1: { + 'channel': 12, + 'mode': 'rsdn', + 'network_name': 'OpenThread', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER2] + }, + ROUTER2: { + 'channel': 12, + 'mode': 'rsdn', + 'network_name': 'OpenThread', + 'panid': 0xface, + 'router_selection_jitter': 1, + 'whitelist': [LEADER, ROUTER1] + }, + } def hasAloc(self, node_id, service_id): for addr in self.nodes[node_id].get_ip6_address( diff --git a/tests/scripts/thread-cert/thread_cert.py b/tests/scripts/thread-cert/thread_cert.py index 040c2a691..7604384f0 100644 --- a/tests/scripts/thread-cert/thread_cert.py +++ b/tests/scripts/thread-cert/thread_cert.py @@ -27,19 +27,22 @@ # POSSIBILITY OF SUCH DAMAGE. # +import os import unittest import config import debug from node import Node +PORT_OFFSET = int(os.getenv('PORT_OFFSET', "0")) + DEFAULT_PARAMS = { 'is_mtd': False, 'is_bbr': False, 'mode': 'rsdn', 'panid': 0xface, 'whitelist': None, - 'version': '1.2', + 'version': '1.1', } """Default configurations when creating nodes.""" @@ -53,14 +56,14 @@ class TestCase(unittest.TestCase): The `topology` member of sub-class is used to create test topology. """ - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.simulator = config.create_default_simulator() - self.nodes = {} - def setUp(self): """Create simulator, nodes and apply configurations. """ + self._clean_up_tmp() + + self.simulator = config.create_default_simulator() + self.nodes = {} + initial_topology = {} for i, params in self.topology.items(): if params: @@ -78,7 +81,61 @@ class TestCase(unittest.TestCase): ) self.nodes[i].set_panid(params['panid']) self.nodes[i].set_mode(params['mode']) - self.nodes[i].set_addr64(format(EXTENDED_ADDRESS_BASE + i, '016x')) + + if 'partition_id' in params: + self.nodes[i].set_partition_id(params['partition_id']) + if 'channel' in params: + self.nodes[i].set_channel(params['channel']) + if 'masterkey' in params: + self.nodes[i].set_masterkey(params['masterkey']) + if 'network_name' in params: + self.nodes[i].set_network_name(params['network_name']) + + if 'router_selection_jitter' in params: + self.nodes[i].set_router_selection_jitter( + params['router_selection_jitter']) + if 'router_upgrade_threshold' in params: + self.nodes[i].set_router_upgrade_threshold( + params['router_upgrade_threshold']) + if 'router_downgrade_threshold' in params: + self.nodes[i].set_router_downgrade_threshold( + params['router_downgrade_threshold']) + + if 'timeout' in params: + self.nodes[i].set_timeout(params['timeout']) + + if 'active_dataset' in params: + self.nodes[i].set_active_dataset( + params['active_dataset']['timestamp'], + panid=params['active_dataset'].get('panid'), + channel=params['active_dataset'].get('channel'), + channel_mask=params['active_dataset'].get('channel_mask'), + master_key=params['active_dataset'].get('master_key')) + + if 'pending_dataset' in params: + self.nodes[i].set_pending_dataset( + params['pending_dataset']['pendingtimestamp'], + params['pending_dataset']['activetimestamp'], + panid=params['pending_dataset'].get('panid'), + channel=params['pending_dataset'].get('channel')) + + if 'key_switch_guardtime' in params: + self.nodes[i].set_key_switch_guardtime( + params['key_switch_guardtime']) + if 'key_sequence_counter' in params: + self.nodes[i].set_key_sequence_counter( + params['key_sequence_counter']) + + if 'network_id_timeout' in params: + self.nodes[i].set_network_id_timeout( + params['network_id_timeout']) + + if 'context_reuse_delay' in params: + self.nodes[i].set_context_reuse_delay( + params['context_reuse_delay']) + + if 'max_children' in params: + self.nodes[i].set_max_children(params['max_children']) # we have to add whitelist after nodes are all created for i, params in initial_topology.items(): @@ -87,7 +144,11 @@ class TestCase(unittest.TestCase): continue for j in whitelist: - self.nodes[i].add_whitelist(self.nodes[j].get_addr64()) + rssi = None + if isinstance(j, tuple): + j, rssi = j + self.nodes[i].add_whitelist(self.nodes[j].get_addr64(), + rssi=rssi) self.nodes[i].enable_whitelist() self._inspector = debug.Inspector(self) @@ -101,7 +162,10 @@ class TestCase(unittest.TestCase): for node in list(self.nodes.values()): node.stop() node.destroy() + self.simulator.stop() + del self.nodes + del self.simulator def flush_all(self): """Flush away all captured messages of all nodes. @@ -119,3 +183,11 @@ class TestCase(unittest.TestCase): for i in nodes: if i in list(self.nodes.keys()): self.simulator.get_messages_sent_by(i) + + def _clean_up_tmp(self): + """ + Clean up node files in tmp directory + """ + os.system( + f"rm -f tmp/{PORT_OFFSET}_*.flash tmp/{PORT_OFFSET}_*.data tmp/{PORT_OFFSET}_*.swap" + ) diff --git a/tests/scripts/thread-cert/v1_2_router_5_1_1.py b/tests/scripts/thread-cert/v1_2_router_5_1_1.py index 20c089209..224296de8 100755 --- a/tests/scripts/thread-cert/v1_2_router_5_1_1.py +++ b/tests/scripts/thread-cert/v1_2_router_5_1_1.py @@ -39,8 +39,12 @@ ROUTER_1 = 2 class Router_5_1_01(thread_cert.TestCase): topology = { - LEADER: None, - ROUTER_1: None, + LEADER: { + 'version': '1.2' + }, + ROUTER_1: { + 'version': '1.2' + }, } """All nodes are created with default configurations""" diff --git a/tests/scripts/thread-cert/v1_2_test_enhanced_frame_pending.py b/tests/scripts/thread-cert/v1_2_test_enhanced_frame_pending.py index 4bbbf19f9..d396a3836 100755 --- a/tests/scripts/thread-cert/v1_2_test_enhanced_frame_pending.py +++ b/tests/scripts/thread-cert/v1_2_test_enhanced_frame_pending.py @@ -60,9 +60,12 @@ DEFAULT_POLL_PERIOD = CHILD_TIMEOUT - 4 class SED_EnhancedFramePending(thread_cert.TestCase): topology = { - LEADER: None, + LEADER: { + 'version': '1.2' + }, SED_1: { 'mode': 's', + 'version': '1.2', }, } diff --git a/tests/scripts/thread-cert/v1_2_test_enhanced_keep_alive.py b/tests/scripts/thread-cert/v1_2_test_enhanced_keep_alive.py index eee5e64da..21d2f5af1 100755 --- a/tests/scripts/thread-cert/v1_2_test_enhanced_keep_alive.py +++ b/tests/scripts/thread-cert/v1_2_test_enhanced_keep_alive.py @@ -46,9 +46,12 @@ USER_POLL_PERIOD = CHILD_TIMEOUT // 3 class SED_EnhancedKeepAlive(thread_cert.TestCase): topology = { - LEADER: None, + LEADER: { + 'version': '1.2' + }, SED_1: { 'mode': 's', + 'version': '1.2', }, } """All nodes are created with default configurations"""