From 1811223a253dbcfc0cd3c18097d2a573be21c73e Mon Sep 17 00:00:00 2001 From: Jing Ma Date: Sun, 20 Dec 2020 00:22:20 +0800 Subject: [PATCH] [thread-cert] fix case 7.1.6 intermittent failure (#5974) An issue is caused by tiny time difference as well between step 5 and step 6, step 6 occasionally is sent out ahead of step5. --- .../Cert_7_1_06_BorderRouterAsLeader.py | 55 ++++++++++--------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/tests/scripts/thread-cert/Cert_7_1_06_BorderRouterAsLeader.py b/tests/scripts/thread-cert/Cert_7_1_06_BorderRouterAsLeader.py index 249398299..089864663 100755 --- a/tests/scripts/thread-cert/Cert_7_1_06_BorderRouterAsLeader.py +++ b/tests/scripts/thread-cert/Cert_7_1_06_BorderRouterAsLeader.py @@ -245,33 +245,34 @@ class Cert_7_1_6_BorderRouterAsLeader(thread_cert.TestCase): p.thread_nwd.tlv.prefix ).\ must_next() - _dr_pkt1 = pkts.filter_wpan_src64(LEADER).\ - filter_LLANMA().\ - filter_mle_cmd(MLE_DATA_RESPONSE).\ - filter(lambda p: { - NETWORK_DATA_TLV, - SOURCE_ADDRESS_TLV, - LEADER_DATA_TLV - } <= set(p.mle.tlv.type) and\ - { - NWD_BORDER_ROUTER_TLV, - NWD_BORDER_ROUTER_TLV, - NWD_6LOWPAN_ID_TLV - } <= set(p.thread_nwd.tlv.type) and\ - p.thread_nwd.tlv.border_router.flag.p == [1, 1] and\ - p.thread_nwd.tlv.border_router.flag.s == [1, 1] and\ - p.thread_nwd.tlv.border_router.flag.r == [1, 1] and\ - p.thread_nwd.tlv.border_router.flag.o == [1, 1] and\ - p.mle.tlv.leader_data.data_version == - (_dr_pkt.mle.tlv.leader_data.data_version + 1) % 256 and\ - (p.mle.tlv.leader_data.stable_data_version == - (_dr_pkt.mle.tlv.leader_data.stable_data_version + 1) % 256 or\ - p.mle.tlv.leader_data.stable_data_version == - (_pkt.mle.tlv.leader_data.stable_data_version + 1) % 256) and\ - [Ipv6Addr(PREFIX_2001[:-3])] == - p.thread_nwd.tlv.prefix - ).\ - must_next() + with pkts.save_index(): + _dr_pkt1 = pkts.filter_wpan_src64(LEADER).\ + filter_LLANMA().\ + filter_mle_cmd(MLE_DATA_RESPONSE).\ + filter(lambda p: { + NETWORK_DATA_TLV, + SOURCE_ADDRESS_TLV, + LEADER_DATA_TLV + } <= set(p.mle.tlv.type) and\ + { + NWD_BORDER_ROUTER_TLV, + NWD_BORDER_ROUTER_TLV, + NWD_6LOWPAN_ID_TLV + } <= set(p.thread_nwd.tlv.type) and\ + p.thread_nwd.tlv.border_router.flag.p == [1, 1] and\ + p.thread_nwd.tlv.border_router.flag.s == [1, 1] and\ + p.thread_nwd.tlv.border_router.flag.r == [1, 1] and\ + p.thread_nwd.tlv.border_router.flag.o == [1, 1] and\ + p.mle.tlv.leader_data.data_version == + (_dr_pkt.mle.tlv.leader_data.data_version + 1) % 256 and\ + (p.mle.tlv.leader_data.stable_data_version == + (_dr_pkt.mle.tlv.leader_data.stable_data_version + 1) % 256 or\ + p.mle.tlv.leader_data.stable_data_version == + (_pkt.mle.tlv.leader_data.stable_data_version + 1) % 256) and\ + [Ipv6Addr(PREFIX_2001[:-3])] == + p.thread_nwd.tlv.prefix + ).\ + must_next() # Step 6: Leader MUST send a MLE Child Update Request or MLE Data # Response to SED, including the following TLVs: