mirror of
https://github.com/espressif/openthread.git
synced 2026-10-19 05:58:16 +00:00
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.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*
|
||||
|
||||
@@ -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 \<jitter\>
|
||||
|
||||
Set the ROUTER_SELECTION_JITTER value.
|
||||
|
||||
```bash
|
||||
> routerselectionjitter 120
|
||||
Done
|
||||
```
|
||||
|
||||
### routerupgradethreshold
|
||||
|
||||
Get the ROUTER_UPGRADE_THRESHOLD value.
|
||||
|
||||
@@ -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<uint8_t>(value));
|
||||
}
|
||||
|
||||
exit:
|
||||
AppendResult(error);
|
||||
}
|
||||
|
||||
void Interpreter::ProcessRouterUpgradeThreshold(int argc, char *argv[])
|
||||
{
|
||||
ThreadError error = kThreadError_None;
|
||||
|
||||
@@ -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[]);
|
||||
|
||||
@@ -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;
|
||||
|
||||
+17
-2
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -73,7 +73,6 @@ MleRouter::MleRouter(ThreadNetif &aThreadNetif):
|
||||
mPreviousRouterId = kInvalidRouterId;
|
||||
mRouterIdSequenceLastUpdated = 0;
|
||||
mRouterRoleEnabled = true;
|
||||
mRouterSelectionJitterTimeout = 0;
|
||||
|
||||
mCoapMessageId = static_cast<uint8_t>(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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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__':
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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__':
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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__':
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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__':
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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__':
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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__':
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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()):
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user