[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.
This commit is contained in:
Simon Lin
2020-04-29 10:41:04 -07:00
committed by GitHub
parent 90ecb574bb
commit e5069a41d5
108 changed files with 3564 additions and 3851 deletions
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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)
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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):
@@ -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)
@@ -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()
@@ -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
@@ -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.
@@ -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.
@@ -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.
@@ -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.
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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()
@@ -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()
@@ -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
@@ -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()
@@ -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
@@ -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
@@ -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
@@ -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()
@@ -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)
@@ -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)
@@ -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)
@@ -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()
@@ -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)
@@ -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)
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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)
@@ -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)
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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)
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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()
@@ -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)
@@ -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)
+33 -39
View File
@@ -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()
@@ -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()
+2
View File
@@ -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)
+5 -11
View File
@@ -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()
+18 -26
View File
@@ -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()
+15 -32
View File
@@ -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()
+15 -26
View File
@@ -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()
+6 -12
View File
@@ -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'),
@@ -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()

Some files were not shown because too many files have changed in this diff Show More