diff --git a/tests/qos/test_qos_sai.py b/tests/qos/test_qos_sai.py index 7e1bf8e2df4..0d020724a71 100644 --- a/tests/qos/test_qos_sai.py +++ b/tests/qos/test_qos_sai.py @@ -642,6 +642,14 @@ def testQosSaiHeadroomPoolWatermark( "hwsku":dutTestParams['hwsku'] }) + margin = qosConfig["hdrm_pool_size"].get("margin") + if margin: + testParams["margin"] = margin + + dynamic_threshold = qosConfig["hdrm_pool_size"].get("dynamic_threshold", False) + if dynamic_threshold: + testParams["dynamic_threshold"] = dynamic_threshold + if "pkts_num_egr_mem" in qosConfig.keys(): testParams["pkts_num_egr_mem"] = qosConfig["pkts_num_egr_mem"] diff --git a/tests/saitests/sai_qos_tests.py b/tests/saitests/sai_qos_tests.py index edf9a76856f..e47fc0a5060 100644 --- a/tests/saitests/sai_qos_tests.py +++ b/tests/saitests/sai_qos_tests.py @@ -1858,7 +1858,7 @@ def tearDown(self): sai_base_test.ThriftInterfaceDataPlane.tearDown(self) def show_port_counter(self, rx_base, tx_base, banner): - port_counter_indexes = self.pgs + port_counter_indexes = [pg for pg in self.pgs] port_counter_indexes += self.ingress_counters port_counter_indexes += self.egress_counters port_counter_indexes += [TRANSMITTED_PKTS, RECEIVED_PKTS, RECEIVED_NON_UC_PKTS, TRANSMITTED_NON_UC_PKTS, EGRESS_PORT_QLEN] @@ -1980,7 +1980,7 @@ def runTest(self): print >> sys.stderr, "PFC triggered" sys.stderr.flush() - upper_bound = 2 + upper_bound = 2 * margin + 1 if self.wm_multiplier: hdrm_pool_wm = sai_thrift_read_headroom_pool_watermark(self.client, self.buf_pool_roid) print >> sys.stderr, "Actual headroom pool watermark value to start: %d" % hdrm_pool_wm @@ -2061,17 +2061,18 @@ def runTest(self): print >> sys.stderr, "pg hdrm filled" if self.wm_multiplier: - # assert hdrm pool wm still remains the same - hdrm_pool_wm = sai_thrift_read_headroom_pool_watermark( - self.client, self.buf_pool_roid) - if 'innovium' not in self.asic_type: - assert(expected_wm <= hdrm_pool_wm) - assert(hdrm_pool_wm <= upper_bound_wm) - # at this point headroom pool should be full. send few more packets to continue causing drops - print >> sys.stderr, "overflow headroom pool" - send_packet(self, self.src_port_ids[sidx_dscp_pg_tuples[i][0]], pkt, 10) - hdrm_pool_wm = sai_thrift_read_headroom_pool_watermark(self.client, self.buf_pool_roid) - assert(hdrm_pool_wm <= self.max_headroom) + # assert hdrm pool wm still remains the same + hdrm_pool_wm = sai_thrift_read_headroom_pool_watermark( + self.client, self.buf_pool_roid) + sys.stderr.write('After PG headroom filled, actual headroom pool watermark {}, upper_bound {}\n'.format(hdrm_pool_wm, upper_bound_wm)) + if 'innovium' not in self.asic_type: + assert(expected_wm <= hdrm_pool_wm) + assert(hdrm_pool_wm <= upper_bound_wm) + # at this point headroom pool should be full. send few more packets to continue causing drops + print >> sys.stderr, "overflow headroom pool" + send_packet(self, self.src_port_ids[sidx_dscp_pg_tuples[i][0]], pkt, 10) + hdrm_pool_wm = sai_thrift_read_headroom_pool_watermark(self.client, self.buf_pool_roid) + assert(hdrm_pool_wm <= self.max_headroom) sys.stderr.flush() finally: