[tests] increase child timeout (#3000)

* fix calculate default poll period

* add default child timeout in config.py

* define FAILED_CHILD_TRANSMISSIONS
This commit is contained in:
Yakun Xu
2018-08-30 11:58:32 -07:00
committed by Jonathan Hui
parent cb63295975
commit 5016af4cde
26 changed files with 69 additions and 30 deletions
+31
View File
@@ -1776,4 +1776,35 @@
#define OPENTHREAD_CONFIG_POSIX_SETTINGS_PATH "tmp"
#endif
/**
* @def OPENTHREAD_CONFIG_FAILED_CHILD_TRANSMISSIONS
*
* This setting configures the number of consecutive MCPS.DATA-Confirms having Status NO_ACK
* that cause a Child-to-Parent link to be considered broken.
*
*/
#ifndef OPENTHREAD_CONFIG_FAILED_CHILD_TRANSMISSIONS
#define OPENTHREAD_CONFIG_FAILED_CHILD_TRANSMISSIONS 4
#endif
/**
* @def OPENTHREAD_CONFIG_MINIMUM_POLL_PERIOD
*
* This setting configures the minimum poll period in milliseconds.
*
*/
#ifndef OPENTHREAD_CONFIG_MINIMUM_POLL_PERIOD
#define OPENTHREAD_CONFIG_MINIMUM_POLL_PERIOD 10
#endif
/**
* @def OPENTHREAD_CONFIG_RETX_POLL_PERIOD
*
* This setting configures the retx poll period in milliseconds.
*
*/
#ifndef OPENTHREAD_CONFIG_RETX_POLL_PERIOD
#define OPENTHREAD_CONFIG_RETX_POLL_PERIOD 1000
#endif
#endif // OPENTHREAD_CORE_DEFAULT_CONFIG_H_
+4 -3
View File
@@ -196,16 +196,17 @@ private:
enum // Poll period under different conditions (in milliseconds).
{
kAttachDataPollPeriod = OPENTHREAD_CONFIG_ATTACH_DATA_POLL_PERIOD, ///< Poll period during attach.
kRetxPollPeriod = 1000, ///< Poll retx period due to tx failure.
kRetxPollPeriod = OPENTHREAD_CONFIG_RETX_POLL_PERIOD, ///< Poll retx period due to tx failure.
kNoBufferRetxPollPeriod = 200, ///< Poll retx due to no buffer space.
kFastPollPeriod = 188, ///< Period used for fast polls.
kMinPollPeriod = 10, ///< Minimum allowed poll period.
kMinPollPeriod = OPENTHREAD_CONFIG_MINIMUM_POLL_PERIOD, ///< Minimum allowed poll period.
};
enum
{
kQuickPollsAfterTimeout = 5, ///< Maximum number of quick data poll tx in case of back-to-back poll timeouts.
kMaxPollRetxAttempts = 5, ///< Maximum number of retransmit attempts of data poll (mac data request).
kMaxPollRetxAttempts = OPENTHREAD_CONFIG_FAILED_CHILD_TRANSMISSIONS, ///< Maximum number of retransmit attempts
///< of data poll (mac data request).
};
enum PollPeriodSelector
+8 -2
View File
@@ -48,7 +48,7 @@ enum
{
kMaxChildren = OPENTHREAD_CONFIG_MAX_CHILDREN,
kMaxChildKeepAliveAttempts = 4, ///< Maximum keep alive attempts before attempting to reattach to a new Parent
kFailedChildTransmissions = 4, ///< FAILED_CHILD_TRANSMISSIONS
kFailedChildTransmissions = OPENTHREAD_CONFIG_FAILED_CHILD_TRANSMISSIONS, ///< FAILED_CHILD_TRANSMISSIONS
};
/**
@@ -74,7 +74,13 @@ enum
kMaxChildIdRequestTimeout = 5000, ///< Maximum delay for receiving a Child ID Request
kMaxChildUpdateResponseTimeout = 2000, ///< Maximum delay for receiving a Child Update Response
kMaxLinkRequestTimeout = 2000, ///< Maximum delay for receiving a Link Accept
kMinTimeout = (((kMaxChildKeepAliveAttempts + 1) * kUnicastRetransmissionDelay) / 1000), ///< Minimum timeout(s)
kMinTimeoutKeepAlive = (((kMaxChildKeepAliveAttempts + 1) * kUnicastRetransmissionDelay) /
1000), ///< Minimum timeout(s) for keep alive
kMinTimeoutDataPoll = (OPENTHREAD_CONFIG_MINIMUM_POLL_PERIOD +
OPENTHREAD_CONFIG_FAILED_CHILD_TRANSMISSIONS * OPENTHREAD_CONFIG_RETX_POLL_PERIOD) /
1000, ///< Minimum timeout(s) for data poll
kMinTimeout = (kMinTimeoutKeepAlive >= kMinTimeoutDataPoll ? kMinTimeoutKeepAlive
: kMinTimeoutDataPoll), ///< Minimum timeout(s)
};
enum
@@ -65,13 +65,13 @@ class Cert_5_1_02_ChildAddressTimeout(unittest.TestCase):
self.nodes[ED].set_panid(0xface)
self.nodes[ED].set_mode('rsn')
self.nodes[ED].set_timeout(3)
self.nodes[ED].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
self.nodes[ED].add_whitelist(self.nodes[ROUTER].get_addr64())
self.nodes[ED].enable_whitelist()
self.nodes[SED].set_panid(0xface)
self.nodes[SED].set_mode('sn')
self.nodes[SED].set_timeout(3)
self.nodes[SED].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
self.nodes[SED].add_whitelist(self.nodes[ROUTER].get_addr64())
self.nodes[SED].enable_whitelist()
@@ -66,7 +66,7 @@ class Cert_5_1_07_MaxChildCount(unittest.TestCase):
self.nodes[i].add_whitelist(self.nodes[ROUTER].get_addr64())
self.nodes[ROUTER].add_whitelist(self.nodes[i].get_addr64())
self.nodes[i].enable_whitelist()
self.nodes[i].set_timeout(3)
self.nodes[i].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
def tearDown(self):
for node in list(self.nodes.values()):
@@ -70,7 +70,7 @@ class Cert_5_3_2_RealmLocal(unittest.TestCase):
self.nodes[SED1].set_mode('sn')
self.nodes[SED1].add_whitelist(self.nodes[DUT_ROUTER2].get_addr64())
self.nodes[SED1].enable_whitelist()
self.nodes[SED1].set_timeout(3)
self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
def tearDown(self):
for node in list(self.nodes.values()):
@@ -80,7 +80,7 @@ class Cert_5_3_09_AddressQuery(unittest.TestCase):
self.nodes[SED1].set_panid(0xface)
self.nodes[SED1].set_mode('s')
self.nodes[SED1].add_whitelist(self.nodes[DUT_ROUTER2].get_addr64())
self.nodes[SED1].set_timeout(3)
self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
self.nodes[SED1].enable_whitelist()
def tearDown(self):
@@ -70,7 +70,7 @@ class Cert_5_6_1_NetworkDataLeaderAsBr(unittest.TestCase):
self.nodes[SED1].set_mode('s')
self.nodes[SED1].add_whitelist(self.nodes[ROUTER].get_addr64())
self.nodes[SED1].enable_whitelist()
self.nodes[SED1].set_timeout(3)
self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
def tearDown(self):
for node in list(self.nodes.values()):
@@ -70,7 +70,7 @@ class Cert_5_6_2_NetworkDataRouterAsBr(unittest.TestCase):
self.nodes[SED1].set_mode('s')
self.nodes[SED1].add_whitelist(self.nodes[LEADER].get_addr64())
self.nodes[SED1].enable_whitelist()
self.nodes[SED1].set_timeout(3)
self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
def tearDown(self):
for node in list(self.nodes.values()):
@@ -70,7 +70,7 @@ class Cert_5_6_3_NetworkDataRegisterAfterAttachLeader(unittest.TestCase):
self.nodes[SED1].set_mode('s')
self.nodes[SED1].add_whitelist(self.nodes[ROUTER].get_addr64())
self.nodes[SED1].enable_whitelist()
self.nodes[SED1].set_timeout(3)
self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
def tearDown(self):
for node in list(self.nodes.values()):
@@ -70,7 +70,7 @@ class Cert_5_6_4_NetworkDataRegisterAfterAttachRouter(unittest.TestCase):
self.nodes[SED1].set_mode('s')
self.nodes[SED1].add_whitelist(self.nodes[ROUTER].get_addr64())
self.nodes[SED1].enable_whitelist()
self.nodes[SED1].set_timeout(3)
self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
def tearDown(self):
for node in list(self.nodes.values()):
@@ -70,7 +70,7 @@ class Cert_5_6_5_NetworkDataRegisterAfterAttachRouter(unittest.TestCase):
self.nodes[SED1].set_mode('s')
self.nodes[SED1].add_whitelist(self.nodes[ROUTER].get_addr64())
self.nodes[SED1].enable_whitelist()
self.nodes[SED1].set_timeout(3)
self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
def tearDown(self):
for node in list(self.nodes.values()):
@@ -70,7 +70,7 @@ class Cert_5_6_6_NetworkDataExpiration(unittest.TestCase):
self.nodes[SED1].set_mode('s')
self.nodes[SED1].add_whitelist(self.nodes[ROUTER].get_addr64())
self.nodes[SED1].enable_whitelist()
self.nodes[SED1].set_timeout(3)
self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
def tearDown(self):
for node in list(self.nodes.values()):
@@ -78,7 +78,7 @@ class Cert_5_6_9_NetworkDataForwarding(unittest.TestCase):
self.nodes[SED].set_mode('s')
self.nodes[SED].add_whitelist(self.nodes[ROUTER1].get_addr64())
self.nodes[SED].enable_whitelist()
self.nodes[SED].set_timeout(3)
self.nodes[SED].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
def tearDown(self):
for node in list(self.nodes.values()):
@@ -51,7 +51,7 @@ class Cert_6_5_1_ChildResetSynchronize(unittest.TestCase):
self.nodes[ED].set_panid(0xface)
self.nodes[ED].set_mode('rsn')
self.nodes[ED].set_timeout(3)
self.nodes[ED].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
self._setUpEd()
def _setUpEd(self):
@@ -65,7 +65,7 @@ class Cert_7_1_1_BorderRouterAsLeader(unittest.TestCase):
self.nodes[SED1].set_mode('s')
self.nodes[SED1].add_whitelist(self.nodes[LEADER].get_addr64())
self.nodes[SED1].enable_whitelist()
self.nodes[SED1].set_timeout(3)
self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
self.nodes[ED1].set_panid(0xface)
self.nodes[ED1].set_mode('rsn')
@@ -70,7 +70,7 @@ class Cert_7_1_2_BorderRouterAsRouter(unittest.TestCase):
self.nodes[SED2].set_mode('s')
self.nodes[SED2].add_whitelist(self.nodes[ROUTER].get_addr64())
self.nodes[SED2].enable_whitelist()
self.nodes[SED2].set_timeout(3)
self.nodes[SED2].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
def tearDown(self):
for node in list(self.nodes.values()):
@@ -65,7 +65,7 @@ class Cert_7_1_3_BorderRouterAsLeader(unittest.TestCase):
self.nodes[SED1].set_mode('s')
self.nodes[SED1].add_whitelist(self.nodes[LEADER].get_addr64())
self.nodes[SED1].enable_whitelist()
self.nodes[SED1].set_timeout(3)
self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
self.nodes[ED1].set_panid(0xface)
self.nodes[ED1].set_mode('rsn')
@@ -70,7 +70,7 @@ class Cert_7_1_4_BorderRouterAsRouter(unittest.TestCase):
self.nodes[SED2].set_mode('s')
self.nodes[SED2].add_whitelist(self.nodes[ROUTER].get_addr64())
self.nodes[SED2].enable_whitelist()
self.nodes[SED2].set_timeout(3)
self.nodes[SED2].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
def tearDown(self):
for node in list(self.nodes.values()):
@@ -70,7 +70,7 @@ class Cert_7_1_5_BorderRouterAsRouter(unittest.TestCase):
self.nodes[SED2].set_mode('s')
self.nodes[SED2].add_whitelist(self.nodes[ROUTER].get_addr64())
self.nodes[SED2].enable_whitelist()
self.nodes[SED2].set_timeout(3)
self.nodes[SED2].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
def tearDown(self):
for node in list(self.nodes.values()):
@@ -92,12 +92,12 @@ class Cert_9_2_8_PersistentDatasets(unittest.TestCase):
def _setUpEd(self):
self.nodes[ED].add_whitelist(self.nodes[LEADER].get_addr64())
self.nodes[ED].enable_whitelist()
self.nodes[ED].set_timeout(3)
self.nodes[ED].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
def _setUpSed(self):
self.nodes[SED].add_whitelist(self.nodes[LEADER].get_addr64())
self.nodes[SED].enable_whitelist()
self.nodes[SED].set_timeout(3)
self.nodes[SED].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
def tearDown(self):
for node in list(self.nodes.values()):
@@ -88,7 +88,7 @@ class Cert_9_2_10_PendingPartition(unittest.TestCase):
self.nodes[SED1].set_mode('s')
self.nodes[SED1].add_whitelist(self.nodes[ROUTER1].get_addr64())
self.nodes[SED1].enable_whitelist()
self.nodes[SED1].set_timeout(3)
self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
def tearDown(self):
for node in list(self.nodes.values()):
@@ -89,7 +89,7 @@ class Cert_9_2_11_MasterKey(unittest.TestCase):
self.nodes[SED1].set_mode('s')
self.nodes[SED1].add_whitelist(self.nodes[ROUTER1].get_addr64())
self.nodes[SED1].enable_whitelist()
self.nodes[SED1].set_timeout(3)
self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
def tearDown(self):
for node in list(self.nodes.values()):
@@ -66,7 +66,7 @@ class Cert_9_2_17_Orphan(unittest.TestCase):
self.nodes[ED1].set_panid(PANID_INIT)
self.nodes[ED1].add_whitelist(self.nodes[LEADER1].get_addr64())
self.nodes[ED1].enable_whitelist()
self.nodes[ED1].set_timeout(3)
self.nodes[ED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
def tearDown(self):
for node in list(self.nodes.values()):
@@ -98,7 +98,7 @@ class Cert_9_2_18_RollBackActiveTimestamp(unittest.TestCase):
self.nodes[SED1].set_panid(PANID_INIT)
self.nodes[SED1].add_whitelist(self.nodes[ROUTER1].get_addr64())
self.nodes[SED1].enable_whitelist()
self.nodes[SED1].set_timeout(3)
self.nodes[SED1].set_timeout(config.DEFAULT_CHILD_TIMEOUT)
def tearDown(self):
for node in list(self.nodes.values()):
+2 -1
View File
@@ -68,8 +68,9 @@ INFINITE_COST_TIMEOUT = 90
MAX_ADVERTISEMENT_INTERVAL = 32
MLE_END_DEVICE_TIMEOUT = 100
AQ_TIMEOUT = 3
AQ_TIMEOUT = 3
ADDRESS_QUERY_INITIAL_RETRY_DELAY = 15
DEFAULT_CHILD_TIMEOUT = 6
VIRTUAL_TIME = bool(os.getenv('VIRTUAL_TIME', False))