mirror of
https://github.com/espressif/openthread.git
synced 2026-06-06 05:24:51 +00:00
[tests] add traffic analysis for Cert_5_5_01 as TestPlan (#2540)
This commit is contained in:
committed by
Jonathan Hui
parent
6805cfa81e
commit
edc299a368
@@ -66,25 +66,70 @@ def check_address_release(command_msg, destination_node):
|
||||
destination_rloc = destination_node.get_ip6_address(config.ADDRESS_TYPE.RLOC)
|
||||
assert ipv6.ip_address(destination_rloc) == command_msg.ipv6_packet.ipv6_header.destination_address, "Error: The destination is not RLOC address"
|
||||
|
||||
def check_link_request(command_msg):
|
||||
def check_tlv_request_tlv(command_msg, check_type, tlv_id):
|
||||
"""Verify if TLV Request TLV contains specified TLV ID
|
||||
"""
|
||||
tlv_request_tlv = command_msg.get_mle_message_tlv(mle.TlvRequest)
|
||||
|
||||
if check_type == CheckType.CONTAIN:
|
||||
assert tlv_request_tlv is not None, "Error: The msg doesn't contain TLV Request TLV"
|
||||
assert any(tlv_id == tlv for tlv in tlv_request_tlv.tlvs), "Error: The msg doesn't contain TLV Request TLV ID: {}".format(tlv_id)
|
||||
|
||||
elif check_type == CheckType.NOT_CONTAIN:
|
||||
if tlv_request_tlv is not None:
|
||||
assert any(tlv_id == tlv for tlv in tlv_request_tlv.tlvs) is False, "Error: The msg contains TLV Request TLV ID: {}".format(tlv_id)
|
||||
|
||||
elif check_type == CheckType.OPTIONAL:
|
||||
if tlv_request_tlv is not None:
|
||||
if any(tlv_id == tlv for tlv in tlv_request_tlv.tlvs):
|
||||
print("TLV Request TLV contains TLV ID: {}".format(tlv_id))
|
||||
else:
|
||||
print("TLV Request TLV doesn't contain TLV ID: {}".format(tlv_id))
|
||||
else:
|
||||
print("The msg doesn't contain TLV Request TLV")
|
||||
|
||||
else:
|
||||
raise ValueError("Invalid check type")
|
||||
|
||||
def check_link_request(command_msg, source_address = CheckType.OPTIONAL, leader_data = CheckType.OPTIONAL, \
|
||||
tlv_request_address16 = CheckType.OPTIONAL, tlv_request_route64 = CheckType.OPTIONAL, \
|
||||
tlv_request_link_margin = CheckType.OPTIONAL):
|
||||
|
||||
"""Verify a properly formatted Link Request command message.
|
||||
"""
|
||||
command_msg.assertMleMessageContainsTlv(mle.Challenge)
|
||||
command_msg.assertMleMessageContainsTlv(mle.LeaderData)
|
||||
command_msg.assertMleMessageContainsTlv(mle.SourceAddress)
|
||||
command_msg.assertMleMessageContainsTlv(mle.Version)
|
||||
|
||||
def check_link_accept(command_msg, destination_node):
|
||||
"""Verify a properly formatted Link Accept command message.
|
||||
check_mle_optional_tlv(command_msg, source_address, mle.SourceAddress)
|
||||
check_mle_optional_tlv(command_msg, leader_data, mle.LeaderData)
|
||||
|
||||
check_tlv_request_tlv(command_msg, tlv_request_address16, mle.TlvType.ADDRESS16)
|
||||
check_tlv_request_tlv(command_msg, tlv_request_route64, mle.TlvType.ROUTE64)
|
||||
check_tlv_request_tlv(command_msg, tlv_request_link_margin, mle.TlvType.LINK_MARGIN)
|
||||
|
||||
def check_link_accept(command_msg, destination_node, \
|
||||
leader_data = CheckType.OPTIONAL, link_margin = CheckType.OPTIONAL, mle_frame_counter = CheckType.OPTIONAL, \
|
||||
challenge = CheckType.OPTIONAL, address16 = CheckType.OPTIONAL, route64 = CheckType.OPTIONAL, \
|
||||
tlv_request_link_margin = CheckType.OPTIONAL):
|
||||
"""verify a properly formatted link accept command message.
|
||||
"""
|
||||
command_msg.assertMleMessageContainsTlv(mle.LinkLayerFrameCounter)
|
||||
command_msg.assertMleMessageContainsTlv(mle.SourceAddress)
|
||||
command_msg.assertMleMessageContainsTlv(mle.Response)
|
||||
command_msg.assertMleMessageContainsTlv(mle.Version)
|
||||
command_msg.assertMleMessageContainsOptionalTlv(mle.MleFrameCounter)
|
||||
|
||||
check_mle_optional_tlv(command_msg, leader_data, mle.LeaderData)
|
||||
check_mle_optional_tlv(command_msg, link_margin, mle.LinkMargin)
|
||||
check_mle_optional_tlv(command_msg, mle_frame_counter, mle.MleFrameCounter)
|
||||
check_mle_optional_tlv(command_msg, challenge, mle.Challenge)
|
||||
check_mle_optional_tlv(command_msg, address16, mle.Address16)
|
||||
check_mle_optional_tlv(command_msg, route64, mle.Route64)
|
||||
|
||||
check_tlv_request_tlv(command_msg, tlv_request_link_margin, mle.TlvType.LINK_MARGIN)
|
||||
|
||||
destination_link_local = destination_node.get_ip6_address(config.ADDRESS_TYPE.LINK_LOCAL)
|
||||
assert ipv6.ip_address(destination_link_local) == command_msg.ipv6_packet.ipv6_header.destination_address, "Error: The destination is unexpected"
|
||||
assert ipv6.ip_address(destination_link_local) == command_msg.ipv6_packet.ipv6_header.destination_address, \
|
||||
"Error: The destination is unexpected"
|
||||
|
||||
def check_icmp_path(sniffer, path, nodes, icmp_type = ipv6.ICMP_ECHO_REQUEST):
|
||||
"""Verify icmp message is forwarded along the path.
|
||||
|
||||
Reference in New Issue
Block a user