X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FSFC%2FVerifyPacket.py;h=84eb6aa0a247cb3592dc60042245827e213742f4;hp=66bd09899d19c012c27c7b51ca708c5df319f9b9;hb=eb9eec208b6e66bf585546ffe5a9554a48fe1208;hpb=5ce772f3b2d83c31eda5c2abdcd6cc4547ecc6c8 diff --git a/resources/libraries/python/SFC/VerifyPacket.py b/resources/libraries/python/SFC/VerifyPacket.py index 66bd09899d..84eb6aa0a2 100644 --- a/resources/libraries/python/SFC/VerifyPacket.py +++ b/resources/libraries/python/SFC/VerifyPacket.py @@ -20,12 +20,9 @@ import ipaddress from scapy.layers.inet import IP, UDP from scapy.all import Raw -from scapy.utils import rdpcap -from resources.libraries.python.constants import Constants as con from resources.libraries.python.SFC.SFCConstants import SFCConstants as sfccon from resources.libraries.python.SFC.TunnelProtocol import VxLAN, VxLANGPE, NSH -from robot.api import logger def valid_ipv4(ipaddr): """Check if IP address has the correct IPv4 address format. @@ -109,9 +106,14 @@ class VerifyPacket(object): # get the NSH packet and check it nsh_pkt = NSH(payload_data[8:32]) - if nsh_pkt.flags != sfccon.NSH_FLAGS: - raise RuntimeError("Unexpected NSH flags: {0}". - format(nsh_pkt.flags)) + if nsh_pkt.Version != 0: + raise RuntimeError("Unexpected NSH version: {0}". + format(nsh_pkt.Version)) + + print type(nsh_pkt.OAM) + if nsh_pkt.OAM != 0 or nsh_pkt.OAM != 1: + raise RuntimeError("Unexpected NSH OAM: {0}". + format(nsh_pkt.OAM)) if nsh_pkt.length != sfccon.NSH_HEADER_LENGTH: raise RuntimeError("NSH length {0} incorrect". @@ -157,31 +159,23 @@ class VerifyPacket(object): @staticmethod - def check_the_nsh_sfc_packet(frame_size, test_type): + def check_the_nsh_sfc_packet(ether, frame_size, test_type): """ verify the NSH SFC functional test loopback packet field is correct. - :param frame_size: the origin frame size. - :param test_type: the test type. + :param ether: The Ethernet packet data. + :param frame_size: The origin frame size. + :param test_type: The test type. (Classifier, Proxy Inbound, Proxy Outbound, SFF). + + :type ether: scapy.Ether :type frame_size: Integer :type test_type: str :returns: none :raises RuntimeError: If the packet field verify fails. """ - rx_pcapfile = '{0}/nsh_sfc_tests/sfc_scripts/temp_packet.pcap' \ - .format(con.REMOTE_FW_DIR) - - logger.trace('read pcap file:{0}'.format(rx_pcapfile)) - - packets = rdpcap(rx_pcapfile) - if len(packets) < 1: - raise RuntimeError("No packet is received!") - - ether = packets[0] - origin_size = int(frame_size) if test_type == "Classifier": expect_pkt_len = origin_size + 74 - 4 @@ -194,9 +188,9 @@ class VerifyPacket(object): recv_pkt_len = len(ether) if recv_pkt_len != expect_pkt_len: - raise RuntimeError("Received packet size {0} not " \ - "the expect size {1}".format(recv_pkt_len, \ - expect_pkt_len)) + raise RuntimeError("Received packet size {0} not " + "the expect size {1}".format(recv_pkt_len, + expect_pkt_len)) if not ether.haslayer(IP): raise RuntimeError("Not a IPv4 packet")