Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 16 additions & 7 deletions ansible/roles/test/files/ptftests/advanced-reboot.py
Original file line number Diff line number Diff line change
Expand Up @@ -438,7 +438,7 @@ def build_vlan_if_port_mapping(self):
portchannel_names = [pc['name'] for pc in portchannel_content.values()]

vlan_content = self.read_json('vlan_ports_file')

vlan_if_port = []
for vlan in self.vlan_ip_range:
for ifname in vlan_content[vlan]['members']:
Expand Down Expand Up @@ -758,7 +758,7 @@ def generate_ping_dut_lo(self):
ip_src=self.from_server_src_addr,
ip_dst=dut_lo_ipv4)

self.ping_dut_exp_packet = Mask(exp_packet)
self.ping_dut_exp_packet = Mask(exp_packet)
self.ping_dut_exp_packet.set_do_not_care_scapy(scapy.Ether, "dst")
self.ping_dut_exp_packet.set_do_not_care_scapy(scapy.IP, "dst")
self.ping_dut_exp_packet.set_do_not_care_scapy(scapy.IP, "id")
Expand Down Expand Up @@ -1470,12 +1470,15 @@ def no_flood(self, packet):
"""
This method filters packets which are unique (i.e. no floods).
"""
if (not int(str(packet[scapyall.TCP].payload)) in self.unique_id) and (packet[scapyall.Ether].src == self.dut_mac):
if (not int(str(packet[scapyall.TCP].payload)) in self.unique_id) and \
(packet[scapyall.Ether].src == self.dut_mac or packet[scapyall.Ether].src == self.vlan_mac):
# This is a unique (no flooded) received packet.
# for dualtor, t1->server rcvd pkt will have src MAC as vlan_mac, and server->t1 rcvd pkt will have src MAC as dut_mac
self.unique_id.append(int(str(packet[scapyall.TCP].payload)))
return True
elif packet[scapyall.Ether].dst == self.dut_mac:
elif packet[scapyall.Ether].dst == self.dut_mac or packet[scapyall.Ether].dst == self.vlan_mac:
# This is a sent packet.
# for dualtor, t1->server sent pkt will have dst MAC as dut_mac, and server->t1 sent pkt will have dst MAC as vlan_mac
return True
else:
return False
Expand Down Expand Up @@ -1541,14 +1544,18 @@ def examine_flow(self, filename = None):
missed_t1_to_vlan = 0
self.disruption_start, self.disruption_stop = None, None
for packet in packets:
if packet[scapyall.Ether].dst == self.dut_mac:
if packet[scapyall.Ether].dst == self.dut_mac or packet[scapyall.Ether].dst == self.vlan_mac:
# This is a sent packet - keep track of it as payload_id:timestamp.
# for dualtor both MACs are needed:
# t1->server sent pkt will have dst MAC as dut_mac, and server->t1 sent pkt will have dst MAC as vlan_mac
sent_payload = int(str(packet[scapyall.TCP].payload))
sent_packets[sent_payload] = packet.time
sent_counter += 1
continue
if packet[scapyall.Ether].src == self.dut_mac:
if packet[scapyall.Ether].src == self.dut_mac or packet[scapyall.Ether].src == self.vlan_mac:
# This is a received packet.
# for dualtor both MACs are needed:
# t1->server rcvd pkt will have src MAC as vlan_mac, and server->t1 rcvd pkt will have src MAC as dut_mac
received_time = packet.time
received_payload = int(str(packet[scapyall.TCP].payload))
if (received_payload % 5) == 0 : # From vlan to T1.
Expand All @@ -1563,6 +1570,8 @@ def examine_flow(self, filename = None):
continue
if received_payload - prev_payload > 1:
# Packets in a row are missing, a disruption.
self.log("received_payload: {}, prev_payload: {}, sent_counter: {}, received_counter: {}".format(
received_payload, prev_payload, sent_counter, received_counter))
lost_id = (received_payload -1) - prev_payload # How many packets lost in a row.
disrupt = (sent_packets[received_payload] - sent_packets[prev_payload + 1]) # How long disrupt lasted.
# Add disrupt to the dict:
Expand Down Expand Up @@ -1673,7 +1682,7 @@ def wait_dut_to_warm_up(self):
up_time = None

if elapsed > warm_up_timeout_secs:
raise Exception("Control plane didn't come up within warm up timeout")
raise Exception("IO didn't come up within warm up timeout. Control plane: {}, Data plane: {}".format(ctrlplane, dataplane))
time.sleep(1)

# check until flooding is over. Flooding happens when FDB entry of
Expand Down
Loading