[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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
209 changed files with 372 additions and 310 deletions

View File

@ -83,7 +83,7 @@ send "ifconfig up\r\n"
expect "Done"
send "thread start\r\n"
expect "Done"
sleep 5
sleep 10
send "state\r\n"
expect "leader"
expect "Done"

View File

@ -182,7 +182,7 @@ send "ifconfig up\r\n"
expect "Done"
send "thread start\r\n"
expect "Done"
sleep 5
sleep 10
send "state\r\n"
expect "leader"
expect "Done"
@ -207,7 +207,7 @@ EOF
sleep 5
# wait until the node becomes leader
timeout_run 5 wait_for_leader
timeout_run 10 wait_for_leader
# wait coap service start
sleep 5

View File

@ -1282,10 +1282,64 @@ void Mle::HandleAttachTimer(Timer &aTimer)
aTimer.Get<Mle>().HandleAttachTimer();
}
Error Mle::DetermineParentRequestType(ParentRequestType &aType) const
{
// This method determines the Parent Request type to use during an
// attach cycle based on `mAttachMode`, `mAttachCounter` and
// `mParentRequestCounter`. This method MUST be used while in
// `kAttachStateParentRequest` state.
//
// On success it returns `kErrorNone` and sets `aType`. It returns
// `kErrorNotFound` to indicate that device can now transition
// from `kAttachStateParentRequest` state (has already sent the
// required number of Parent Requests for this attach attempt
// cycle).
Error error = kErrorNone;
OT_ASSERT(mAttachState == kAttachStateParentRequest);
aType = kToRoutersAndReeds;
// If device is not yet attached, `mAttachCounter` will track the
// number of attach attempt cycles so far, starting from one for
// the first attempt. `mAttachCounter` will be zero if device is
// already attached. Examples of this situation include a leader or
// router trying to attach to a better partition, or a child trying
// to find a better parent.
if ((mAttachCounter <= 1) && (mAttachMode != kBetterParent))
{
VerifyOrExit(mParentRequestCounter <= kFirstAttachCycleTotalParentRequests, error = kErrorNotFound);
// During reattach to the same partition all the Parent
// Request are sent to Routers and REEDs.
if ((mAttachMode != kSamePartition) && (mAttachMode != kSamePartitionRetry) &&
(mParentRequestCounter <= kFirstAttachCycleNumParentRequestToRouters))
{
aType = kToRouters;
}
}
else
{
VerifyOrExit(mParentRequestCounter <= kNextAttachCycleTotalParentRequests, error = kErrorNotFound);
if (mParentRequestCounter <= kNextAttachCycleNumParentRequestToRouters)
{
aType = kToRouters;
}
}
exit:
return error;
}
bool Mle::HasAcceptableParentCandidate(void) const
{
bool hasAcceptableParent = false;
LinkQuality linkQuality;
bool hasAcceptableParent = false;
LinkQuality linkQuality;
ParentRequestType parentReqType;
VerifyOrExit(mParentCandidate.IsStateParentResponse());
@ -1295,16 +1349,19 @@ bool Mle::HasAcceptableParentCandidate(void) const
VerifyOrExit(!HasMoreChannelsToAnnouce());
break;
case kAttachStateParentRequestRouter:
// If we cannot find a parent with best link quality (3) when
// in `kAttachStateParentRequestRouter` state we will keep the
// candidate and forward to REED stage to potentially find a
// better parent.
linkQuality = OT_MIN(mParentCandidate.GetLinkInfo().GetLinkQuality(), mParentCandidate.GetLinkQualityOut());
VerifyOrExit(linkQuality == kLinkQuality3);
break;
case kAttachStateParentRequest:
SuccessOrAssert(DetermineParentRequestType(parentReqType));
if (parentReqType == kToRouters)
{
// If we cannot find a parent with best link quality (3) when
// in Parent Request was sent to routers, we will keep the
// candidate and forward to REED stage to potentially find a
// better parent.
linkQuality = OT_MIN(mParentCandidate.GetLinkInfo().GetLinkQuality(), mParentCandidate.GetLinkQualityOut());
VerifyOrExit(linkQuality == kLinkQuality3);
}
case kAttachStateParentRequestReed:
break;
default:
@ -1331,8 +1388,9 @@ exit:
void Mle::HandleAttachTimer(void)
{
uint32_t delay = 0;
bool shouldAnnounce = true;
uint32_t delay = 0;
bool shouldAnnounce = true;
ParentRequestType type;
// First, check if we are waiting to receive parent responses and
// found an acceptable parent candidate.
@ -1355,46 +1413,26 @@ void Mle::HandleAttachTimer(void)
break;
case kAttachStateStart:
if (mAttachCounter > 0)
{
LogNote("Attempt to attach - attempt %d, %s %s", mAttachCounter, AttachModeToString(mAttachMode),
ReattachStateToString(mReattachState));
}
else
{
LogNote("Attempt to attach - %s %s", AttachModeToString(mAttachMode),
ReattachStateToString(mReattachState));
}
LogNote("Attach attempt %d, %s %s", mAttachCounter, AttachModeToString(mAttachMode),
ReattachStateToString(mReattachState));
SetAttachState(kAttachStateParentRequestRouter);
SetAttachState(kAttachStateParentRequest);
mParentCandidate.SetState(Neighbor::kStateInvalid);
mReceivedResponseFromParent = false;
mParentRequestCounter = 0;
Get<MeshForwarder>().SetRxOnWhenIdle(true);
// initial MLE Parent Request has both E and R flags set in Scan Mask TLV
// during reattach when losing connectivity.
if (mAttachMode == kSamePartition || mAttachMode == kSamePartitionRetry)
OT_FALL_THROUGH;
case kAttachStateParentRequest:
mParentRequestCounter++;
if (DetermineParentRequestType(type) == kErrorNone)
{
SendParentRequest(kToRoutersAndReeds);
delay = kParentRequestReedTimeout;
}
// initial MLE Parent Request has only R flag set in Scan Mask TLV for
// during initial attach or downgrade process
else
{
SendParentRequest(kToRouters);
delay = kParentRequestRouterTimeout;
SendParentRequest(type);
delay = (type == kToRouters) ? kParentRequestRouterTimeout : kParentRequestReedTimeout;
break;
}
break;
case kAttachStateParentRequestRouter:
SetAttachState(kAttachStateParentRequestReed);
SendParentRequest(kToRoutersAndReeds);
delay = kParentRequestReedTimeout;
break;
case kAttachStateParentRequestReed:
shouldAnnounce = PrepareAnnounceState();
if (shouldAnnounce)
@ -4199,22 +4237,20 @@ const char *Mle::AttachModeToString(AttachMode aMode)
const char *Mle::AttachStateToString(AttachState aState)
{
static const char *const kAttachStateStrings[] = {
"Idle", // (0) kAttachStateIdle
"ProcessAnnounce", // (1) kAttachStateProcessAnnounce
"Start", // (2) kAttachStateStart
"ParentReqRouters", // (3) kAttachStateParentRequestRouter
"ParentReqReeds", // (4) kAttachStateParentRequestReed
"Announce", // (5) kAttachStateAnnounce
"ChildIdReq", // (6) kAttachStateChildIdRequest
"Idle", // (0) kAttachStateIdle
"ProcessAnnounce", // (1) kAttachStateProcessAnnounce
"Start", // (2) kAttachStateStart
"ParentReq", // (3) kAttachStateParent
"Announce", // (4) kAttachStateAnnounce
"ChildIdReq", // (5) kAttachStateChildIdRequest
};
static_assert(kAttachStateIdle == 0, "kAttachStateIdle value is incorrect");
static_assert(kAttachStateProcessAnnounce == 1, "kAttachStateProcessAnnounce value is incorrect");
static_assert(kAttachStateStart == 2, "kAttachStateStart value is incorrect");
static_assert(kAttachStateParentRequestRouter == 3, "kAttachStateParentRequestRouter value is incorrect");
static_assert(kAttachStateParentRequestReed == 4, "kAttachStateParentRequestReed value is incorrect");
static_assert(kAttachStateAnnounce == 5, "kAttachStateAnnounce value is incorrect");
static_assert(kAttachStateChildIdRequest == 6, "kAttachStateChildIdRequest value is incorrect");
static_assert(kAttachStateParentRequest == 3, "kAttachStateParentRequest value is incorrect");
static_assert(kAttachStateAnnounce == 4, "kAttachStateAnnounce value is incorrect");
static_assert(kAttachStateChildIdRequest == 5, "kAttachStateChildIdRequest value is incorrect");
return kAttachStateStrings[aState];
}

View File

@ -812,13 +812,12 @@ protected:
*/
enum AttachState : uint8_t
{
kAttachStateIdle, ///< Not currently searching for a parent.
kAttachStateProcessAnnounce, ///< Waiting to process a received Announce (to switch channel/pan-id).
kAttachStateStart, ///< Starting to look for a parent.
kAttachStateParentRequestRouter, ///< Searching for a Router to attach to.
kAttachStateParentRequestReed, ///< Searching for Routers or REEDs to attach to.
kAttachStateAnnounce, ///< Send Announce messages
kAttachStateChildIdRequest, ///< Sending a Child ID Request message.
kAttachStateIdle, ///< Not currently searching for a parent.
kAttachStateProcessAnnounce, ///< Waiting to process a received Announce (to switch channel/pan-id).
kAttachStateStart, ///< Starting to look for a parent.
kAttachStateParentRequest, ///< Send Parent Request (current number tracked by `mParentRequestCounter`).
kAttachStateAnnounce, ///< Send Announce messages
kAttachStateChildIdRequest, ///< Sending a Child ID Request message.
};
/**
@ -1698,7 +1697,8 @@ protected:
Router mParentCandidate; ///< Parent candidate information.
NeighborTable mNeighborTable; ///< The neighbor table.
DeviceMode mDeviceMode; ///< Device mode setting.
AttachState mAttachState; ///< The parent request state.
AttachState mAttachState; ///< The attach state.
uint8_t mParentRequestCounter; ///< Number of parent requests while in `kAttachStateParentRequest`.
ReattachState mReattachState; ///< Reattach state
uint16_t mAttachCounter; ///< Attach attempt counter.
uint16_t mAnnounceDelay; ///< Delay in between sending Announce messages during attach.
@ -1731,6 +1731,20 @@ private:
static constexpr uint32_t kAttachBackoffDelayToResetCounter =
OPENTHREAD_CONFIG_MLE_ATTACH_BACKOFF_DELAY_TO_RESET_BACKOFF_INTERVAL;
#if OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_3
// First attach cycle includes two Parent Requests to routers, followed by four to routers and REEDs.
static constexpr uint8_t kFirstAttachCycleTotalParentRequests = 6;
static constexpr uint8_t kFirstAttachCycleNumParentRequestToRouters = 2;
#else
// First attach cycle in Thread 1.1/1.2 includes a Parent Requests to routers, followed by one to routers and REEDs.
static constexpr uint8_t kFirstAttachCycleTotalParentRequests = 2;
static constexpr uint8_t kFirstAttachCycleNumParentRequestToRouters = 1;
#endif
// Next attach cycles includes one Parent Request to routers, followed by one to routers and REEDs.
static constexpr uint8_t kNextAttachCycleTotalParentRequests = 2;
static constexpr uint8_t kNextAttachCycleNumParentRequestToRouters = 1;
enum StartMode : uint8_t // Used in `Start()`.
{
kNormalAttach,
@ -1887,6 +1901,7 @@ private:
#endif
uint32_t Reattach(void);
bool HasAcceptableParentCandidate(void) const;
Error DetermineParentRequestType(ParentRequestType &aType) const;
bool IsBetterParent(uint16_t aRloc16,
LinkQuality aLinkQuality,

View File

@ -38,7 +38,7 @@ setup_leader
setup_node 3 "rdn" "router"
setup_node 2 "rdn" "router"
sleep 2
sleep 15
###########################################
# Verify topology and commissioners

View File

@ -38,7 +38,7 @@ expect_line "Done"
send "thread start\n"
expect_line "Done"
sleep 3
sleep 10
send "reset\n"
sleep 3

View File

@ -75,7 +75,7 @@ class Cert_5_1_01_RouterAttach(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -93,7 +93,7 @@ class Cert_5_1_02_ChildAddressTimeout(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -81,7 +81,7 @@ class Cert_5_1_03_RouterAddressReallocation(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER1].start()

View File

@ -83,7 +83,7 @@ class Cert_5_1_04_RouterAddressReallocation(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER1].start()

View File

@ -79,7 +79,7 @@ class Cert_5_1_05_RouterAddressTimeout(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER1].start()

View File

@ -75,7 +75,7 @@ class Cert_5_1_06_RemoveRouterId(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER1].start()

View File

@ -152,7 +152,7 @@ class Cert_5_1_07_MaxChildCount(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -93,7 +93,7 @@ class Cert_5_1_08_RouterAttachConnectivity(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
for i in range(2, 5):

View File

@ -95,7 +95,7 @@ class Cert_5_1_09_REEDAttachConnectivity(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
for i in range(2, 5):

View File

@ -87,7 +87,7 @@ class Cert_5_1_10_RouterAttachLinkQuality(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER1].start()

View File

@ -89,7 +89,7 @@ class Cert_5_1_11_REEDAttachLinkQuality(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[REED].start()

View File

@ -78,7 +78,7 @@ class Cert_5_1_12_NewRouterSync(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER1].start()

View File

@ -80,7 +80,7 @@ class Cert_5_1_13_RouterReset(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -92,7 +92,7 @@ class Cert_5_2_01_REEDAttach(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[DUT_ROUTER1].start()

View File

@ -311,7 +311,7 @@ class Cert_5_2_3_LeaderReject2Hops(thread_cert.TestCase):
def test(self):
self.nodes[DUT_LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[DUT_LEADER].get_state(), 'leader')
for i in range(2, 32):

View File

@ -169,7 +169,7 @@ class Cert_5_2_4_REEDUpgrade(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
for i in range(2, 17):

View File

@ -177,7 +177,7 @@ class Cert_5_2_5_AddressQuery(thread_cert.TestCase):
def test(self):
# 1. LEADER: DHCPv6 Server for prefix 2001::/64.
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[LEADER].add_prefix('2001::/64', 'pdros')
self.nodes[LEADER].register_netdata()

View File

@ -211,7 +211,7 @@ class Cert_5_2_06_RouterDowngrade(thread_cert.TestCase):
def test(self):
# 1 Ensure topology is formed correctly without ROUTER23.
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
for i in range(2, 24):

View File

@ -146,7 +146,7 @@ class Cert_5_2_7_REEDSynchronization_Base(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
for i in range(2, 17):

View File

@ -71,7 +71,7 @@ class Cert_5_3_1_LinkLocal(thread_cert.TestCase):
def test(self):
# 1
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[DUT_ROUTER1].start()

View File

@ -89,7 +89,7 @@ class Cert_5_3_2_RealmLocal(thread_cert.TestCase):
def test(self):
# 1
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER1].start()

View File

@ -96,7 +96,7 @@ class Cert_5_3_3_AddressQuery(thread_cert.TestCase):
def test(self):
# 1
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER1].start()

View File

@ -113,7 +113,7 @@ class Cert_5_3_4_AddressMapCache(thread_cert.TestCase):
def test(self):
# 1
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[DUT_ROUTER1].start()

View File

@ -86,7 +86,7 @@ class Cert_5_3_5_RoutingLinkQuality(thread_cert.TestCase):
def test(self):
# 1
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
for router in range(DUT_ROUTER1, ROUTER3 + 1):

View File

@ -86,7 +86,7 @@ class Cert_5_3_6_RouterIdMask(thread_cert.TestCase):
def test(self):
# 1
self.nodes[DUT_LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[DUT_LEADER].get_state(), 'leader')
self.nodes[ROUTER1].start()

View File

@ -111,7 +111,7 @@ class Cert_5_3_7_DuplicateAddress(thread_cert.TestCase):
def test(self):
self.nodes[DUT_LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[DUT_LEADER].get_state(), 'leader')
for i in range(ROUTER1, MED2 + 1):

View File

@ -96,7 +96,7 @@ class Cert_5_3_8_ChildAddressSet(thread_cert.TestCase):
def test(self):
self.nodes[DUT_LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[DUT_LEADER].get_state(), 'leader')
self.nodes[BR].start()

View File

@ -109,7 +109,7 @@ class Cert_5_3_09_AddressQuery(thread_cert.TestCase):
def test(self):
# 1 & 2 ALL: Build and verify the topology
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
# Configure the LEADER to be a DHCPv6 Border Router for prefixes

View File

@ -109,7 +109,7 @@ class Cert_5_3_10_AddressQuery(thread_cert.TestCase):
def test(self):
# 1 & 2
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[BR].start()

View File

@ -85,7 +85,7 @@ class Cert_5_3_11_AddressQueryTimeoutIntervals(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[DUT_ROUTER1].start()

View File

@ -79,7 +79,7 @@ class Cert_5_5_1_LeaderReboot(thread_cert.TestCase):
def test(self):
self.nodes[DUT_LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[DUT_LEADER].get_state(), 'leader')
self.nodes[DUT_ROUTER1].start()
@ -97,7 +97,7 @@ class Cert_5_5_1_LeaderReboot(thread_cert.TestCase):
self.nodes[DUT_LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[DUT_LEADER].get_state(), 'leader')
self.assertEqual(self.nodes[DUT_LEADER].get_addr16(), leader_rloc16)

View File

@ -67,7 +67,7 @@ class Cert_5_5_2_LeaderReboot(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()
@ -80,7 +80,7 @@ class Cert_5_5_2_LeaderReboot(thread_cert.TestCase):
self.nodes[LEADER].reset()
self._setUpLeader()
self.simulator.go(140)
self.simulator.go(150)
self.assertEqual(self.nodes[ROUTER].get_state(), 'leader')
self.nodes[LEADER].start()

View File

@ -85,7 +85,7 @@ class Cert_5_5_3_SplitMergeChildren(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER1].start()
@ -108,7 +108,7 @@ class Cert_5_5_3_SplitMergeChildren(thread_cert.TestCase):
self._setUpLeader()
self.nodes[ROUTER2].set_preferred_partition_id(0xffffffff)
self.simulator.go(140)
self.simulator.go(150)
self.assertEqual(self.nodes[ROUTER1].get_state(), 'leader')
self.assertEqual(self.nodes[ROUTER2].get_state(), 'leader')

View File

@ -78,7 +78,7 @@ class Cert_5_5_4_SplitMergeRouters(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER1].start()

View File

@ -121,7 +121,7 @@ class Cert_5_5_5_SplitMergeREED(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
for i in range(ROUTER2, ROUTER15 + 1):

View File

@ -73,7 +73,7 @@ class Cert_5_5_7_SplitMergeThreeWay(thread_cert.TestCase):
def test(self):
self.nodes[LEADER1].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER1].get_state(), 'leader')
self.nodes[ROUTER1].start()

View File

@ -72,7 +72,7 @@ class Cert_5_6_1_NetworkDataLeaderAsBr(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(4)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[LEADER].add_prefix('2001:2:0:1::/64', 'paros')

View File

@ -72,7 +72,7 @@ class Cert_5_6_2_NetworkDataRouterAsBr(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(4)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -72,7 +72,7 @@ class Cert_5_6_3_NetworkDataRegisterAfterAttachLeader(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(4)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -72,7 +72,7 @@ class Cert_5_6_4_NetworkDataRegisterAfterAttachRouter(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(4)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -72,7 +72,7 @@ class Cert_5_6_5_NetworkDataRegisterAfterAttachRouter(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(4)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -72,7 +72,7 @@ class Cert_5_6_6_NetworkDataExpiration(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(4)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -120,7 +120,7 @@ class Cert_5_6_7_NetworkDataRequestREED(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(4)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
for i in range(ROUTER1, ROUTER15 + 1):

View File

@ -78,7 +78,7 @@ class Cert_5_6_9_NetworkDataForwarding(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(4)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER1].start()

View File

@ -110,7 +110,7 @@ class Cert_5_7_01_CoapDiagCommands_Base(thread_cert.TestCase):
def test(self):
# 1 - Form topology
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER1].start()

View File

@ -159,7 +159,7 @@ class Cert_5_7_02_CoapDiagCommands(thread_cert.TestCase):
def test(self):
# 1 - Form topology
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
for i in range(2, 17):

View File

@ -104,7 +104,7 @@ class Cert_5_7_03_CoapDiagCommands_Base(thread_cert.TestCase):
def test(self):
# 1 - Form topology
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER1].start()

View File

@ -56,7 +56,7 @@ class Cert_5_8_2_KeyIncrement(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(4)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), "leader")
self.nodes[ROUTER].start()

View File

@ -57,7 +57,7 @@ class Cert_5_8_3_KeyIncrementRollOver(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(4)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -112,7 +112,7 @@ class Cert_5_8_04_SecurityPolicyTLV(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[COMMISSIONER_1].start()

View File

@ -75,7 +75,7 @@ class Cert_6_1_1_RouterAttach_Base(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ED].start()

View File

@ -84,7 +84,7 @@ class Cert_6_1_2_REEDAttach_Base(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[REED].start()

View File

@ -73,7 +73,7 @@ class Cert_6_1_3_RouterAttachConnectivity(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
for i in range(2, 5):

View File

@ -96,7 +96,7 @@ class Cert_6_1_4_REEDAttachConnectivity_Base(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -75,7 +75,7 @@ class Cert_6_1_5_REEDAttachConnectivity(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER1].start()
@ -95,6 +95,8 @@ class Cert_6_1_5_REEDAttachConnectivity(thread_cert.TestCase):
self.assertEqual(self.nodes[ED].get_state(), 'child')
self.assertEqual(self.nodes[REED1].get_state(), 'router')
self.num_parent_requests = 1 if self.nodes[ED].version in ['1.1', '1.2'] else 2
self.collect_ipaddrs()
addrs = self.nodes[ED].get_addrs()
for addr in addrs:
@ -109,12 +111,14 @@ class Cert_6_1_5_REEDAttachConnectivity(thread_cert.TestCase):
_reed1_pkts = pkts.filter_wpan_src64(REED_1)
_ed_pkts = pkts.filter_wpan_src64(ED)
# Step 2: The DUT MUST send a MLE Parent Request to the
# Step 2: The DUT MUST send MLE Parent Requests to the
# All-Routers multicast address
_ed_pkts.filter_mle_cmd(MLE_PARENT_REQUEST).filter_ipv6_dst(
LINK_LOCAL_ALL_ROUTERS_MULTICAST_ADDRESS).must_next().must_verify(
lambda p: {MODE_TLV, CHALLENGE_TLV, SCAN_MASK_TLV, VERSION_TLV} == set(p.mle.tlv.type
) and p.mle.tlv.scan_mask.r == 1)
for num in range(self.num_parent_requests):
_ed_pkts.filter_mle_cmd(MLE_PARENT_REQUEST).filter_ipv6_dst(
LINK_LOCAL_ALL_ROUTERS_MULTICAST_ADDRESS).must_next().must_verify(
lambda p: {MODE_TLV, CHALLENGE_TLV, SCAN_MASK_TLV, VERSION_TLV} == set(
p.mle.tlv.type) and p.mle.tlv.scan_mask.r == 1)
# Step 3: REED_1 and REED_2 No response to Parent Request
# Step 4: DUT Send MLE Parent Request with Scan Mask set to Routers AND REEDs

View File

@ -91,7 +91,7 @@ class Cert_6_1_6_REEDAttachLinkQuality_Base(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[REED].start()

View File

@ -67,7 +67,7 @@ class Cert_6_1_7_RouterAttachLinkQuality(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER1].start()

View File

@ -83,7 +83,7 @@ class Cert_6_2_1_NewPartition_Base(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER1].start()
@ -95,7 +95,7 @@ class Cert_6_2_1_NewPartition_Base(thread_cert.TestCase):
self.assertEqual(self.nodes[MTD].get_state(), 'child')
self.nodes[LEADER].stop()
self.simulator.go(140)
self.simulator.go(150)
self.assertEqual(self.nodes[ROUTER1].get_state(), 'leader')
self.assertEqual(self.nodes[MTD].get_state(), 'child')

View File

@ -68,7 +68,7 @@ class Cert_6_2_2_NewPartition(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER1].start()

View File

@ -62,7 +62,7 @@ class Cert_6_3_1_OrphanReattach(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -56,7 +56,7 @@ class Cert_6_3_2_NetworkDataUpdate(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ED].start()

View File

@ -75,7 +75,7 @@ class Cert_6_4_1_LinkLocal_Base(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[MTD].start()

View File

@ -80,7 +80,7 @@ class Cert_6_4_2_RealmLocal_Base(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -59,7 +59,7 @@ class Cert_6_5_1_ChildResetReattach(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ED].start()

View File

@ -91,7 +91,7 @@ class Cert_6_5_2_ChildResetReattach_Base(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -60,7 +60,7 @@ class Cert_6_5_3_ChildResetSynchronize(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ED].start()

View File

@ -57,7 +57,7 @@ class Cert_6_6_1_KeyIncrement(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), "leader")
self.nodes[ED].start()

View File

@ -58,7 +58,7 @@ class Cert_6_6_2_KeyIncrement1(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ED].start()

View File

@ -98,7 +98,7 @@ class Cert_7_1_1_BorderRouterAsLeader(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[LEADER].add_prefix(PREFIX_2001, 'paros')

View File

@ -72,7 +72,7 @@ class Cert_7_1_2_BorderRouterAsRouter(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -99,7 +99,7 @@ class Cert_7_1_3_BorderRouterAsLeader(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -72,7 +72,7 @@ class Cert_7_1_4_BorderRouterAsRouter(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -97,7 +97,7 @@ class Cert_7_1_5_BorderRouterAsRouter(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -113,7 +113,7 @@ class Cert_7_1_6_BorderRouterAsLeader(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
for i in (2, 3):

View File

@ -113,7 +113,7 @@ class Cert_7_1_7_BorderRouterAsLeader(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
for i in (2, 3):
@ -146,7 +146,7 @@ class Cert_7_1_7_BorderRouterAsLeader(thread_cert.TestCase):
# Wait for NETWORK_ID_TIMEOUT taking effect
# Router_2 creates a new partition
self.simulator.go(60)
self.simulator.go(80)
self.assertEqual(self.nodes[ROUTER_2].get_state(), 'leader')
self.nodes[ROUTER_2].remove_domain_prefix(PREFIX_1)
self.nodes[ROUTER_2].add_prefix(PREFIX_2, 'paros')

View File

@ -92,7 +92,7 @@ class Cert_7_1_8_BorderRouterAsFED(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -78,7 +78,7 @@ class Cert_8_1_01_Commissioning(thread_cert.TestCase):
def test(self):
self.nodes[COMMISSIONER].interface_up()
self.nodes[COMMISSIONER].thread_start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[COMMISSIONER].get_state(), 'leader')
self.nodes[COMMISSIONER].commissioner_start()
self.simulator.go(3)

View File

@ -57,7 +57,7 @@ class Cert_8_1_02_Commissioning(thread_cert.TestCase):
def test(self):
self.nodes[COMMISSIONER].interface_up()
self.nodes[COMMISSIONER].thread_start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[COMMISSIONER].get_state(), 'leader')
self.nodes[COMMISSIONER].commissioner_start()
self.simulator.go(3)

View File

@ -77,7 +77,7 @@ class Cert_8_1_06_Commissioning(thread_cert.TestCase):
def test(self):
self.nodes[COMMISSIONER].interface_up()
self.nodes[COMMISSIONER].thread_start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[COMMISSIONER].get_state(), 'leader')
self.nodes[COMMISSIONER].commissioner_set_provisioning_url(URL_1)
self.nodes[COMMISSIONER].commissioner_start()

View File

@ -63,7 +63,7 @@ class Cert_8_2_01_JoinerRouter(thread_cert.TestCase):
def test(self):
self.nodes[COMMISSIONER].interface_up()
self.nodes[COMMISSIONER].thread_start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[COMMISSIONER].get_state(), 'leader')
self.nodes[COMMISSIONER].commissioner_start()

View File

@ -63,7 +63,7 @@ class Cert_8_2_02_JoinerRouter(thread_cert.TestCase):
def test(self):
self.nodes[COMMISSIONER].interface_up()
self.nodes[COMMISSIONER].thread_start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[COMMISSIONER].get_state(), 'leader')
self.nodes[COMMISSIONER].commissioner_start()

View File

@ -89,7 +89,7 @@ class Cert_8_2_05_JoinerRouter(thread_cert.TestCase):
def test(self):
self.nodes[COMMISSIONER].interface_up()
self.nodes[COMMISSIONER].thread_start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[COMMISSIONER].get_state(), 'leader')
self.nodes[COMMISSIONER].commissioner_set_provisioning_url(URL_1)

View File

@ -78,7 +78,7 @@ class Cert_8_3_01_CommissionerPetition(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[COMMISSIONER].start()
self.simulator.go(config.ROUTER_STARTUP_DELAY)

View File

@ -74,7 +74,7 @@ class Cert_9_2_01_MGMTCommissionerGet(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[COMMISSIONER].start()

View File

@ -75,7 +75,7 @@ class Cert_9_2_02_MGMTCommissionerSet(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[COMMISSIONER].start()

View File

@ -75,7 +75,7 @@ class Cert_9_2_03_ActiveDatasetGet(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[COMMISSIONER].start()

View File

@ -65,7 +65,7 @@ class Cert_9_2_04_ActiveDataset(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[COMMISSIONER].start()

View File

@ -76,7 +76,7 @@ class Cert_9_2_05_ActiveDataset(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[ROUTER].start()

View File

@ -143,7 +143,7 @@ class Cert_9_2_06_DatasetDissemination(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[COMMISSIONER].start()

View File

@ -77,7 +77,7 @@ class Cert_9_2_7_DelayTimer(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[COMMISSIONER].start()
@ -90,12 +90,12 @@ class Cert_9_2_7_DelayTimer(thread_cert.TestCase):
self.simulator.go(5)
self.nodes[ROUTER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[ROUTER].get_state(), 'leader')
self.nodes[LEADER].add_allowlist(self.nodes[ROUTER].get_addr64())
self.nodes[ROUTER].add_allowlist(self.nodes[LEADER].get_addr64())
self.simulator.go(20)
self.simulator.go(35)
self.assertEqual(self.nodes[COMMISSIONER].get_state(), 'router')
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')

View File

@ -111,7 +111,7 @@ class Cert_9_2_8_PersistentDatasets_Base(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[COMMISSIONER].start()

View File

@ -131,7 +131,7 @@ class Cert_9_2_09_PendingPartition(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[COMMISSIONER].start()

View File

@ -100,7 +100,7 @@ class Cert_9_2_10_PendingPartition(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[COMMISSIONER].start()

View File

@ -135,7 +135,7 @@ class Cert_9_2_11_NetworkKey(thread_cert.TestCase):
def test(self):
self.nodes[LEADER].start()
self.simulator.go(5)
self.simulator.go(config.LEADER_STARTUP_DELAY)
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
self.nodes[COMMISSIONER].start()

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