diff --git a/tests/saitests/py3/sai_qos_tests.py b/tests/saitests/py3/sai_qos_tests.py index ac668751aa2..182c4c922d8 100644 --- a/tests/saitests/py3/sai_qos_tests.py +++ b/tests/saitests/py3/sai_qos_tests.py @@ -1408,9 +1408,16 @@ def runTest(self): assert(recv_counters[pg] == recv_counters_base[pg]), \ 'unexpectedly PFC counter increase, {}'.format(test_stage) # recv port no ingress drop + # For dnx few extra ipv6 NS/RA pkt received from VM, adding to counter value + # & may give inconsistent test results + # Adding COUNTER_MARGIN to provide room to 2 pkt incase, extra traffic received for cntr in ingress_counters: - assert(recv_counters[cntr] == recv_counters_base[cntr]), \ - 'unexpectedly RX drop counter increase, {}'.format(test_stage) + if platform_asic and platform_asic == "broadcom-dnx": + assert (recv_counters[cntr] <= recv_counters_base[cntr] + COUNTER_MARGIN),\ + 'unexpectedly RX drop counter increase, {}'.format(test_stage) + else: + assert(recv_counters[cntr] == recv_counters_base[cntr]),\ + 'unexpectedly RX drop counter increase, {}'.format(test_stage) # xmit port no egress drop for cntr in egress_counters: assert(xmit_counters[cntr] == xmit_counters_base[cntr]), \ @@ -1433,9 +1440,16 @@ def runTest(self): assert(recv_counters[pg] > recv_counters_base[pg]), \ 'unexpectedly PFC counter not increase, {}'.format(test_stage) # recv port no ingress drop + # For dnx few extra ipv6 NS/RA pkt received from VM, adding to counter value + # & may give inconsistent test results + # Adding COUNTER_MARGIN to provide room to 2 pkt incase, extra traffic received for cntr in ingress_counters: - assert(recv_counters[cntr] == recv_counters_base[cntr]), \ - 'unexpectedly RX drop counter increase, {}'.format(test_stage) + if platform_asic and platform_asic == "broadcom-dnx": + assert (recv_counters[cntr] <= recv_counters_base[cntr] + COUNTER_MARGIN),\ + 'unexpectedly RX drop counter increase, {}'.format(test_stage) + else: + assert(recv_counters[cntr] == recv_counters_base[cntr]),\ + 'unexpectedly RX drop counter increase, {}'.format(test_stage) # xmit port no egress drop for cntr in egress_counters: assert(xmit_counters[cntr] == xmit_counters_base[cntr]), \ @@ -1461,9 +1475,16 @@ def runTest(self): assert(recv_counters[pg] > recv_counters_base[pg]), \ 'unexpectedly PFC counter not increase, {}'.format(test_stage) # recv port no ingress drop + # For dnx few extra ipv6 NS/RA pkt received from VM, adding to counter value + # & may give inconsistent test results + # Adding COUNTER_MARGIN to provide room to 2 pkt incase, extra traffic received for cntr in ingress_counters: - assert(recv_counters[cntr] == recv_counters_base[cntr]), \ - 'unexpectedly RX drop counter increase, {}'.format(test_stage) + if platform_asic and platform_asic == "broadcom-dnx": + assert (recv_counters[cntr] <= recv_counters_base[cntr] + COUNTER_MARGIN),\ + 'unexpectedly RX drop counter increase, {}'.format(test_stage) + else: + assert(recv_counters[cntr] == recv_counters_base[cntr]),\ + 'unexpectedly RX drop counter increase, {}'.format(test_stage) # xmit port no egress drop for cntr in egress_counters: assert(xmit_counters[cntr] == xmit_counters_base[cntr]), \ @@ -1488,15 +1509,18 @@ def runTest(self): assert(recv_counters[pg] > recv_counters_base[pg]), \ 'unexpectedly PFC counter not increase, {}'.format(test_stage) # recv port ingress drop - if platform_asic and platform_asic == "broadcom-dnx": - logging.info ("On J2C+ don't support port level drop counters - so ignoring this step for now") - else: - # recv port ingress drop - for cntr in ingress_counters: - assert(recv_counters[cntr] > recv_counters_base[cntr]), 'unexpectedly RX drop counter not increase, {}'.format(test_stage) - # xmit port no egress drop - for cntr in egress_counters: - assert(xmit_counters[cntr] == xmit_counters_base[cntr]), 'unexpectedly TX drop counter increase, {}'.format(test_stage) + for cntr in ingress_counters: + if platform_asic and platform_asic == "broadcom-dnx": + if cntr == 1: + assert(recv_counters[cntr] > recv_counters_base[cntr]), 'unexpectedly RX drop counter ' \ + 'not increase, {}'.format(test_stage) + else: + assert(recv_counters[cntr] > recv_counters_base[cntr]), 'unexpectedly RX drop counter' \ + ' not increase, {}'.format(test_stage) + # xmit port no egress drop + for cntr in egress_counters: + assert(xmit_counters[cntr] == xmit_counters_base[cntr]),\ + 'unexpectedly TX drop counter increase, {}'.format(test_stage) if '201811' not in sonic_version and 'mellanox' in asic_type: pg_dropped_cntrs = sai_thrift_read_pg_drop_counters( @@ -1880,6 +1904,7 @@ def runTest(self): sonic_version = self.test_params['sonic_version'] router_mac = self.test_params['router_mac'] max_buffer_size = int(self.test_params['buffer_max_size']) + platform_asic = self.test_params['platform_asic'] # The pfc counter index starts from index 2 in sai_thrift_read_port_counters pg = int(self.test_params['pg']) + 2 @@ -2172,8 +2197,18 @@ def runTest(self): # recv port pfc assert(recv_counters[pg] > recv_counters_base[pg]), 'unexpectedly not trigger PFC for PG {} (counter: {}), at step {} {}'.format(pg, port_counter_fields[pg], step_id, step_desc) # recv port no ingress drop + # For dnx few extra ipv6 NS/RA pkt received from VM, adding to counter value + # & may give inconsistent test results + # Adding COUNTER_MARGIN to provide room to 2 pkt incase, extra traffic received for cntr in ingress_counters: - assert(recv_counters[cntr] == recv_counters_base[cntr]), 'unexpectedly ingress drop on recv port (counter: {}), at step {} {}'.format(port_counter_fields[cntr], step_id, step_desc) + if platform_asic and platform_asic == "broadcom-dnx": + assert (recv_counters[cntr] <= recv_counters_base[cntr] + COUNTER_MARGIN), \ + 'unexpectedly ingress drop on recv port (counter: {}), at step {} {}'.format( + port_counter_fields[cntr], step_id, step_desc) + else: + assert(recv_counters[cntr] == recv_counters_base[cntr]),\ + 'unexpectedly ingress drop on recv port (counter: {}), at step {} {}'.format( + port_counter_fields[cntr], step_id, step_desc) # xmit port no egress drop for cntr in egress_counters: assert(xmit_counters[cntr] == xmit_counters_base[cntr]), 'unexpectedly egress drop on xmit port 1 (counter: {}, at step {} {})'.format(port_counter_fields[cntr], step_id, step_desc) @@ -3288,8 +3323,17 @@ def runTest(self): # recv port no pfc assert(recv_counters[pg] == recv_counters_base[pg]) # recv port no ingress drop + # For dnx few extra ipv6 NS/RA pkt received, adding to coutner value + # & may give inconsistent test results + # Adding COUNTER_MARGIN to provide room to 2 pkt incase, extra traffic received for cntr in ingress_counters: - assert(recv_counters[cntr] == recv_counters_base[cntr]) + if platform_asic and platform_asic == "broadcom-dnx": + if cntr == 1: + print("recv_counters_base: %d, recv_counters: %d" % (recv_counters_base[cntr], + recv_counters[cntr]), file=sys.stderr) + assert(recv_counters[cntr] <= recv_counters_base[cntr] + COUNTER_MARGIN) + else: + assert(recv_counters[cntr] == recv_counters_base[cntr]) # xmit port no egress drop for cntr in egress_counters: assert(xmit_counters[cntr] == xmit_counters_base[cntr]) @@ -3306,8 +3350,9 @@ def runTest(self): assert(recv_counters[pg] == recv_counters_base[pg]) # recv port no ingress drop for cntr in ingress_counters: - if platform_asic and platform_asic == "broadcom-dnx" and cntr == 1: - assert (recv_counters[cntr] > recv_counters_base[cntr]) + if platform_asic and platform_asic == "broadcom-dnx": + if cntr == 1: + assert (recv_counters[cntr] > recv_counters_base[cntr]) else: assert (recv_counters[cntr] == recv_counters_base[cntr])