[mle] update number parent requests in an attach cycle (#7538)

This commit updates the MLE attach process so that in the first attach
cycle device tries a total of six MLE Parent Requests, the first two
to routers only followed by four to routers and REEDs. For example,
the six Parent Request message will be used before device can decide
to act the leader. An MTD in the next attach attempt (if cannot find a
parent in first attempt cycle), will go to the model of two Parent
Requests (first to routers, then to routers/REEDs).

This change impacts the time it takes for a device to start as leader
(due to increased number of Parent Request and wait time). This commit
updates different test scripts to address the change in the wait
time. It adds a new `config.LEADER_STARTUP_DELAY` constants which is
used for wait time for leader to start.
This commit is contained in:
Abtin Keshavarzian
2022-07-07 16:50:21 -07:00
committed by GitHub
parent b71c1590c1
commit 5d09e9ca4f
209 changed files with 372 additions and 310 deletions
@@ -81,7 +81,7 @@ class BBR_5_11_01(thread_cert.TestCase):
self.nodes[ROUTER1].set_weight(72)
self.nodes[ROUTER1].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual('leader', self.nodes[ROUTER1].get_state())
self.nodes[ROUTER2].start()
@@ -39,6 +39,7 @@
import unittest
import thread_cert
import config
from pktverify.packet_verifier import PacketVerifier
PBBR = 1
@@ -87,7 +88,7 @@ class BBR_5_11_01(thread_cert.TestCase):
def test(self):
self.nodes[PBBR].start()
self.wait_node_state(PBBR, 'leader', 5)
self.wait_node_state(PBBR, 'leader', 10)
self.nodes[PBBR].set_backbone_router(reg_delay=REREG_DELAY, mlr_timeout=MLR_TIMEOUT)
self.nodes[PBBR].enable_backbone_router()
self.wait_until(lambda: self.nodes[PBBR].is_primary_backbone_router, 5)
@@ -121,9 +121,9 @@ class TestDuaDad(thread_cert.TestCase):
# Bring up PBBR
self.nodes[PBBR].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual('leader', self.nodes[PBBR].get_state())
self.wait_node_state(PBBR, 'leader', 5)
self.wait_node_state(PBBR, 'leader', 10)
self.nodes[PBBR].set_backbone_router(reg_delay=REREG_DELAY, mlr_timeout=MLR_TIMEOUT)
self.nodes[PBBR].enable_backbone_router()
@@ -152,9 +152,9 @@ class TestDuaDad(thread_cert.TestCase):
# Bring up PBBR2
self.nodes[PBBR2].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual('leader', self.nodes[PBBR2].get_state())
self.wait_node_state(PBBR2, 'leader', 5)
self.wait_node_state(PBBR2, 'leader', 10)
self.nodes[PBBR2].set_backbone_router(reg_delay=REREG_DELAY, mlr_timeout=MLR_TIMEOUT)
self.nodes[PBBR2].enable_backbone_router()
@@ -109,9 +109,9 @@ class TestNdProxy(thread_cert.TestCase):
# Bring up PBBR
self.nodes[PBBR].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual('leader', self.nodes[PBBR].get_state())
self.wait_node_state(PBBR, 'leader', 5)
self.wait_node_state(PBBR, 'leader', 10)
self.nodes[PBBR].set_backbone_router(reg_delay=REREG_DELAY, mlr_timeout=MLR_TIMEOUT)
self.nodes[PBBR].enable_backbone_router()
@@ -139,9 +139,9 @@ class TestNdProxy(thread_cert.TestCase):
# Bring up PBBR2
self.nodes[PBBR2].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual('leader', self.nodes[PBBR2].get_state())
self.wait_node_state(PBBR2, 'leader', 5)
self.wait_node_state(PBBR2, 'leader', 10)
self.nodes[PBBR2].set_backbone_router(reg_delay=REREG_DELAY, mlr_timeout=MLR_TIMEOUT)
self.nodes[PBBR2].enable_backbone_router()
@@ -109,9 +109,9 @@ class TestDuaRoutingMed(thread_cert.TestCase):
# Bring up PBBR
self.nodes[PBBR].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual('leader', self.nodes[PBBR].get_state())
self.wait_node_state(PBBR, 'leader', 5)
self.wait_node_state(PBBR, 'leader', 10)
self.nodes[PBBR].set_backbone_router(reg_delay=REREG_DELAY, mlr_timeout=MLR_TIMEOUT)
self.nodes[PBBR].enable_backbone_router()
@@ -134,9 +134,9 @@ class TestDuaRoutingMed(thread_cert.TestCase):
# Bring up PBBR2
self.nodes[PBBR2].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual('leader', self.nodes[PBBR2].get_state())
self.wait_node_state(PBBR2, 'leader', 5)
self.wait_node_state(PBBR2, 'leader', 10)
self.nodes[PBBR2].set_backbone_router(reg_delay=REREG_DELAY, mlr_timeout=MLR_TIMEOUT)
self.nodes[PBBR2].enable_backbone_router()
@@ -31,6 +31,7 @@
import unittest
import thread_cert
import config
from pktverify.consts import ICMPV6_TYPE_DESTINATION_UNREACHABLE
from pktverify.packet_verifier import PacketVerifier
@@ -63,7 +64,7 @@ class TestMleMustNotSendIcmpv6DestinationUnreachable(thread_cert.TestCase):
def test(self):
self.nodes[PBBR].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual('leader', self.nodes[PBBR].get_state())
self.nodes[PBBR].enable_backbone_router()
self.simulator.go(3)
@@ -128,7 +128,7 @@ class TestMlr(thread_cert.TestCase):
# Bring up Leader
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual('leader', self.nodes[LEADER].get_state())
# Bring up Router
@@ -102,7 +102,7 @@ class TestMlr(thread_cert.TestCase):
# Bring up PBBR1
self.nodes[PBBR1].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual('leader', self.nodes[PBBR1].get_state())
self.nodes[PBBR1].enable_backbone_router()
@@ -121,7 +121,7 @@ class TestMlr(thread_cert.TestCase):
# Bring up PBBR2
self.nodes[PBBR2].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual('leader', self.nodes[PBBR2].get_state())
self.nodes[PBBR2].enable_backbone_router()
@@ -29,6 +29,7 @@
# This test verifies that the MLR timeout configured by Commissioner works for multicast routing.
#
import unittest
import config
from pktverify.consts import NM_COMMISSIONER_SESSION_ID_TLV
from pktverify.packet_verifier import PacketVerifier
@@ -81,7 +81,7 @@ class TestMlrTimeout(thread_cert.TestCase):
# Bring up PBBR
self.nodes[PBBR].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual('leader', self.nodes[PBBR].get_state())
self.nodes[PBBR].enable_backbone_router()
self.nodes[PBBR].set_backbone_router(reg_delay=REG_DELAY, mlr_timeout=MLR_TIMEOUT)
@@ -88,9 +88,9 @@ class TestNdProxy(thread_cert.TestCase):
# Bring up PBBR
self.nodes[PBBR].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual('leader', self.nodes[PBBR].get_state())
self.wait_node_state(PBBR, 'leader', 5)
self.wait_node_state(PBBR, 'leader', 10)
self.nodes[PBBR].set_backbone_router(reg_delay=REREG_DELAY, mlr_timeout=MLR_TIMEOUT)
self.nodes[PBBR].enable_backbone_router()