Skip to content
Merged
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
86 changes: 49 additions & 37 deletions tests/qos/test_qos_sai.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,9 @@ def testQosSaiPfcXoffLimit(self, xoffProfile, ptfhost, dutTestParams, dutConfig,
"""
portSpeedCableLength = dutQosConfig["portSpeedCableLength"]
qosConfig = dutQosConfig["param"][portSpeedCableLength]
testParams = {
testParams = dict()
testParams.update(dutTestParams["basicParams"])
testParams.update({
"dscp": qosConfig[xoffProfile]["dscp"],
"ecn": qosConfig[xoffProfile]["ecn"],
"pg": qosConfig[xoffProfile]["pg"],
Expand All @@ -95,10 +97,9 @@ def testQosSaiPfcXoffLimit(self, xoffProfile, ptfhost, dutTestParams, dutConfig,
"pkts_num_leak_out": qosConfig["pkts_num_leak_out"],
"pkts_num_trig_pfc": qosConfig[xoffProfile]["pkts_num_trig_pfc"],
"pkts_num_trig_ingr_drp": qosConfig[xoffProfile]["pkts_num_trig_ingr_drp"],
}
})
if "pkts_num_margin" in qosConfig[xoffProfile].keys():
testParams["pkts_num_margin"] = qosConfig[xoffProfile]["pkts_num_margin"]
testParams.update(dutTestParams["basicParams"])
self.runPtfTest(ptfhost, testCase="sai_qos_tests.PFCtest", testParams=testParams)

@pytest.mark.parametrize("xonProfile", ["xon_1", "xon_2"])
Expand All @@ -124,7 +125,9 @@ def testQosSaiPfcXonLimit(self, xonProfile, ptfhost, dutTestParams, dutConfig, d
"""
portSpeedCableLength = dutQosConfig["portSpeedCableLength"]
qosConfig = dutQosConfig["param"]
testParams = {
testParams = dict()
testParams.update(dutTestParams["basicParams"])
testParams.update({
"dscp": qosConfig[xonProfile]["dscp"],
"ecn": qosConfig[xonProfile]["ecn"],
"pg": qosConfig[xonProfile]["pg"],
Expand All @@ -140,12 +143,11 @@ def testQosSaiPfcXonLimit(self, xonProfile, ptfhost, dutTestParams, dutConfig, d
"pkts_num_leak_out": qosConfig[portSpeedCableLength]["pkts_num_leak_out"],
"pkts_num_trig_pfc": qosConfig[xonProfile]["pkts_num_trig_pfc"],
"pkts_num_dismiss_pfc": qosConfig[xonProfile]["pkts_num_dismiss_pfc"]
}
})
if "pkts_num_hysteresis" in qosConfig[xonProfile].keys():
testParams["pkts_num_hysteresis"] = qosConfig[xonProfile]["pkts_num_hysteresis"]
if "pkts_num_margin" in qosConfig[xonProfile].keys():
testParams["pkts_num_margin"] = qosConfig[xonProfile]["pkts_num_margin"]
testParams.update(dutTestParams["basicParams"])
self.runPtfTest(ptfhost, testCase="sai_qos_tests.PFCXonTest", testParams=testParams)

def testQosSaiHeadroomPoolSize(self, ptfhost, dutTestParams, dutConfig, dutQosConfig, ingressLosslessProfile):
Expand Down Expand Up @@ -173,7 +175,9 @@ def testQosSaiHeadroomPoolSize(self, ptfhost, dutTestParams, dutConfig, dutQosCo
qosConfig = dutQosConfig["param"][portSpeedCableLength]
testPortIps = dutConfig["testPortIps"]

testParams = {
testParams = dict()
testParams.update(dutTestParams["basicParams"])
testParams.update({
"testbed_type": dutTestParams["topo"],
"dscps": qosConfig["hdrm_pool_size"]["dscps"],
"ecn": qosConfig["hdrm_pool_size"]["ecn"],
Expand All @@ -187,8 +191,7 @@ def testQosSaiHeadroomPoolSize(self, ptfhost, dutTestParams, dutConfig, dutQosCo
"pkts_num_trig_pfc": qosConfig["hdrm_pool_size"]["pkts_num_trig_pfc"],
"pkts_num_hdrm_full": qosConfig["hdrm_pool_size"]["pkts_num_hdrm_full"],
"pkts_num_hdrm_partial": qosConfig["hdrm_pool_size"]["pkts_num_hdrm_partial"],
}
testParams.update(dutTestParams["basicParams"])
})
self.runPtfTest(ptfhost, testCase="sai_qos_tests.HdrmPoolSizeTest", testParams=testParams)

@pytest.mark.parametrize("bufPool", ["wm_buf_pool_lossless", "wm_buf_pool_lossy"])
Expand Down Expand Up @@ -230,7 +233,9 @@ def testQosSaiBufferPoolWatermark(self, request, bufPool, ptfhost, dutTestParams
else:
pytest.fail("Unknown pool type")

testParams = {
testParams = dict()
testParams.update(dutTestParams["basicParams"])
testParams.update({
"dscp": qosConfig[bufPool]["dscp"],
"ecn": qosConfig[bufPool]["ecn"],
"pg": qosConfig[bufPool]["pg"],
Expand All @@ -244,8 +249,7 @@ def testQosSaiBufferPoolWatermark(self, request, bufPool, ptfhost, dutTestParams
"pkts_num_fill_shared": triggerDrop - 1,
"cell_size": qosConfig[bufPool]["cell_size"],
"buf_pool_roid": buf_pool_roid
}
testParams.update(dutTestParams["basicParams"])
})
self.runPtfTest(ptfhost, testCase="sai_qos_tests.BufferPoolWatermarkTest", testParams=testParams)

def testQosSaiLossyQueue(self, ptfhost, dutTestParams, dutConfig, dutQosConfig, ingressLossyProfile):
Expand All @@ -269,7 +273,9 @@ def testQosSaiLossyQueue(self, ptfhost, dutTestParams, dutConfig, dutQosConfig,
portSpeedCableLength = dutQosConfig["portSpeedCableLength"]
qosConfig = dutQosConfig["param"]

testParams = {
testParams = dict()
testParams.update(dutTestParams["basicParams"])
testParams.update({
"dscp": qosConfig["lossy_queue_1"]["dscp"],
"ecn": qosConfig["lossy_queue_1"]["ecn"],
"pg": qosConfig["lossy_queue_1"]["pg"],
Expand All @@ -283,13 +289,12 @@ def testQosSaiLossyQueue(self, ptfhost, dutTestParams, dutConfig, dutQosConfig,
"src_port_ip": dutConfig["testPorts"]["src_port_ip"],
"pkts_num_leak_out": qosConfig[portSpeedCableLength]["pkts_num_leak_out"],
"pkts_num_trig_egr_drp": qosConfig["lossy_queue_1"]["pkts_num_trig_egr_drp"],
}
})
if "packet_size" in qosConfig["lossy_queue_1"].keys():
testParams["packet_size"] = qosConfig["lossy_queue_1"]["packet_size"]
testParams["cell_size"] = qosConfig["lossy_queue_1"]["cell_size"]
if "pkts_num_margin" in qosConfig["lossy_queue_1"].keys():
testParams["pkts_num_margin"] = qosConfig["lossy_queue_1"]["pkts_num_margin"]
testParams.update(dutTestParams["basicParams"])
self.runPtfTest(ptfhost, testCase="sai_qos_tests.LossyQueueTest", testParams=testParams)

def testQosSaiDscpQueueMapping(self, ptfhost, dutTestParams, dutConfig):
Expand All @@ -308,13 +313,14 @@ def testQosSaiDscpQueueMapping(self, ptfhost, dutTestParams, dutConfig):
Raises:
RunAnsibleModuleFail if ptf test fails
"""
testParams = {
testParams = dict()
testParams.update(dutTestParams["basicParams"])
testParams.update({
"dst_port_id": dutConfig["testPorts"]["dst_port_id"],
"dst_port_ip": dutConfig["testPorts"]["dst_port_ip"],
"src_port_id": dutConfig["testPorts"]["src_port_id"],
"src_port_ip": dutConfig["testPorts"]["src_port_ip"],
}
testParams.update(dutTestParams["basicParams"])
})
self.runPtfTest(ptfhost, testCase="sai_qos_tests.DscpMappingPB", testParams=testParams)

def testQosSaiDwrr(self, ptfhost, dutTestParams, dutConfig, dutQosConfig):
Expand All @@ -337,7 +343,9 @@ def testQosSaiDwrr(self, ptfhost, dutTestParams, dutConfig, dutQosConfig):
portSpeedCableLength = dutQosConfig["portSpeedCableLength"]
qosConfig = dutQosConfig["param"]

testParams = {
testParams = dict()
testParams.update(dutTestParams["basicParams"])
testParams.update({
"ecn": qosConfig["lossy_queue_1"]["ecn"],
"dst_port_id": dutConfig["testPorts"]["dst_port_id"],
"dst_port_ip": dutConfig["testPorts"]["dst_port_ip"],
Expand All @@ -352,8 +360,7 @@ def testQosSaiDwrr(self, ptfhost, dutTestParams, dutConfig, dutQosConfig):
"q6_num_of_pkts": qosConfig["wrr"]["q6_num_of_pkts"],
"limit": qosConfig["wrr"]["limit"],
"pkts_num_leak_out": qosConfig[portSpeedCableLength]["pkts_num_leak_out"],
}
testParams.update(dutTestParams["basicParams"])
})
self.runPtfTest(ptfhost, testCase="sai_qos_tests.WRRtest", testParams=testParams)

@pytest.mark.parametrize("pgProfile", ["wm_pg_shared_lossless", "wm_pg_shared_lossy"])
Expand Down Expand Up @@ -388,7 +395,9 @@ def testQosSaiPgSharedWatermark(self, pgProfile, ptfhost, dutTestParams, dutConf
elif "wm_pg_shared_lossy" in pgProfile:
pktsNumFillShared = int(qosConfig[pgProfile]["pkts_num_trig_egr_drp"]) - 1

testParams = {
testParams = dict()
testParams.update(dutTestParams["basicParams"])
testParams.update({
"dscp": qosConfig[pgProfile]["dscp"],
"ecn": qosConfig[pgProfile]["ecn"],
"pg": qosConfig[pgProfile]["pg"],
Expand All @@ -400,10 +409,9 @@ def testQosSaiPgSharedWatermark(self, pgProfile, ptfhost, dutTestParams, dutConf
"pkts_num_fill_min": qosConfig[pgProfile]["pkts_num_fill_min"],
"pkts_num_fill_shared": pktsNumFillShared,
"cell_size": qosConfig[pgProfile]["cell_size"],
}
})
if "packet_size" in qosConfig[pgProfile].keys():
testParams["packet_size"] = qosConfig[pgProfile]["packet_size"]
testParams.update(dutTestParams["basicParams"])
self.runPtfTest(ptfhost, testCase="sai_qos_tests.PGSharedWatermarkTest", testParams=testParams)

def testQosSaiPgHeadroomWatermark(self, ptfhost, dutTestParams, dutConfig, dutQosConfig, resetWatermark):
Expand All @@ -427,7 +435,9 @@ def testQosSaiPgHeadroomWatermark(self, ptfhost, dutTestParams, dutConfig, dutQo
portSpeedCableLength = dutQosConfig["portSpeedCableLength"]
qosConfig = dutQosConfig["param"][portSpeedCableLength]

testParams = {
testParams = dict()
testParams.update(dutTestParams["basicParams"])
testParams.update({
"dscp": qosConfig["wm_pg_headroom"]["dscp"],
"ecn": qosConfig["wm_pg_headroom"]["ecn"],
"pg": qosConfig["wm_pg_headroom"]["pg"],
Expand All @@ -439,10 +449,9 @@ def testQosSaiPgHeadroomWatermark(self, ptfhost, dutTestParams, dutConfig, dutQo
"pkts_num_trig_pfc": qosConfig["wm_pg_headroom"]["pkts_num_trig_pfc"],
"pkts_num_trig_ingr_drp": qosConfig["wm_pg_headroom"]["pkts_num_trig_ingr_drp"],
"cell_size": qosConfig["wm_pg_headroom"]["cell_size"],
}
})
if "pkts_num_margin" in qosConfig["wm_pg_headroom"].keys():
testParams["pkts_num_margin"] = qosConfig["wm_pg_headroom"]["pkts_num_margin"]
testParams.update(dutTestParams["basicParams"])
self.runPtfTest(ptfhost, testCase="sai_qos_tests.PGHeadroomWatermarkTest", testParams=testParams)

@pytest.mark.parametrize("queueProfile", ["wm_q_shared_lossless", "wm_q_shared_lossy"])
Expand All @@ -457,7 +466,7 @@ def testQosSaiQSharedWatermark(self, queueProfile, ptfhost, dutTestParams, dutCo
dutConfig (Fixture, dict): Map of DUT config containing dut interfaces, test port IDs, test port IPs,
and test ports
dutQosConfig (Fixture, dict): Map containing DUT host QoS configuration
resetWatermark (Fxiture): reset queue watermarks
resetWatermark (Fixture): reset queue watermarks

Returns:
None
Expand All @@ -471,7 +480,9 @@ def testQosSaiQSharedWatermark(self, queueProfile, ptfhost, dutTestParams, dutCo
triggerDrop = qosConfig[queueProfile]["pkts_num_trig_ingr_drp"] if "wm_q_shared_lossless" in queueProfile \
else qosConfig[queueProfile]["pkts_num_trig_egr_drp"]

testParams = {
testParams = dict()
testParams.update(dutTestParams["basicParams"])
testParams.update({
"dscp": qosConfig[queueProfile]["dscp"],
"ecn": qosConfig[queueProfile]["ecn"],
"queue": qosConfig[queueProfile]["queue"],
Expand All @@ -483,10 +494,9 @@ def testQosSaiQSharedWatermark(self, queueProfile, ptfhost, dutTestParams, dutCo
"pkts_num_fill_min": qosConfig[queueProfile]["pkts_num_fill_min"],
"pkts_num_trig_drp": triggerDrop,
"cell_size": qosConfig[queueProfile]["cell_size"],
}
})
if "packet_size" in qosConfig[queueProfile].keys():
testParams["packet_size"] = qosConfig[queueProfile]["packet_size"]
testParams.update(dutTestParams["basicParams"])
self.runPtfTest(ptfhost, testCase="sai_qos_tests.QSharedWatermarkTest", testParams=testParams)

def testQosSaiDscpToPgMapping(self, request, ptfhost, dutTestParams, dutConfig):
Expand All @@ -509,13 +519,14 @@ def testQosSaiDscpToPgMapping(self, request, ptfhost, dutTestParams, dutConfig):
if disableTest:
pytest.skip("DSCP to PG mapping test disabled")

testParams = {
testParams = dict()
testParams.update(dutTestParams["basicParams"])
testParams.update({
"dst_port_id": dutConfig["testPorts"]["dst_port_id"],
"dst_port_ip": dutConfig["testPorts"]["dst_port_ip"],
"src_port_id": dutConfig["testPorts"]["src_port_id"],
"src_port_ip": dutConfig["testPorts"]["src_port_ip"],
}
testParams.update(dutTestParams["basicParams"])
})
self.runPtfTest(ptfhost, testCase="sai_qos_tests.DscpToPgMapping", testParams=testParams)

def testQosSaiDwrrWeightChange(self, ptfhost, dutTestParams, dutConfig, dutQosConfig, updateSchedProfile):
Expand All @@ -539,7 +550,9 @@ def testQosSaiDwrrWeightChange(self, ptfhost, dutTestParams, dutConfig, dutQosCo
portSpeedCableLength = dutQosConfig["portSpeedCableLength"]
qosConfig = dutQosConfig["param"]

testParams = {
testParams = dict()
testParams.update(dutTestParams["basicParams"])
testParams.update({
"ecn": qosConfig["wrr_chg"]["ecn"],
"dst_port_id": dutConfig["testPorts"]["dst_port_id"],
"dst_port_ip": dutConfig["testPorts"]["dst_port_ip"],
Expand All @@ -554,6 +567,5 @@ def testQosSaiDwrrWeightChange(self, ptfhost, dutTestParams, dutConfig, dutQosCo
"q6_num_of_pkts": qosConfig["wrr_chg"]["q6_num_of_pkts"],
"limit": qosConfig["wrr_chg"]["limit"],
"pkts_num_leak_out": qosConfig[portSpeedCableLength]["pkts_num_leak_out"],
}
testParams.update(dutTestParams["basicParams"])
})
self.runPtfTest(ptfhost, testCase="sai_qos_tests.WRRtest", testParams=testParams)