X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Fvpp_pg_interface.py;h=bd4ddaff58aedf042883f6df6fece58eb4f92cb1;hb=3ffe6cadf;hp=518798d17a30197f8b8a78fbd42733d00046957a;hpb=a618e2082dfcda0aedba19b80e50e29667740602;p=vpp.git diff --git a/test/vpp_pg_interface.py b/test/vpp_pg_interface.py index 518798d17a3..bd4ddaff58a 100755 --- a/test/vpp_pg_interface.py +++ b/test/vpp_pg_interface.py @@ -103,30 +103,39 @@ class VppPGInterface(VppInterface): self._in_path = self.test.tempdir + "/" + self._in_file self._capture_cli = "packet-generator capture pg%u pcap %s" % ( self.pg_index, self.out_path) - self._cap_name = "pcap%u" % self.sw_if_index + self._cap_name = "pcap%u-sw_if_index-%s" % ( + self.pg_index, self.sw_if_index) self._input_cli = \ "packet-generator new pcap %s source pg%u name %s" % ( self.in_path, self.pg_index, self.cap_name) self._nb_replays = None - def enable_capture(self): - """ Enable capture on this packet-generator interface - of at most n packets. - If n < 0, this is no limit - """ + def _rename_previous_capture_file(self, path, counter, file): + # if a file from a previous capture exists, rename it. try: - if os.path.isfile(self.out_path): + if os.path.isfile(path): name = "%s/history.[timestamp:%f].[%s-counter:%04d].%s" % \ (self.test.tempdir, time.time(), self.name, - self.out_history_counter, - self._out_file) + counter, + file) self.test.logger.debug("Renaming %s->%s" % - (self.out_path, name)) - os.rename(self.out_path, name) - except: - pass + (path, name)) + os.rename(path, name) + except OSError: + self.test.logger.debug("OSError: Could not rename %s %s" % + (path, file)) + + def enable_capture(self): + """ Enable capture on this packet-generator interface + of at most n packets. + If n < 0, this is no limit + """ + + self._rename_previous_capture_file(self.out_path, + self.out_history_counter, + self._out_file) # FIXME this should be an API, but no such exists atm self.test.vapi.cli(self.capture_cli) self._pcap_reader = None @@ -142,19 +151,9 @@ class VppPGInterface(VppInterface): """ self._nb_replays = nb_replays - try: - if os.path.isfile(self.in_path): - name = "%s/history.[timestamp:%f].[%s-counter:%04d].%s" %\ - (self.test.tempdir, - time.time(), - self.name, - self.in_history_counter, - self._in_file) - self.test.logger.debug("Renaming %s->%s" % - (self.in_path, name)) - os.rename(self.in_path, name) - except: - pass + self._rename_previous_capture_file(self.in_path, + self.in_history_counter, + self._in_file) wrpcap(self.in_path, pkts) self.test.register_capture(self.cap_name) # FIXME this should be an API, but no such exists atm @@ -423,10 +422,6 @@ class VppPGInterface(VppInterface): pg_interface.name) return arp_reply = captured_packet.copy() # keep original for exception - # Make Dot1AD packet content recognizable to scapy - if arp_reply.type == 0x88a8: - arp_reply.type = 0x8100 - arp_reply = Ether(scapy.compat.raw(arp_reply)) try: if arp_reply[ARP].op == ARP.is_at: self.test.logger.info("VPP %s MAC address is %s " % @@ -470,13 +465,6 @@ class VppPGInterface(VppInterface): "Timeout while waiting for NDP response") raise ndp_reply = captured_packet.copy() # keep original for exception - # Make Dot1AD packet content recognizable to scapy - if ndp_reply.type == 0x88a8: - self._test.logger.info( - "Replacing EtherType: 0x88a8 with " - "0x8100 and regenerating Ethernet header. ") - ndp_reply.type = 0x8100 - ndp_reply = Ether(scapy.compat.raw(ndp_reply)) try: ndp_na = ndp_reply[ICMPv6ND_NA] opt = ndp_na[ICMPv6NDOptDstLLAddr]