4242PACKETS_PER_TIME_SLOT = 500 // PKTS_SENDING_TIME_SLOT
4343MASK_COUNTER_WAIT_TIME = 10 # wait some seconds for mask counters processing packets
4444STATIC_ROUTES = ['0.0.0.0/0' , '::/0' ]
45- ICMP_TYPE = 123
4645WITHDRAW_ROUTE_NUMBER = 1
46+ global_icmp_type = 123
4747
4848
49- @pytest .fixture (scope = "module" )
50- def setup_packet_mask_counters (ptfadapter ):
49+ def setup_packet_mask_counters (ptf_dataplane , icmp_type ):
5150 """
5251 Create a mask counters for packet sending
5352 """
54- ptf_dp = ptfadapter .dataplane
5553 exp_pkt = simple_icmpv6_packet (
56- icmp_type = ICMP_TYPE
54+ icmp_type = icmp_type
5755 )
5856 masked_exp_pkt = Mask (exp_pkt )
5957 masked_exp_pkt .set_do_not_care_scapy (scapy .Ether , 'src' )
@@ -62,9 +60,9 @@ def setup_packet_mask_counters(ptfadapter):
6260 masked_exp_pkt .set_do_not_care_scapy (scapy .IPv6 , "dst" )
6361 masked_exp_pkt .set_do_not_care_scapy (scapy .IPv6 , "hlim" )
6462 masked_exp_pkt .set_do_not_care_scapy (scapy .ICMPv6Unknown , "cksum" )
65- ptf_dp .create_mask_counters (masked_exp_pkt )
63+ ptf_dataplane .create_mask_counters (masked_exp_pkt )
6664
67- yield masked_exp_pkt
65+ return masked_exp_pkt
6866
6967
7068@pytest .fixture (scope = "function" )
@@ -152,7 +150,7 @@ def generate_packets(prefixes, dut_mac, src_mac):
152150 eth_dst = dut_mac ,
153151 eth_src = src_mac ,
154152 ipv6_dst = addr ,
155- icmp_type = ICMP_TYPE
153+ icmp_type = global_icmp_type
156154 )
157155 pkts .append (bytes (pkt ))
158156
@@ -328,7 +326,6 @@ def test_sessions_flapping(
328326 ptfadapter ,
329327 bgp_peers_info ,
330328 flapping_port_count ,
331- setup_packet_mask_counters ,
332329 announce_bgp_routes_teardown
333330):
334331 '''
@@ -343,8 +340,10 @@ def test_sessions_flapping(
343340 Expected result:
344341 Dataplane downtime is less than MAX_DOWNTIME_ONE_PORT_FLAPPING.
345342 '''
343+ global global_icmp_type
344+ global_icmp_type += 1
346345 pdp = ptfadapter .dataplane
347- exp_mask = setup_packet_mask_counters
346+ exp_mask = setup_packet_mask_counters ( pdp , global_icmp_type )
348347 bgp_neighbors = [hostname for hostname in bgp_peers_info .keys ()]
349348
350349 random .shuffle (bgp_neighbors )
@@ -404,7 +403,6 @@ def test_nexthop_group_member_scale(
404403 localhost ,
405404 tbinfo ,
406405 bgp_peers_info ,
407- setup_packet_mask_counters ,
408406 announce_bgp_routes_teardown ,
409407 request
410408):
@@ -424,11 +422,10 @@ def test_nexthop_group_member_scale(
424422 '''
425423 servers_dut_interfaces = announce_bgp_routes_teardown
426424 topo_name = tbinfo ['topo' ]['name' ]
427- if 't1' in topo_name :
428- pytest .skip ("Skip test on T1 topology because every route only have one nexthop" )
429-
425+ global global_icmp_type
426+ global_icmp_type += 1
430427 pdp = ptfadapter .dataplane
431- exp_mask = setup_packet_mask_counters
428+ exp_mask = setup_packet_mask_counters ( pdp , global_icmp_type )
432429 injection_bgp_neighbor = random .choice (list (bgp_peers_info .keys ()))
433430 injection_dut_port = bgp_peers_info [injection_bgp_neighbor ][DUT_PORT ]
434431 injection_port = [i [PTF_PORT ] for i in bgp_peers_info .values () if i [DUT_PORT ] == injection_dut_port ][0 ]
@@ -492,6 +489,13 @@ def test_nexthop_group_member_scale(
492489 pytest .fail ("BGP routes are not stable in long time" )
493490
494491 # ------------announce routes and test ------------ #
492+ global_icmp_type += 1
493+ exp_mask = setup_packet_mask_counters (pdp , global_icmp_type )
494+ pkts = generate_packets (
495+ neighbor_ecmp_routes [injection_bgp_neighbor ],
496+ duthost .facts ['router_mac' ],
497+ pdp .get_mac (pdp .port_to_device (injection_port ), injection_port )
498+ )
495499 terminated = Event ()
496500 traffic_thread = Thread (
497501 target = send_packets , args = (terminated , pdp , pdp .port_to_device (injection_port ), injection_port , pkts )
@@ -516,7 +520,6 @@ def test_device_unisolation(
516520 duthost ,
517521 ptfadapter ,
518522 bgp_peers_info ,
519- setup_packet_mask_counters ,
520523 announce_bgp_routes_teardown ,
521524 tbinfo
522525):
@@ -533,8 +536,10 @@ def test_device_unisolation(
533536 Expected result:
534537 Dataplane downtime is less than MAX_DOWNTIME_UNISOLATION.
535538 '''
539+ global global_icmp_type
540+ global_icmp_type += 1
536541 pdp = ptfadapter .dataplane
537- exp_mask = setup_packet_mask_counters
542+ exp_mask = setup_packet_mask_counters ( pdp , global_icmp_type )
538543
539544 bgp_ports = [bgp_info [DUT_PORT ] for bgp_info in bgp_peers_info .values ()]
540545
0 commit comments