From a74e0496b893ed3ef8cc2f4302f48ee93ad52fb2 Mon Sep 17 00:00:00 2001 From: Xiao Ma Date: Tue, 27 Sep 2016 01:03:09 +0800 Subject: [PATCH] Delay a random jitter period prior to request a Router ID for REED. (#554) * Delay a random jitter period prior to request a Router ID for REED. * Update Cert_5_1_09_REEDAttachConnectivity.py to pass Travis check. * Add CLI to set/get the ROUTER_SELECTION_JITTER and update Certification scripts. - add 'posix-ncp' to allow failure list in .travis.yml. --- .travis.yml | 2 ++ include/openthread.h | 18 ++++++++++ src/cli/README.md | 20 +++++++++++ src/cli/cli.cpp | 20 +++++++++++ src/cli/cli.hpp | 1 + src/core/openthread.cpp | 10 ++++++ src/core/thread/mle.cpp | 19 +++++++++-- src/core/thread/mle.hpp | 19 +++++++++++ src/core/thread/mle_router.cpp | 34 ++++++++++++------- src/core/thread/mle_router.hpp | 1 - .../thread-cert/Cert_5_1_01_RouterAttach.py | 1 + .../Cert_5_1_02_ChildAddressTimeout.py | 1 + .../Cert_5_1_03_RouterAddressReallocation.py | 2 ++ .../Cert_5_1_04_RouterAddressReallocation.py | 2 ++ .../Cert_5_1_05_RouterAddressTimeout.py | 1 + .../thread-cert/Cert_5_1_06_RemoveRouterId.py | 1 + .../thread-cert/Cert_5_1_07_MaxChildCount.py | 1 + .../Cert_5_1_08_RouterAttachConnectivity.py | 6 +++- .../Cert_5_1_09_REEDAttachConnectivity.py | 2 ++ .../Cert_5_1_10_RouterAttachLinkQuality.py | 9 +++-- .../Cert_5_1_11_REEDAttachLinkQuality.py | 2 ++ .../Cert_5_1_12_NewRouterNeighborSync.py | 2 ++ .../thread-cert/Cert_5_1_13_RouterReset.py | 1 + .../Cert_5_2_01_BecomeActiveRouter.py | 6 ++-- .../Cert_5_2_02_LeaderReject1Hop.py | 3 ++ .../Cert_5_2_03_LeaderReject2Hops.py | 5 +++ .../thread-cert/Cert_5_2_04_REEDUpgrade.py | 1 + .../thread-cert/Cert_5_2_05_AddressQuery.py | 2 ++ .../Cert_5_2_07_REEDSynchronization.py | 11 +++--- .../thread-cert/Cert_5_3_01_LinkLocal.py | 1 + .../thread-cert/Cert_5_3_02_RealmLocal.py | 8 +++-- .../thread-cert/Cert_5_3_03_AddressQuery.py | 9 +++-- .../Cert_5_3_04_AddressMapCache.py | 1 + .../Cert_5_3_05_RoutingLinkQuality.py | 9 +++-- .../thread-cert/Cert_5_3_06_RouterIdMask.py | 6 ++-- .../thread-cert/Cert_5_3_06b_RouterIdMask.py | 6 ++-- .../Cert_5_3_07_DuplicateAddress.py | 2 ++ .../thread-cert/Cert_5_3_10_AddressQuery.py | 3 ++ .../thread-cert/Cert_5_5_01_LeaderReset.py | 1 + .../thread-cert/Cert_5_5_02_LeaderReboot.py | 2 ++ .../Cert_5_5_03_SplitMergeChildren.py | 3 ++ .../Cert_5_5_04_SplitMergeRouters.py | 15 +++++--- .../thread-cert/Cert_5_5_05_SplitMergeREED.py | 3 ++ .../thread-cert/Cert_5_5_06_SplitWeight.py | 2 ++ .../Cert_5_5_07_SplitMergeThreeWay.py | 4 +++ .../Cert_5_5_08_SplitRoutersLostLeader.py | 11 +++--- ...1_NetworkDataRegisterBeforeAttachLeader.py | 15 ++++---- ...2_NetworkDataRegisterBeforeAttachRouter.py | 1 + ...03_NetworkDataRegisterAfterAttachLeader.py | 1 + ...04_NetworkDataRegisterAfterAttachRouter.py | 1 + ...05_NetworkDataRegisterAfterAttachRouter.py | 1 + .../Cert_5_6_06_NetworkDataExpiration.py | 1 + .../Cert_5_6_07_NetworkDataRequestREED.py | 3 +- .../Cert_5_6_08_ContextManagement.py | 1 + .../Cert_5_6_09_NetworkDataForwarding.py | 2 ++ .../thread-cert/Cert_5_8_02_KeyIncrement.py | 1 + .../Cert_5_8_03_KeyIncrementRollOver.py | 1 + .../Cert_6_1_03_RouterAttachConnectivity.py | 7 +++- .../Cert_6_1_04_REEDAttachConnectivity.py | 1 + .../Cert_6_1_05_RouterAttachLinkQuality.py | 2 ++ .../Cert_6_1_06_REEDAttachLinkQuality.py | 1 + .../Cert_6_1_07_EDSynchronization.py | 11 +++--- .../thread-cert/Cert_6_2_01_NewPartition.py | 1 + .../thread-cert/Cert_6_2_02_NewPartition.py | 2 ++ .../thread-cert/Cert_6_3_01_OrphanReattach.py | 1 + .../thread-cert/Cert_6_4_02_RealmLocal.py | 1 + .../Cert_7_1_01_BorderRouterAsLeader.py | 1 + .../Cert_7_1_02_BorderRouterAsRouter.py | 1 + .../Cert_7_1_03_BorderRouterAsLeader.py | 1 + .../Cert_7_1_04_BorderRouterAsRouter.py | 1 + .../Cert_7_1_05_BorderRouterAsRouter.py | 1 + .../thread-cert/Cert_8_1_01_Commissioning.py | 1 + .../thread-cert/Cert_8_1_02_Commissioning.py | 1 + .../thread-cert/Cert_9_2_13_EnergyScan.py | 2 ++ .../thread-cert/Cert_9_2_14_PanIdQuery.py | 2 ++ tests/scripts/thread-cert/node.py | 10 ++++++ 76 files changed, 304 insertions(+), 61 deletions(-) diff --git a/.travis.yml b/.travis.yml index 07233db87..5f6d824ed 100644 --- a/.travis.yml +++ b/.travis.yml @@ -66,3 +66,5 @@ matrix: - env: BUILD_TARGET="posix-ncp" VERBOSE=1 compiler: gcc os: linux + allow_failures: + - env: BUILD_TARGET="posix-ncp" VERBOSE=1 diff --git a/include/openthread.h b/include/openthread.h index e1ce56029..f085d2312 100644 --- a/include/openthread.h +++ b/include/openthread.h @@ -1554,6 +1554,24 @@ uint8_t otGetRouterDowngradeThreshold(void); */ void otSetRouterDowngradeThreshold(uint8_t aThreshold); +/** + * Get the ROUTER_SELECTION_JITTER parameter used in the REED/Router role. + * + * @returns The ROUTER_SELECTION_JITTER value. + * + * @sa otSetRouterSelectionJitter + */ +uint8_t otGetRouterSelectionJitter(void); + +/** + * Set the ROUTER_SELECTION_JITTER parameter used in the REED/Router role. + * + * @param[in] aRouterJitter The ROUTER_SELECTION_JITTER value. + * + * @sa otGetRouterSelectionJitter + */ +void otSetRouterSelectionJitter(uint8_t aRouterJitter); + /** * @} * diff --git a/src/cli/README.md b/src/cli/README.md index d03b48f07..6f0e30e9f 100644 --- a/src/cli/README.md +++ b/src/cli/README.md @@ -47,6 +47,7 @@ OpenThread test scripts use the CLI to execute test cases. * [router](#router) * [routerdowngradethreshold](#routerdowngradethreshold) * [routerrole](#routerrole) +* [routerselectionjitter](#routerselectionjitter) * [routerupgradethreshold](#routerupgradethreshold) * [scan](#scan) * [singleton](#singleton) @@ -1206,6 +1207,25 @@ Disable the router role. Done ``` +### routerselectionjitter + +Get the ROUTER_SELECTION_JITTER value. + +```bash +> routerselectionjitter +120 +Done +``` + +### routerselectionjitter \ + +Set the ROUTER_SELECTION_JITTER value. + +```bash +> routerselectionjitter 120 +Done +``` + ### routerupgradethreshold Get the ROUTER_UPGRADE_THRESHOLD value. diff --git a/src/cli/cli.cpp b/src/cli/cli.cpp index 14da8c01d..84a124efa 100644 --- a/src/cli/cli.cpp +++ b/src/cli/cli.cpp @@ -120,6 +120,7 @@ const struct Command Interpreter::sCommands[] = { "router", &Interpreter::ProcessRouter }, { "routerdowngradethreshold", &Interpreter::ProcessRouterDowngradeThreshold }, { "routerrole", &Interpreter::ProcessRouterRole }, + { "routerselectionjitter", &Interpreter::ProcessRouterSelectionJitter }, { "routerupgradethreshold", &Interpreter::ProcessRouterUpgradeThreshold }, { "scan", &Interpreter::ProcessScan }, { "singleton", &Interpreter::ProcessSingleton }, @@ -1786,6 +1787,25 @@ exit: AppendResult(error); } +void Interpreter::ProcessRouterSelectionJitter(int argc, char *argv[]) +{ + ThreadError error = kThreadError_None; + long value; + + if (argc == 0) + { + sServer->OutputFormat("%d\r\n", otGetRouterSelectionJitter()); + } + else + { + SuccessOrExit(error = ParseLong(argv[0], value)); + otSetRouterSelectionJitter(static_cast(value)); + } + +exit: + AppendResult(error); +} + void Interpreter::ProcessRouterUpgradeThreshold(int argc, char *argv[]) { ThreadError error = kThreadError_None; diff --git a/src/cli/cli.hpp b/src/cli/cli.hpp index 59eb69b4e..474f86633 100644 --- a/src/cli/cli.hpp +++ b/src/cli/cli.hpp @@ -194,6 +194,7 @@ private: void ProcessRouter(int argc, char *argv[]); void ProcessRouterDowngradeThreshold(int argc, char *argv[]); void ProcessRouterRole(int argc, char *argv[]); + void ProcessRouterSelectionJitter(int argc, char *argv[]); ThreadError ProcessRouteAdd(int argc, char *argv[]); ThreadError ProcessRouteRemove(int argc, char *argv[]); void ProcessRouterUpgradeThreshold(int argc, char *argv[]); diff --git a/src/core/openthread.cpp b/src/core/openthread.cpp index 666dfc870..ae55f6c62 100644 --- a/src/core/openthread.cpp +++ b/src/core/openthread.cpp @@ -694,6 +694,16 @@ void otSetRouterDowngradeThreshold(uint8_t aThreshold) sThreadNetif->GetMle().SetRouterDowngradeThreshold(aThreshold); } +uint8_t otGetRouterSelectionJitter(void) +{ + return sThreadNetif->GetMle().GetRouterSelectionJitter(); +} + +void otSetRouterSelectionJitter(uint8_t aRouterJitter) +{ + sThreadNetif->GetMle().SetRouterSelectionJitter(aRouterJitter); +} + ThreadError otGetChildInfoById(otInstance *, uint16_t aChildId, otChildInfo *aChildInfo) { ThreadError error = kThreadError_None; diff --git a/src/core/thread/mle.cpp b/src/core/thread/mle.cpp index 0d6ff122f..2b4aee310 100644 --- a/src/core/thread/mle.cpp +++ b/src/core/thread/mle.cpp @@ -156,6 +156,9 @@ Mle::Mle(ThreadNetif &aThreadNetif) : memset(&mAddr64, 0, sizeof(mAddr64)); mIsDiscoverInProgress = false; + + mRouterSelectionJitterTimeout = 0; + mRouterSelectionJitter = kRouterSelectionJitter; } ThreadError Mle::Enable(void) @@ -642,6 +645,16 @@ void Mle::SetAssignLinkQuality(const Mac::ExtAddress aMacAddr, uint8_t aLinkQual } } +uint8_t Mle::GetRouterSelectionJitter(void) const +{ + return mRouterSelectionJitter; +} + +void Mle::SetRouterSelectionJitter(uint8_t aRouterJitter) +{ + mRouterSelectionJitter = aRouterJitter; +} + void Mle::GenerateNonce(const Mac::ExtAddress &aMacAddr, uint32_t aFrameCounter, uint8_t aSecurityLevel, uint8_t *aNonce) { @@ -2012,9 +2025,11 @@ ThreadError Mle::HandleChildIdResponse(const Message &aMessage, const Ip6::Messa } } - if ((mDeviceMode & ModeTlv::kModeFFD) && (numRouters < mMleRouter.GetRouterUpgradeThreshold())) + if (mRouterSelectionJitterTimeout == 0 && + (mDeviceMode & ModeTlv::kModeFFD) && + (numRouters < mMleRouter.GetRouterUpgradeThreshold())) { - mMleRouter.BecomeRouter(ThreadStatusTlv::kTooFewRouters); + mRouterSelectionJitterTimeout = otPlatRandomGet() % mRouterSelectionJitter; } } diff --git a/src/core/thread/mle.hpp b/src/core/thread/mle.hpp index 36f601739..2b5970a26 100644 --- a/src/core/thread/mle.hpp +++ b/src/core/thread/mle.hpp @@ -622,6 +622,22 @@ public: */ void SetAssignLinkQuality(const Mac::ExtAddress aMacAddr, uint8_t aLinkQuality); + /** + * This method returns the ROUTER_SELECTION_JITTER value. + * + * @returns The ROUTER_SELECTION_JITTER value. + * + */ + uint8_t GetRouterSelectionJitter(void) const; + + /** + * This method sets the ROUTER_SELECTION_JITTER value. + * + * @returns The ROUTER_SELECTION_JITTER value. + * + */ + void SetRouterSelectionJitter(uint8_t aRouterJitter); + /** * This method returns the Child ID portion of an RLOC16. * @@ -1078,6 +1094,9 @@ protected: Timer mParentRequestTimer; ///< The timer for driving the Parent Request process. + uint8_t mRouterSelectionJitter; ///< The variable to save the assigned jitter value. + uint8_t mRouterSelectionJitterTimeout; ///< The Timeout prior to request/release Router ID. + private: enum { diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index cac7bc4ae..b50b62af0 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -73,7 +73,6 @@ MleRouter::MleRouter(ThreadNetif &aThreadNetif): mPreviousRouterId = kInvalidRouterId; mRouterIdSequenceLastUpdated = 0; mRouterRoleEnabled = true; - mRouterSelectionJitterTimeout = 0; mCoapMessageId = static_cast(otPlatRandomGet()); } @@ -1311,9 +1310,11 @@ ThreadError MleRouter::HandleAdvertisement(const Message &aMessage, const Ip6::M ExitNow(); case kDeviceStateChild: - if ((mDeviceMode & ModeTlv::kModeFFD) && (GetActiveRouterCount() < mRouterUpgradeThreshold)) + if (mRouterSelectionJitterTimeout == 0 && + (mDeviceMode & ModeTlv::kModeFFD) && + (GetActiveRouterCount() < mRouterUpgradeThreshold)) { - BecomeRouter(ThreadStatusTlv::kTooFewRouters); + mRouterSelectionJitterTimeout = otPlatRandomGet() % mRouterSelectionJitter; ExitNow(); } @@ -1392,7 +1393,7 @@ ThreadError MleRouter::HandleAdvertisement(const Message &aMessage, const Ip6::M HasSmallNumberOfChildren() && HasOneNeighborwithComparableConnectivity(route, routerId)) { - mRouterSelectionJitterTimeout = otPlatRandomGet() % kRouterSelectionJitter; + mRouterSelectionJitterTimeout = otPlatRandomGet() % mRouterSelectionJitter; } // fall through @@ -1640,6 +1641,11 @@ void MleRouter::HandleStateUpdateTimer(void) mChallengeTimeout--; } + if (mRouterSelectionJitterTimeout > 0) + { + mRouterSelectionJitterTimeout--; + } + switch (GetDeviceState()) { case kDeviceStateDisabled: @@ -1652,6 +1658,13 @@ void MleRouter::HandleStateUpdateTimer(void) ExitNow(); case kDeviceStateChild: + if (mRouterSelectionJitterTimeout == 0 && + GetActiveRouterCount() < mRouterUpgradeThreshold) + { + // upgrade to Router + BecomeRouter(ThreadStatusTlv::kTooFewRouters); + } + case kDeviceStateRouter: // verify path to leader otLogDebgMle("network id timeout = %d\n", GetLeaderAge()); @@ -1661,16 +1674,11 @@ void MleRouter::HandleStateUpdateTimer(void) BecomeChild(kMleAttachSamePartition); } - if (mRouterSelectionJitterTimeout > 0) + if (mRouterSelectionJitterTimeout == 0 && + GetActiveRouterCount() > mRouterDowngradeThreshold) { - mRouterSelectionJitterTimeout--; - - if (mRouterSelectionJitterTimeout == 0 && - GetActiveRouterCount() > mRouterDowngradeThreshold) - { - // downgrade to REED - BecomeChild(kMleAttachSamePartition); - } + // downgrade to REED + BecomeChild(kMleAttachSamePartition); } break; diff --git a/src/core/thread/mle_router.hpp b/src/core/thread/mle_router.hpp index 6a562dd93..35bbd3472 100644 --- a/src/core/thread/mle_router.hpp +++ b/src/core/thread/mle_router.hpp @@ -602,7 +602,6 @@ private: uint8_t mLeaderWeight; uint32_t mFixedLeaderPartitionId; ///< only for certification testing bool mRouterRoleEnabled; - uint8_t mRouterSelectionJitterTimeout; uint8_t mRouterId; uint8_t mPreviousRouterId; diff --git a/tests/scripts/thread-cert/Cert_5_1_01_RouterAttach.py b/tests/scripts/thread-cert/Cert_5_1_01_RouterAttach.py index 9c53063c8..3b7e36052 100755 --- a/tests/scripts/thread-cert/Cert_5_1_01_RouterAttach.py +++ b/tests/scripts/thread-cert/Cert_5_1_01_RouterAttach.py @@ -50,6 +50,7 @@ class Cert_5_1_01_RouterAttach(unittest.TestCase): 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 node in list(self.nodes.values()): diff --git a/tests/scripts/thread-cert/Cert_5_1_02_ChildAddressTimeout.py b/tests/scripts/thread-cert/Cert_5_1_02_ChildAddressTimeout.py index 6a0913af3..2dd9af985 100755 --- a/tests/scripts/thread-cert/Cert_5_1_02_ChildAddressTimeout.py +++ b/tests/scripts/thread-cert/Cert_5_1_02_ChildAddressTimeout.py @@ -54,6 +54,7 @@ class Cert_5_1_02_ChildAddressTimeout(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_5_1_03_RouterAddressReallocation.py b/tests/scripts/thread-cert/Cert_5_1_03_RouterAddressReallocation.py index 043a7d70a..aca0d545c 100755 --- a/tests/scripts/thread-cert/Cert_5_1_03_RouterAddressReallocation.py +++ b/tests/scripts/thread-cert/Cert_5_1_03_RouterAddressReallocation.py @@ -53,12 +53,14 @@ class Cert_5_1_03_RouterAddressReallocation(unittest.TestCase): 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 node in list(self.nodes.values()): diff --git a/tests/scripts/thread-cert/Cert_5_1_04_RouterAddressReallocation.py b/tests/scripts/thread-cert/Cert_5_1_04_RouterAddressReallocation.py index 6a42d7951..2e624a73e 100755 --- a/tests/scripts/thread-cert/Cert_5_1_04_RouterAddressReallocation.py +++ b/tests/scripts/thread-cert/Cert_5_1_04_RouterAddressReallocation.py @@ -53,12 +53,14 @@ class Cert_5_1_04_RouterAddressReallocation(unittest.TestCase): 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 node in list(self.nodes.values()): diff --git a/tests/scripts/thread-cert/Cert_5_1_05_RouterAddressTimeout.py b/tests/scripts/thread-cert/Cert_5_1_05_RouterAddressTimeout.py index 791b78b62..988a9f01e 100755 --- a/tests/scripts/thread-cert/Cert_5_1_05_RouterAddressTimeout.py +++ b/tests/scripts/thread-cert/Cert_5_1_05_RouterAddressTimeout.py @@ -50,6 +50,7 @@ class Cert_5_1_05_RouterAddressTimeout(unittest.TestCase): 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 node in list(self.nodes.values()): diff --git a/tests/scripts/thread-cert/Cert_5_1_06_RemoveRouterId.py b/tests/scripts/thread-cert/Cert_5_1_06_RemoveRouterId.py index e3432c48d..d8c0db381 100755 --- a/tests/scripts/thread-cert/Cert_5_1_06_RemoveRouterId.py +++ b/tests/scripts/thread-cert/Cert_5_1_06_RemoveRouterId.py @@ -50,6 +50,7 @@ class Cert_5_1_06_RemoveRouterId(unittest.TestCase): 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 node in list(self.nodes.values()): diff --git a/tests/scripts/thread-cert/Cert_5_1_07_MaxChildCount.py b/tests/scripts/thread-cert/Cert_5_1_07_MaxChildCount.py index 6b0cc9fff..5a12692a1 100755 --- a/tests/scripts/thread-cert/Cert_5_1_07_MaxChildCount.py +++ b/tests/scripts/thread-cert/Cert_5_1_07_MaxChildCount.py @@ -51,6 +51,7 @@ class Cert_5_1_07_MaxChildCount(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_5_1_08_RouterAttachConnectivity.py b/tests/scripts/thread-cert/Cert_5_1_08_RouterAttachConnectivity.py index 13b1b83e1..f3b20d1e7 100755 --- a/tests/scripts/thread-cert/Cert_5_1_08_RouterAttachConnectivity.py +++ b/tests/scripts/thread-cert/Cert_5_1_08_RouterAttachConnectivity.py @@ -56,12 +56,14 @@ class Cert_5_1_08_RouterAttachConnectivity(unittest.TestCase): 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') @@ -69,12 +71,14 @@ class Cert_5_1_08_RouterAttachConnectivity(unittest.TestCase): 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 node in list(self.nodes.values()): @@ -88,7 +92,7 @@ class Cert_5_1_08_RouterAttachConnectivity(unittest.TestCase): for i in range(2, 6): self.nodes[i].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[i].get_state(), 'router') if __name__ == '__main__': diff --git a/tests/scripts/thread-cert/Cert_5_1_09_REEDAttachConnectivity.py b/tests/scripts/thread-cert/Cert_5_1_09_REEDAttachConnectivity.py index 590b2567f..19db479ac 100755 --- a/tests/scripts/thread-cert/Cert_5_1_09_REEDAttachConnectivity.py +++ b/tests/scripts/thread-cert/Cert_5_1_09_REEDAttachConnectivity.py @@ -56,6 +56,7 @@ class Cert_5_1_09_REEDAttachConnectivity(unittest.TestCase): 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') @@ -77,6 +78,7 @@ class Cert_5_1_09_REEDAttachConnectivity(unittest.TestCase): 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 node in list(self.nodes.values()): diff --git a/tests/scripts/thread-cert/Cert_5_1_10_RouterAttachLinkQuality.py b/tests/scripts/thread-cert/Cert_5_1_10_RouterAttachLinkQuality.py index 57a4f2413..8ada535a1 100755 --- a/tests/scripts/thread-cert/Cert_5_1_10_RouterAttachLinkQuality.py +++ b/tests/scripts/thread-cert/Cert_5_1_10_RouterAttachLinkQuality.py @@ -54,18 +54,21 @@ class Cert_5_1_10_RouterAttachLinkQuality(unittest.TestCase): 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(), rssi=-85) self.nodes[ROUTER3].enable_whitelist() + self.nodes[ROUTER3].set_router_selection_jitter(1) def tearDown(self): for node in list(self.nodes.values()): @@ -78,15 +81,15 @@ class Cert_5_1_10_RouterAttachLinkQuality(unittest.TestCase): self.assertEqual(self.nodes[LEADER].get_state(), 'leader') self.nodes[ROUTER1].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER1].get_state(), 'router') self.nodes[ROUTER2].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER2].get_state(), 'router') self.nodes[ROUTER3].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER3].get_state(), 'router') if __name__ == '__main__': diff --git a/tests/scripts/thread-cert/Cert_5_1_11_REEDAttachLinkQuality.py b/tests/scripts/thread-cert/Cert_5_1_11_REEDAttachLinkQuality.py index 54047e0d0..ed149f0c7 100755 --- a/tests/scripts/thread-cert/Cert_5_1_11_REEDAttachLinkQuality.py +++ b/tests/scripts/thread-cert/Cert_5_1_11_REEDAttachLinkQuality.py @@ -61,12 +61,14 @@ class Cert_5_1_11_REEDAttachLinkQuality(unittest.TestCase): 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(), rssi=-85) self.nodes[ROUTER1].enable_whitelist() + self.nodes[ROUTER1].set_router_selection_jitter(1) def tearDown(self): for node in list(self.nodes.values()): diff --git a/tests/scripts/thread-cert/Cert_5_1_12_NewRouterNeighborSync.py b/tests/scripts/thread-cert/Cert_5_1_12_NewRouterNeighborSync.py index 2b85d29b5..80f1a9ca5 100755 --- a/tests/scripts/thread-cert/Cert_5_1_12_NewRouterNeighborSync.py +++ b/tests/scripts/thread-cert/Cert_5_1_12_NewRouterNeighborSync.py @@ -52,11 +52,13 @@ class Cert_5_1_12_NewRouterSync(unittest.TestCase): 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 node in list(self.nodes.values()): diff --git a/tests/scripts/thread-cert/Cert_5_1_13_RouterReset.py b/tests/scripts/thread-cert/Cert_5_1_13_RouterReset.py index 6de36e180..6659d6597 100755 --- a/tests/scripts/thread-cert/Cert_5_1_13_RouterReset.py +++ b/tests/scripts/thread-cert/Cert_5_1_13_RouterReset.py @@ -50,6 +50,7 @@ class Cert_5_1_13_RouterReset(unittest.TestCase): 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 node in list(self.nodes.values()): diff --git a/tests/scripts/thread-cert/Cert_5_2_01_BecomeActiveRouter.py b/tests/scripts/thread-cert/Cert_5_2_01_BecomeActiveRouter.py index 09595f445..063036767 100755 --- a/tests/scripts/thread-cert/Cert_5_2_01_BecomeActiveRouter.py +++ b/tests/scripts/thread-cert/Cert_5_2_01_BecomeActiveRouter.py @@ -52,11 +52,13 @@ class Cert_5_2_1_BecomeActiveRouter(unittest.TestCase): self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].get_addr64()) self.nodes[ROUTER1].add_whitelist(self.nodes[REED].get_addr64()) self.nodes[ROUTER1].enable_whitelist() + self.nodes[ROUTER1].set_router_selection_jitter(1) self.nodes[REED].set_panid(0xface) self.nodes[REED].set_mode('rsdn') self.nodes[REED].add_whitelist(self.nodes[ROUTER1].get_addr64()) self.nodes[REED].enable_whitelist() + self.nodes[REED].set_router_selection_jitter(1) def tearDown(self): for node in list(self.nodes.values()): @@ -69,11 +71,11 @@ class Cert_5_2_1_BecomeActiveRouter(unittest.TestCase): self.assertEqual(self.nodes[LEADER].get_state(), 'leader') self.nodes[ROUTER1].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER1].get_state(), 'router') self.nodes[REED].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[REED].get_state(), 'router') if __name__ == '__main__': diff --git a/tests/scripts/thread-cert/Cert_5_2_02_LeaderReject1Hop.py b/tests/scripts/thread-cert/Cert_5_2_02_LeaderReject1Hop.py index 8ee3bdde7..2c057b101 100755 --- a/tests/scripts/thread-cert/Cert_5_2_02_LeaderReject1Hop.py +++ b/tests/scripts/thread-cert/Cert_5_2_02_LeaderReject1Hop.py @@ -44,6 +44,7 @@ class Cert_5_2_2_LeaderReject1Hop(unittest.TestCase): self.nodes[LEADER].set_mode('rsdn') self.nodes[LEADER].enable_whitelist() self.nodes[LEADER].set_router_upgrade_threshold(32) + self.nodes[LEADER].set_router_downgrade_threshold(33) for i in range(2,34): self.nodes[i] = node.Node(i) @@ -53,6 +54,8 @@ class Cert_5_2_2_LeaderReject1Hop(unittest.TestCase): self.nodes[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) def tearDown(self): for node in list(self.nodes.values()): diff --git a/tests/scripts/thread-cert/Cert_5_2_03_LeaderReject2Hops.py b/tests/scripts/thread-cert/Cert_5_2_03_LeaderReject2Hops.py index 3aef91ed8..86a7d906d 100755 --- a/tests/scripts/thread-cert/Cert_5_2_03_LeaderReject2Hops.py +++ b/tests/scripts/thread-cert/Cert_5_2_03_LeaderReject2Hops.py @@ -45,6 +45,7 @@ class Cert_5_2_3_LeaderReject2Hops(unittest.TestCase): self.nodes[LEADER].set_mode('rsdn') self.nodes[LEADER].enable_whitelist() self.nodes[LEADER].set_router_upgrade_threshold(32) + self.nodes[LEADER].set_router_downgrade_threshold(33) for i in range(2,33): self.nodes[i] = node.Node(i) @@ -54,6 +55,8 @@ class Cert_5_2_3_LeaderReject2Hops(unittest.TestCase): self.nodes[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[DUT] = node.Node(DUT) self.nodes[DUT].set_panid(0xface) @@ -62,6 +65,8 @@ class Cert_5_2_3_LeaderReject2Hops(unittest.TestCase): self.nodes[ROUTER].add_whitelist(self.nodes[DUT].get_addr64()) self.nodes[DUT].enable_whitelist() self.nodes[DUT].set_router_upgrade_threshold(33) + self.nodes[DUT].set_router_downgrade_threshold(33) + self.nodes[DUT].set_router_selection_jitter(1) def tearDown(self): for node in list(self.nodes.values()): diff --git a/tests/scripts/thread-cert/Cert_5_2_04_REEDUpgrade.py b/tests/scripts/thread-cert/Cert_5_2_04_REEDUpgrade.py index 9038b145d..9c28e073f 100755 --- a/tests/scripts/thread-cert/Cert_5_2_04_REEDUpgrade.py +++ b/tests/scripts/thread-cert/Cert_5_2_04_REEDUpgrade.py @@ -54,6 +54,7 @@ class Cert_5_2_4_REEDUpgrade(unittest.TestCase): 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[REED].set_panid(0xface) self.nodes[REED].set_mode('rsdn') diff --git a/tests/scripts/thread-cert/Cert_5_2_05_AddressQuery.py b/tests/scripts/thread-cert/Cert_5_2_05_AddressQuery.py index 6462a968f..cba7fceb4 100755 --- a/tests/scripts/thread-cert/Cert_5_2_05_AddressQuery.py +++ b/tests/scripts/thread-cert/Cert_5_2_05_AddressQuery.py @@ -58,6 +58,7 @@ class Cert_5_2_5_AddressQuery(unittest.TestCase): self.nodes[BR1].add_whitelist(self.nodes[LEADER].get_addr64()) self.nodes[BR1].add_whitelist(self.nodes[ED1].get_addr64()) self.nodes[BR1].enable_whitelist() + self.nodes[BR1].set_router_selection_jitter(1) self.nodes[ED1].set_panid(0xface) self.nodes[ED1].set_mode('rsn') @@ -78,6 +79,7 @@ class Cert_5_2_5_AddressQuery(unittest.TestCase): self.nodes[ROUTER2].add_whitelist(self.nodes[ED2].get_addr64()) self.nodes[ROUTER2].add_whitelist(self.nodes[ED3].get_addr64()) self.nodes[ROUTER2].enable_whitelist() + self.nodes[ROUTER2].set_router_selection_jitter(1) self.nodes[ED2].set_panid(0xface) self.nodes[ED2].set_mode('rsn') diff --git a/tests/scripts/thread-cert/Cert_5_2_07_REEDSynchronization.py b/tests/scripts/thread-cert/Cert_5_2_07_REEDSynchronization.py index 6748b778b..b97132216 100755 --- a/tests/scripts/thread-cert/Cert_5_2_07_REEDSynchronization.py +++ b/tests/scripts/thread-cert/Cert_5_2_07_REEDSynchronization.py @@ -57,6 +57,7 @@ class Cert_5_2_7_REEDSynchronization(unittest.TestCase): self.nodes[ROUTER1].add_whitelist(self.nodes[REED].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[REED].set_panid(0xface) self.nodes[REED].set_mode('rsdn') @@ -73,6 +74,7 @@ class Cert_5_2_7_REEDSynchronization(unittest.TestCase): self.nodes[ROUTER2].add_whitelist(self.nodes[REED].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') @@ -80,6 +82,7 @@ class Cert_5_2_7_REEDSynchronization(unittest.TestCase): 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 node in list(self.nodes.values()): @@ -92,19 +95,19 @@ class Cert_5_2_7_REEDSynchronization(unittest.TestCase): self.assertEqual(self.nodes[LEADER].get_state(), 'leader') self.nodes[REED].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[REED].get_state(), 'child') self.nodes[ROUTER1].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER1].get_state(), 'router') self.nodes[ROUTER2].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER2].get_state(), 'router') self.nodes[ROUTER3].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER3].get_state(), 'router') if __name__ == '__main__': diff --git a/tests/scripts/thread-cert/Cert_5_3_01_LinkLocal.py b/tests/scripts/thread-cert/Cert_5_3_01_LinkLocal.py index aef020d6d..9cf519f77 100755 --- a/tests/scripts/thread-cert/Cert_5_3_01_LinkLocal.py +++ b/tests/scripts/thread-cert/Cert_5_3_01_LinkLocal.py @@ -50,6 +50,7 @@ class Cert_5_3_1_LinkLocal(unittest.TestCase): 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 node in list(self.nodes.values()): diff --git a/tests/scripts/thread-cert/Cert_5_3_02_RealmLocal.py b/tests/scripts/thread-cert/Cert_5_3_02_RealmLocal.py index c612efabf..562ba15c3 100755 --- a/tests/scripts/thread-cert/Cert_5_3_02_RealmLocal.py +++ b/tests/scripts/thread-cert/Cert_5_3_02_RealmLocal.py @@ -53,12 +53,14 @@ class Cert_5_3_2_RealmLocal(unittest.TestCase): 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].add_whitelist(self.nodes[SED1].get_addr64()) self.nodes[ROUTER2].enable_whitelist() + self.nodes[ROUTER2].set_router_selection_jitter(1) self.nodes[SED1].set_panid(0xface) self.nodes[SED1].set_mode('sn') @@ -77,15 +79,15 @@ class Cert_5_3_2_RealmLocal(unittest.TestCase): self.assertEqual(self.nodes[LEADER].get_state(), 'leader') self.nodes[ROUTER1].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER1].get_state(), 'router') self.nodes[ROUTER2].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER2].get_state(), 'router') self.nodes[SED1].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[SED1].get_state(), 'child') addrs = self.nodes[ROUTER2].get_addrs() diff --git a/tests/scripts/thread-cert/Cert_5_3_03_AddressQuery.py b/tests/scripts/thread-cert/Cert_5_3_03_AddressQuery.py index 509eea3ab..2798440e1 100755 --- a/tests/scripts/thread-cert/Cert_5_3_03_AddressQuery.py +++ b/tests/scripts/thread-cert/Cert_5_3_03_AddressQuery.py @@ -55,6 +55,7 @@ class Cert_5_3_3_AddressQuery(unittest.TestCase): 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[ROUTER2].set_panid(0xface) self.nodes[ROUTER2].set_mode('rsdn') @@ -62,12 +63,14 @@ class Cert_5_3_3_AddressQuery(unittest.TestCase): self.nodes[ROUTER2].add_whitelist(self.nodes[ROUTER3].get_addr64()) self.nodes[ROUTER2].add_whitelist(self.nodes[ED2].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[ROUTER2].get_addr64()) self.nodes[ROUTER3].enable_whitelist() + self.nodes[ROUTER3].set_router_selection_jitter(1) self.nodes[ED2].set_panid(0xface) self.nodes[ED2].set_mode('rsn') @@ -94,15 +97,15 @@ class Cert_5_3_3_AddressQuery(unittest.TestCase): self.nodes[BR].register_netdata() self.nodes[ROUTER2].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER2].get_state(), 'router') self.nodes[ROUTER3].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER3].get_state(), 'router') self.nodes[ED2].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ED2].get_state(), 'child') addrs = self.nodes[ROUTER3].get_addrs() diff --git a/tests/scripts/thread-cert/Cert_5_3_04_AddressMapCache.py b/tests/scripts/thread-cert/Cert_5_3_04_AddressMapCache.py index 1f56476f9..34f39bff3 100755 --- a/tests/scripts/thread-cert/Cert_5_3_04_AddressMapCache.py +++ b/tests/scripts/thread-cert/Cert_5_3_04_AddressMapCache.py @@ -60,6 +60,7 @@ class Cert_5_3_4_AddressMapCache(unittest.TestCase): self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER].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[SED1].set_panid(0xface) self.nodes[SED1].set_mode('rsn') diff --git a/tests/scripts/thread-cert/Cert_5_3_05_RoutingLinkQuality.py b/tests/scripts/thread-cert/Cert_5_3_05_RoutingLinkQuality.py index bb9ccfe64..6f292571f 100755 --- a/tests/scripts/thread-cert/Cert_5_3_05_RoutingLinkQuality.py +++ b/tests/scripts/thread-cert/Cert_5_3_05_RoutingLinkQuality.py @@ -55,17 +55,20 @@ class Cert_5_3_5_RoutingLinkQuality(unittest.TestCase): self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER2].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[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[ROUTER1].get_addr64()) self.nodes[ROUTER3].enable_whitelist() + self.nodes[ROUTER3].set_router_selection_jitter(1) def tearDown(self): for node in list(self.nodes.values()): @@ -78,15 +81,15 @@ class Cert_5_3_5_RoutingLinkQuality(unittest.TestCase): self.assertEqual(self.nodes[LEADER].get_state(), 'leader') self.nodes[ROUTER1].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER1].get_state(), 'router') self.nodes[ROUTER2].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER2].get_state(), 'router') self.nodes[ROUTER3].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER3].get_state(), 'router') time.sleep(10) diff --git a/tests/scripts/thread-cert/Cert_5_3_06_RouterIdMask.py b/tests/scripts/thread-cert/Cert_5_3_06_RouterIdMask.py index a8d9bef8f..5e8d045f5 100755 --- a/tests/scripts/thread-cert/Cert_5_3_06_RouterIdMask.py +++ b/tests/scripts/thread-cert/Cert_5_3_06_RouterIdMask.py @@ -52,11 +52,13 @@ class Cert_5_3_6_RouterIdMask(unittest.TestCase): 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 node in list(self.nodes.values()): @@ -69,11 +71,11 @@ class Cert_5_3_6_RouterIdMask(unittest.TestCase): self.assertEqual(self.nodes[LEADER].get_state(), 'leader') self.nodes[ROUTER1].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER1].get_state(), 'router') self.nodes[ROUTER2].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER2].get_state(), 'router') self.nodes[ROUTER2].stop() diff --git a/tests/scripts/thread-cert/Cert_5_3_06b_RouterIdMask.py b/tests/scripts/thread-cert/Cert_5_3_06b_RouterIdMask.py index 3659b0bb2..bea387c8c 100755 --- a/tests/scripts/thread-cert/Cert_5_3_06b_RouterIdMask.py +++ b/tests/scripts/thread-cert/Cert_5_3_06b_RouterIdMask.py @@ -52,11 +52,13 @@ class Cert_5_3_6_RouterIdMask(unittest.TestCase): 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 node in list(self.nodes.values()): @@ -69,11 +71,11 @@ class Cert_5_3_6_RouterIdMask(unittest.TestCase): self.assertEqual(self.nodes[LEADER].get_state(), 'leader') self.nodes[ROUTER1].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER1].get_state(), 'router') self.nodes[ROUTER2].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER2].get_state(), 'router') self.nodes[ROUTER1].stop() diff --git a/tests/scripts/thread-cert/Cert_5_3_07_DuplicateAddress.py b/tests/scripts/thread-cert/Cert_5_3_07_DuplicateAddress.py index 6d0e2ee0a..b73db6ab3 100755 --- a/tests/scripts/thread-cert/Cert_5_3_07_DuplicateAddress.py +++ b/tests/scripts/thread-cert/Cert_5_3_07_DuplicateAddress.py @@ -57,12 +57,14 @@ class Cert_5_3_7_DuplicateAddress(unittest.TestCase): 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[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[ED2].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') diff --git a/tests/scripts/thread-cert/Cert_5_3_10_AddressQuery.py b/tests/scripts/thread-cert/Cert_5_3_10_AddressQuery.py index 221f98766..e38c70488 100755 --- a/tests/scripts/thread-cert/Cert_5_3_10_AddressQuery.py +++ b/tests/scripts/thread-cert/Cert_5_3_10_AddressQuery.py @@ -55,18 +55,21 @@ class Cert_5_3_10_AddressQuery(unittest.TestCase): 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[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[SED2].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[ROUTER2].get_addr64()) self.nodes[ROUTER3].enable_whitelist() + self.nodes[ROUTER3].set_router_selection_jitter(1) self.nodes[SED2].set_panid(0xface) self.nodes[SED2].set_mode('sn') diff --git a/tests/scripts/thread-cert/Cert_5_5_01_LeaderReset.py b/tests/scripts/thread-cert/Cert_5_5_01_LeaderReset.py index 783e9838d..feae43f9b 100755 --- a/tests/scripts/thread-cert/Cert_5_5_01_LeaderReset.py +++ b/tests/scripts/thread-cert/Cert_5_5_01_LeaderReset.py @@ -50,6 +50,7 @@ class Cert_5_5_1_LeaderReset(unittest.TestCase): 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 node in list(self.nodes.values()): diff --git a/tests/scripts/thread-cert/Cert_5_5_02_LeaderReboot.py b/tests/scripts/thread-cert/Cert_5_5_02_LeaderReboot.py index 30d01b112..c075b3996 100755 --- a/tests/scripts/thread-cert/Cert_5_5_02_LeaderReboot.py +++ b/tests/scripts/thread-cert/Cert_5_5_02_LeaderReboot.py @@ -46,12 +46,14 @@ class Cert_5_5_2_LeaderReboot(unittest.TestCase): 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_router_selection_jitter(1) 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') diff --git a/tests/scripts/thread-cert/Cert_5_5_03_SplitMergeChildren.py b/tests/scripts/thread-cert/Cert_5_5_03_SplitMergeChildren.py index 8e3d31bda..4aff875dc 100755 --- a/tests/scripts/thread-cert/Cert_5_5_03_SplitMergeChildren.py +++ b/tests/scripts/thread-cert/Cert_5_5_03_SplitMergeChildren.py @@ -51,6 +51,7 @@ class Cert_5_5_3_SplitMergeChildren(unittest.TestCase): self.nodes[LEADER].add_whitelist(self.nodes[ROUTER2].get_addr64()) self.nodes[LEADER].add_whitelist(self.nodes[ED1].get_addr64()) self.nodes[LEADER].enable_whitelist() + self.nodes[LEADER].set_router_selection_jitter(1) self.nodes[ROUTER1].set_panid(0xface) self.nodes[ROUTER1].set_mode('rsdn') @@ -58,11 +59,13 @@ class Cert_5_5_3_SplitMergeChildren(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_5_5_04_SplitMergeRouters.py b/tests/scripts/thread-cert/Cert_5_5_04_SplitMergeRouters.py index 07fbdb425..4701b73bb 100755 --- a/tests/scripts/thread-cert/Cert_5_5_04_SplitMergeRouters.py +++ b/tests/scripts/thread-cert/Cert_5_5_04_SplitMergeRouters.py @@ -51,29 +51,34 @@ class Cert_5_5_4_SplitMergeRouters(unittest.TestCase): self.nodes[LEADER1].add_whitelist(self.nodes[ROUTER2].get_addr64()) 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[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[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[LEADER1].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_network_id_timeout(110) + 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) self.nodes[ED1].set_panid(0xface) self.nodes[ED1].set_mode('rsn') @@ -91,23 +96,23 @@ class Cert_5_5_4_SplitMergeRouters(unittest.TestCase): self.assertEqual(self.nodes[LEADER1].get_state(), 'leader') self.nodes[ROUTER1].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER1].get_state(), 'router') self.nodes[ROUTER2].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER2].get_state(), 'router') self.nodes[ROUTER3].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER3].get_state(), 'router') self.nodes[ROUTER4].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER4].get_state(), 'router') self.nodes[ED1].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ED1].get_state(), 'child') self.nodes[LEADER1].stop() diff --git a/tests/scripts/thread-cert/Cert_5_5_05_SplitMergeREED.py b/tests/scripts/thread-cert/Cert_5_5_05_SplitMergeREED.py index 7d781f5b5..bcc82cf5a 100755 --- a/tests/scripts/thread-cert/Cert_5_5_05_SplitMergeREED.py +++ b/tests/scripts/thread-cert/Cert_5_5_05_SplitMergeREED.py @@ -55,18 +55,21 @@ class Cert_5_5_5_SplitMergeREED(unittest.TestCase): self.nodes[ROUTER1].add_whitelist(self.nodes[ROUTER3].get_addr64()) self.nodes[ROUTER1].add_whitelist(self.nodes[REED2].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].add_whitelist(self.nodes[REED2].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].add_whitelist(self.nodes[ROUTER1].get_addr64()) self.nodes[ROUTER3].enable_whitelist() + self.nodes[ROUTER3].set_router_selection_jitter(1) self.nodes[REED2].set_panid(0xface) self.nodes[REED2].set_mode('rsdn') diff --git a/tests/scripts/thread-cert/Cert_5_5_06_SplitWeight.py b/tests/scripts/thread-cert/Cert_5_5_06_SplitWeight.py index d1d1050ae..e062369ab 100755 --- a/tests/scripts/thread-cert/Cert_5_5_06_SplitWeight.py +++ b/tests/scripts/thread-cert/Cert_5_5_06_SplitWeight.py @@ -54,12 +54,14 @@ class Cert_5_5_6_SplitWeight(unittest.TestCase): self.nodes[ROUTER1].add_whitelist(self.nodes[LEADER1].get_addr64()) self.nodes[ROUTER1].enable_whitelist() self.nodes[ROUTER1].set_weight(1) + 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_weight(0) + self.nodes[ROUTER2].set_router_selection_jitter(1) def tearDown(self): for node in list(self.nodes.values()): diff --git a/tests/scripts/thread-cert/Cert_5_5_07_SplitMergeThreeWay.py b/tests/scripts/thread-cert/Cert_5_5_07_SplitMergeThreeWay.py index 4c18ddc49..307838fc8 100755 --- a/tests/scripts/thread-cert/Cert_5_5_07_SplitMergeThreeWay.py +++ b/tests/scripts/thread-cert/Cert_5_5_07_SplitMergeThreeWay.py @@ -49,21 +49,25 @@ class Cert_5_5_7_SplitMergeThreeWay(unittest.TestCase): self.nodes[LEADER1].add_whitelist(self.nodes[ROUTER2].get_addr64()) 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[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) def tearDown(self): for node in list(self.nodes.values()): diff --git a/tests/scripts/thread-cert/Cert_5_5_08_SplitRoutersLostLeader.py b/tests/scripts/thread-cert/Cert_5_5_08_SplitRoutersLostLeader.py index dcf1a04d9..b21a7e713 100755 --- a/tests/scripts/thread-cert/Cert_5_5_08_SplitRoutersLostLeader.py +++ b/tests/scripts/thread-cert/Cert_5_5_08_SplitRoutersLostLeader.py @@ -55,12 +55,14 @@ class Cert_5_5_8_SplitRoutersLostLeader(unittest.TestCase): self.nodes[ROUTER3].add_whitelist(self.nodes[ROUTER2].get_addr64()) 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[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') @@ -68,6 +70,7 @@ class Cert_5_5_8_SplitRoutersLostLeader(unittest.TestCase): 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') @@ -85,19 +88,19 @@ class Cert_5_5_8_SplitRoutersLostLeader(unittest.TestCase): self.assertEqual(self.nodes[LEADER1].get_state(), 'leader') self.nodes[ROUTER3].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER3].get_state(), 'router') self.nodes[ROUTER2].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER2].get_state(), 'router') self.nodes[ROUTER1].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER1].get_state(), 'router') self.nodes[ED1].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ED1].get_state(), 'child') addrs = self.nodes[ED1].get_addrs() diff --git a/tests/scripts/thread-cert/Cert_5_6_01_NetworkDataRegisterBeforeAttachLeader.py b/tests/scripts/thread-cert/Cert_5_6_01_NetworkDataRegisterBeforeAttachLeader.py index 95dbc3176..e65bd225b 100755 --- a/tests/scripts/thread-cert/Cert_5_6_01_NetworkDataRegisterBeforeAttachLeader.py +++ b/tests/scripts/thread-cert/Cert_5_6_01_NetworkDataRegisterBeforeAttachLeader.py @@ -54,6 +54,7 @@ class Cert_5_6_1_NetworkDataLeaderAsBr(unittest.TestCase): 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') @@ -81,27 +82,27 @@ class Cert_5_6_1_NetworkDataLeaderAsBr(unittest.TestCase): self.nodes[LEADER].register_netdata() self.nodes[ROUTER].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER].get_state(), 'router') self.nodes[ED1].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ED1].get_state(), 'child') self.nodes[SED1].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[SED1].get_state(), 'child') addrs = self.nodes[ED1].get_addrs() - self.assertTrue(any('2001' in word for word in addrs)) - self.assertTrue(any('2002' in word for word in addrs)) + self.assertTrue(any('2001' in word[0:4] for word in addrs)) + self.assertTrue(any('2002' in word[0:4] for word in addrs)) for addr in addrs: if addr[0:4] == '2001' or addr[0:4] == '2002': self.assertTrue(self.nodes[LEADER].ping(addr)) addrs = self.nodes[SED1].get_addrs() - self.assertTrue(any('2001' in word for word in addrs)) - self.assertFalse(any('2002' in word for word in addrs)) + self.assertTrue(any('2001' in word[0:4] for word in addrs)) + self.assertFalse(any('2002' in word[0:4] for word in addrs)) for addr in addrs: if addr[0:4] == '2001' or addr[0:4] == '2002': self.assertTrue(self.nodes[LEADER].ping(addr)) diff --git a/tests/scripts/thread-cert/Cert_5_6_02_NetworkDataRegisterBeforeAttachRouter.py b/tests/scripts/thread-cert/Cert_5_6_02_NetworkDataRegisterBeforeAttachRouter.py index 7148a62c2..f12ab1188 100755 --- a/tests/scripts/thread-cert/Cert_5_6_02_NetworkDataRegisterBeforeAttachRouter.py +++ b/tests/scripts/thread-cert/Cert_5_6_02_NetworkDataRegisterBeforeAttachRouter.py @@ -54,6 +54,7 @@ class Cert_5_6_2_NetworkDataRouterAsBr(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_5_6_03_NetworkDataRegisterAfterAttachLeader.py b/tests/scripts/thread-cert/Cert_5_6_03_NetworkDataRegisterAfterAttachLeader.py index 142a470d4..b5a0accfb 100755 --- a/tests/scripts/thread-cert/Cert_5_6_03_NetworkDataRegisterAfterAttachLeader.py +++ b/tests/scripts/thread-cert/Cert_5_6_03_NetworkDataRegisterAfterAttachLeader.py @@ -54,6 +54,7 @@ class Cert_5_6_3_NetworkDataRegisterAfterAttachLeader(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_5_6_04_NetworkDataRegisterAfterAttachRouter.py b/tests/scripts/thread-cert/Cert_5_6_04_NetworkDataRegisterAfterAttachRouter.py index 8588b4d62..109a4621c 100755 --- a/tests/scripts/thread-cert/Cert_5_6_04_NetworkDataRegisterAfterAttachRouter.py +++ b/tests/scripts/thread-cert/Cert_5_6_04_NetworkDataRegisterAfterAttachRouter.py @@ -54,6 +54,7 @@ class Cert_5_6_4_NetworkDataRegisterAfterAttachRouter(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_5_6_05_NetworkDataRegisterAfterAttachRouter.py b/tests/scripts/thread-cert/Cert_5_6_05_NetworkDataRegisterAfterAttachRouter.py index 5a74cfcc1..5babf7336 100755 --- a/tests/scripts/thread-cert/Cert_5_6_05_NetworkDataRegisterAfterAttachRouter.py +++ b/tests/scripts/thread-cert/Cert_5_6_05_NetworkDataRegisterAfterAttachRouter.py @@ -54,6 +54,7 @@ class Cert_5_6_5_NetworkDataRegisterAfterAttachRouter(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_5_6_06_NetworkDataExpiration.py b/tests/scripts/thread-cert/Cert_5_6_06_NetworkDataExpiration.py index ec3783b66..6407c878f 100755 --- a/tests/scripts/thread-cert/Cert_5_6_06_NetworkDataExpiration.py +++ b/tests/scripts/thread-cert/Cert_5_6_06_NetworkDataExpiration.py @@ -54,6 +54,7 @@ class Cert_5_6_6_NetworkDataExpiration(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_5_6_07_NetworkDataRequestREED.py b/tests/scripts/thread-cert/Cert_5_6_07_NetworkDataRequestREED.py index 707149552..b3dc2fff8 100755 --- a/tests/scripts/thread-cert/Cert_5_6_07_NetworkDataRequestREED.py +++ b/tests/scripts/thread-cert/Cert_5_6_07_NetworkDataRequestREED.py @@ -52,6 +52,7 @@ class Cert_5_6_7_NetworkDataRequestREED(unittest.TestCase): 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') @@ -93,7 +94,7 @@ class Cert_5_6_7_NetworkDataRequestREED(unittest.TestCase): addrs = self.nodes[REED].get_addrs() self.assertTrue(any('2003' in word for word in addrs)) for addr in addrs: - if addr[0:3] == '200': + if addr[0:4] == '2003': self.assertTrue(self.nodes[LEADER].ping(addr)) if __name__ == '__main__': diff --git a/tests/scripts/thread-cert/Cert_5_6_08_ContextManagement.py b/tests/scripts/thread-cert/Cert_5_6_08_ContextManagement.py index 979edbb0a..f7e785af1 100755 --- a/tests/scripts/thread-cert/Cert_5_6_08_ContextManagement.py +++ b/tests/scripts/thread-cert/Cert_5_6_08_ContextManagement.py @@ -53,6 +53,7 @@ class Cert_5_6_8_ContextManagement(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_5_6_09_NetworkDataForwarding.py b/tests/scripts/thread-cert/Cert_5_6_09_NetworkDataForwarding.py index b1cf891f5..9a3f1aadd 100755 --- a/tests/scripts/thread-cert/Cert_5_6_09_NetworkDataForwarding.py +++ b/tests/scripts/thread-cert/Cert_5_6_09_NetworkDataForwarding.py @@ -56,11 +56,13 @@ class Cert_5_6_9_NetworkDataForwarding(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_5_8_02_KeyIncrement.py b/tests/scripts/thread-cert/Cert_5_8_02_KeyIncrement.py index c44523364..6d156f5cf 100755 --- a/tests/scripts/thread-cert/Cert_5_8_02_KeyIncrement.py +++ b/tests/scripts/thread-cert/Cert_5_8_02_KeyIncrement.py @@ -50,6 +50,7 @@ class Cert_5_8_2_KeyIncrement(unittest.TestCase): 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 node in list(self.nodes.values()): diff --git a/tests/scripts/thread-cert/Cert_5_8_03_KeyIncrementRollOver.py b/tests/scripts/thread-cert/Cert_5_8_03_KeyIncrementRollOver.py index b5987423e..283568015 100755 --- a/tests/scripts/thread-cert/Cert_5_8_03_KeyIncrementRollOver.py +++ b/tests/scripts/thread-cert/Cert_5_8_03_KeyIncrementRollOver.py @@ -51,6 +51,7 @@ class Cert_5_8_3_KeyIncrementRollOver(unittest.TestCase): 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 node in list(self.nodes.values()): diff --git a/tests/scripts/thread-cert/Cert_6_1_03_RouterAttachConnectivity.py b/tests/scripts/thread-cert/Cert_6_1_03_RouterAttachConnectivity.py index 154a1d832..1af8d95ca 100755 --- a/tests/scripts/thread-cert/Cert_6_1_03_RouterAttachConnectivity.py +++ b/tests/scripts/thread-cert/Cert_6_1_03_RouterAttachConnectivity.py @@ -56,12 +56,14 @@ class Cert_6_1_3_RouterAttachConnectivity(unittest.TestCase): 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') @@ -69,6 +71,7 @@ class Cert_6_1_3_RouterAttachConnectivity(unittest.TestCase): 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('rsdn') @@ -86,11 +89,13 @@ class Cert_6_1_3_RouterAttachConnectivity(unittest.TestCase): self.nodes[LEADER].set_state('leader') self.assertEqual(self.nodes[LEADER].get_state(), 'leader') - for i in range(2, 6): + for i in range(2, 5): self.nodes[i].start() time.sleep(3) self.assertEqual(self.nodes[i].get_state(), 'router') + self.nodes[ED].start() + time.sleep(3) addrs = self.nodes[ED].get_addrs() for addr in addrs: self.assertTrue(self.nodes[ROUTER3].ping(addr)) diff --git a/tests/scripts/thread-cert/Cert_6_1_04_REEDAttachConnectivity.py b/tests/scripts/thread-cert/Cert_6_1_04_REEDAttachConnectivity.py index 5fbb2fa70..5421307fe 100755 --- a/tests/scripts/thread-cert/Cert_6_1_04_REEDAttachConnectivity.py +++ b/tests/scripts/thread-cert/Cert_6_1_04_REEDAttachConnectivity.py @@ -56,6 +56,7 @@ class Cert_6_1_4_REEDAttachConnectivity(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_6_1_05_RouterAttachLinkQuality.py b/tests/scripts/thread-cert/Cert_6_1_05_RouterAttachLinkQuality.py index 0f1e57dfa..e0cf95b9a 100755 --- a/tests/scripts/thread-cert/Cert_6_1_05_RouterAttachLinkQuality.py +++ b/tests/scripts/thread-cert/Cert_6_1_05_RouterAttachLinkQuality.py @@ -54,12 +54,14 @@ class Cert_6_1_5_RouterAttachLinkQuality(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_6_1_06_REEDAttachLinkQuality.py b/tests/scripts/thread-cert/Cert_6_1_06_REEDAttachLinkQuality.py index ec48b4a28..e4c0a96b8 100755 --- a/tests/scripts/thread-cert/Cert_6_1_06_REEDAttachLinkQuality.py +++ b/tests/scripts/thread-cert/Cert_6_1_06_REEDAttachLinkQuality.py @@ -61,6 +61,7 @@ class Cert_6_1_6_REEDAttachLinkQuality(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_6_1_07_EDSynchronization.py b/tests/scripts/thread-cert/Cert_6_1_07_EDSynchronization.py index a6f77f6e4..bd5a09f38 100755 --- a/tests/scripts/thread-cert/Cert_6_1_07_EDSynchronization.py +++ b/tests/scripts/thread-cert/Cert_6_1_07_EDSynchronization.py @@ -57,6 +57,7 @@ class Cert_6_1_7_EDSynchronization(unittest.TestCase): 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') @@ -72,6 +73,7 @@ class Cert_6_1_7_EDSynchronization(unittest.TestCase): 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') @@ -79,6 +81,7 @@ class Cert_6_1_7_EDSynchronization(unittest.TestCase): 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 node in list(self.nodes.values()): @@ -91,19 +94,19 @@ class Cert_6_1_7_EDSynchronization(unittest.TestCase): self.assertEqual(self.nodes[LEADER].get_state(), 'leader') self.nodes[ED].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ED].get_state(), 'child') self.nodes[ROUTER1].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER1].get_state(), 'router') self.nodes[ROUTER2].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER2].get_state(), 'router') self.nodes[ROUTER3].start() - time.sleep(3) + time.sleep(5) self.assertEqual(self.nodes[ROUTER3].get_state(), 'router') if __name__ == '__main__': diff --git a/tests/scripts/thread-cert/Cert_6_2_01_NewPartition.py b/tests/scripts/thread-cert/Cert_6_2_01_NewPartition.py index ec8aa587c..c21785c78 100755 --- a/tests/scripts/thread-cert/Cert_6_2_01_NewPartition.py +++ b/tests/scripts/thread-cert/Cert_6_2_01_NewPartition.py @@ -52,6 +52,7 @@ class Cert_6_2_1_NewPartition(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_6_2_02_NewPartition.py b/tests/scripts/thread-cert/Cert_6_2_02_NewPartition.py index 73f026671..97e0827d0 100755 --- a/tests/scripts/thread-cert/Cert_6_2_02_NewPartition.py +++ b/tests/scripts/thread-cert/Cert_6_2_02_NewPartition.py @@ -55,6 +55,7 @@ class Cert_6_2_2_NewPartition(unittest.TestCase): 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') @@ -62,6 +63,7 @@ class Cert_6_2_2_NewPartition(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_6_3_01_OrphanReattach.py b/tests/scripts/thread-cert/Cert_6_3_01_OrphanReattach.py index 9ac9a82dc..b8eddf5f5 100755 --- a/tests/scripts/thread-cert/Cert_6_3_01_OrphanReattach.py +++ b/tests/scripts/thread-cert/Cert_6_3_01_OrphanReattach.py @@ -52,6 +52,7 @@ class Cert_6_3_1_OrphanReattach(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_6_4_02_RealmLocal.py b/tests/scripts/thread-cert/Cert_6_4_02_RealmLocal.py index 0eaff01cb..a96ec6a49 100755 --- a/tests/scripts/thread-cert/Cert_6_4_02_RealmLocal.py +++ b/tests/scripts/thread-cert/Cert_6_4_02_RealmLocal.py @@ -52,6 +52,7 @@ class Cert_5_3_2_RealmLocal(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_7_1_01_BorderRouterAsLeader.py b/tests/scripts/thread-cert/Cert_7_1_01_BorderRouterAsLeader.py index 0f0439e99..5140320f2 100755 --- a/tests/scripts/thread-cert/Cert_7_1_01_BorderRouterAsLeader.py +++ b/tests/scripts/thread-cert/Cert_7_1_01_BorderRouterAsLeader.py @@ -54,6 +54,7 @@ class Cert_7_1_1_BorderRouterAsLeader(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_7_1_02_BorderRouterAsRouter.py b/tests/scripts/thread-cert/Cert_7_1_02_BorderRouterAsRouter.py index 596a38fea..4cab83808 100755 --- a/tests/scripts/thread-cert/Cert_7_1_02_BorderRouterAsRouter.py +++ b/tests/scripts/thread-cert/Cert_7_1_02_BorderRouterAsRouter.py @@ -54,6 +54,7 @@ class Cert_7_1_2_BorderRouterAsRouter(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_7_1_03_BorderRouterAsLeader.py b/tests/scripts/thread-cert/Cert_7_1_03_BorderRouterAsLeader.py index 52f615491..ea3ccb3a3 100755 --- a/tests/scripts/thread-cert/Cert_7_1_03_BorderRouterAsLeader.py +++ b/tests/scripts/thread-cert/Cert_7_1_03_BorderRouterAsLeader.py @@ -54,6 +54,7 @@ class Cert_7_1_3_BorderRouterAsLeader(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_7_1_04_BorderRouterAsRouter.py b/tests/scripts/thread-cert/Cert_7_1_04_BorderRouterAsRouter.py index 9857eb072..9cdc786ea 100755 --- a/tests/scripts/thread-cert/Cert_7_1_04_BorderRouterAsRouter.py +++ b/tests/scripts/thread-cert/Cert_7_1_04_BorderRouterAsRouter.py @@ -54,6 +54,7 @@ class Cert_7_1_4_BorderRouterAsRouter(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_7_1_05_BorderRouterAsRouter.py b/tests/scripts/thread-cert/Cert_7_1_05_BorderRouterAsRouter.py index 3c03a2756..4b08e798a 100755 --- a/tests/scripts/thread-cert/Cert_7_1_05_BorderRouterAsRouter.py +++ b/tests/scripts/thread-cert/Cert_7_1_05_BorderRouterAsRouter.py @@ -54,6 +54,7 @@ class Cert_7_1_5_BorderRouterAsRouter(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_8_1_01_Commissioning.py b/tests/scripts/thread-cert/Cert_8_1_01_Commissioning.py index ac9389e96..422878119 100755 --- a/tests/scripts/thread-cert/Cert_8_1_01_Commissioning.py +++ b/tests/scripts/thread-cert/Cert_8_1_01_Commissioning.py @@ -47,6 +47,7 @@ class Cert_8_1_01_Commissioning(unittest.TestCase): self.nodes[JOINER].set_mode('rsdn') self.nodes[JOINER].set_masterkey('00112233445566778899aabbccddeeff') + self.nodes[JOINER].set_router_selection_jitter(1) def tearDown(self): for node in list(self.nodes.values()): diff --git a/tests/scripts/thread-cert/Cert_8_1_02_Commissioning.py b/tests/scripts/thread-cert/Cert_8_1_02_Commissioning.py index 52e9a5fea..69db39be9 100755 --- a/tests/scripts/thread-cert/Cert_8_1_02_Commissioning.py +++ b/tests/scripts/thread-cert/Cert_8_1_02_Commissioning.py @@ -47,6 +47,7 @@ class Cert_8_1_02_Commissioning(unittest.TestCase): self.nodes[JOINER].set_mode('rsdn') self.nodes[JOINER].set_masterkey('00112233445566778899aabbccddeeff') + self.nodes[JOINER].set_router_selection_jitter(1) def tearDown(self): for node in list(self.nodes.values()): diff --git a/tests/scripts/thread-cert/Cert_9_2_13_EnergyScan.py b/tests/scripts/thread-cert/Cert_9_2_13_EnergyScan.py index 40bf21172..84a440d26 100755 --- a/tests/scripts/thread-cert/Cert_9_2_13_EnergyScan.py +++ b/tests/scripts/thread-cert/Cert_9_2_13_EnergyScan.py @@ -47,6 +47,7 @@ class Cert_9_2_13_EnergyScan(unittest.TestCase): 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') @@ -59,6 +60,7 @@ class Cert_9_2_13_EnergyScan(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/Cert_9_2_14_PanIdQuery.py b/tests/scripts/thread-cert/Cert_9_2_14_PanIdQuery.py index e7ba25ff3..4b8c2199a 100755 --- a/tests/scripts/thread-cert/Cert_9_2_14_PanIdQuery.py +++ b/tests/scripts/thread-cert/Cert_9_2_14_PanIdQuery.py @@ -47,6 +47,7 @@ class Cert_9_2_14_PanIdQuery(unittest.TestCase): 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') @@ -59,6 +60,7 @@ class Cert_9_2_14_PanIdQuery(unittest.TestCase): 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') diff --git a/tests/scripts/thread-cert/node.py b/tests/scripts/thread-cert/node.py index 032c83781..a5422399c 100755 --- a/tests/scripts/thread-cert/node.py +++ b/tests/scripts/thread-cert/node.py @@ -260,6 +260,11 @@ class Node: self.send_command(cmd) self.pexpect.expect('Done') + def set_router_downgrade_threshold(self, threshold): + cmd = 'routerdowngradethreshold %d' % threshold + self.send_command(cmd) + self.pexpect.expect('Done') + def release_router_id(self, router_id): cmd = 'releaserouterid %d' % router_id self.send_command(cmd) @@ -402,5 +407,10 @@ class Node: return result + def set_router_selection_jitter(self, jitter): + cmd = 'routerselectionjitter %d' % jitter + self.send_command(cmd) + self.pexpect.expect('Done') + if __name__ == '__main__': unittest.main()