DPDK patches and discussions
 help / color / mirror / Atom feed
* [PATCH] test/crypto: remove PMD specific asym testsuites
@ 2025-12-18 14:09 Rupesh Chiluka
  0 siblings, 0 replies; only message in thread
From: Rupesh Chiluka @ 2025-12-18 14:09 UTC (permalink / raw)
  To: Akhil Goyal, Fan Zhang; +Cc: dev, anoobj, ktejasree, kai.ji, Rupesh Chiluka

Change PMD specific asymmetric testsuites to
capabilities based testsuites

Signed-off-by: Rupesh Chiluka <rchiluka@marvell.com>
---
 app/test/test_cryptodev_asym.c | 540 ++++++++++++++++++++++-----------
 1 file changed, 364 insertions(+), 176 deletions(-)

diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c
index 111f675c94..cc4590a500 100644
--- a/app/test/test_cryptodev_asym.c
+++ b/app/test/test_cryptodev_asym.c
@@ -39,6 +39,10 @@
 #define TEST_VECTOR_SIZE 256
 #define DEQ_TIMEOUT 10000
 
+#define ADD_ASYM_TESTSUITE(index, parent_ts, child_ts, num_child_ts)	\
+	for (j = 0; j < num_child_ts; index++, j++)			\
+		parent_ts.unit_test_suites[index] = child_ts[j]
+
 static int gbl_driver_id;
 static struct crypto_testsuite_params_asym {
 	struct rte_mempool *op_mpool;
@@ -3113,6 +3117,9 @@ test_sm2_enc(void)
 	capa = rte_cryptodev_asym_capability_get(dev_id, &idx);
 	if (capa == NULL)
 		return -ENOTSUP;
+	if (!rte_cryptodev_asym_xform_capability_check_opcap(capa,
+			RTE_CRYPTO_ASYM_OP_ENCRYPT, 0))
+		return TEST_SKIPPED;
 
 	/* Setup crypto op data structure */
 	op = rte_crypto_op_alloc(op_mpool, RTE_CRYPTO_OP_TYPE_ASYMMETRIC);
@@ -3297,6 +3304,9 @@ test_sm2_dec(void)
 	capa = rte_cryptodev_asym_capability_get(dev_id, &idx);
 	if (capa == NULL)
 		return -ENOTSUP;
+	if (!rte_cryptodev_asym_xform_capability_check_opcap(capa,
+			RTE_CRYPTO_ASYM_OP_DECRYPT, 0))
+		return TEST_SKIPPED;
 
 	/* Setup crypto op data structure */
 	op = rte_crypto_op_alloc(op_mpool, RTE_CRYPTO_OP_TYPE_ASYMMETRIC);
@@ -4995,27 +5005,254 @@ test_sm2_partial_decryption(const void *data)
 	return 0;
 }
 
-static struct unit_test_suite cryptodev_openssl_asym_testsuite  = {
-	.suite_name = "Crypto Device OPENSSL ASYM Unit Test Suite",
-	.setup = testsuite_setup,
-	.teardown = testsuite_teardown,
+static int
+check_asym_capabilities_supported(const enum rte_crypto_asym_xform_type xform_type)
+{
+	uint8_t dev_id = testsuite_params.valid_devs[0];
+	struct rte_cryptodev_asym_capability_idx idx = {xform_type};
+
+	if (rte_cryptodev_asym_capability_get(dev_id, &idx) == NULL)
+		return TEST_SKIPPED;
+	return 0;
+}
+
+static int
+crypto_asym_dh_testsuite_setup(void)
+{
+	const enum rte_crypto_asym_xform_type xform_type = RTE_CRYPTO_ASYM_XFORM_DH;
+
+	if (check_asym_capabilities_supported(xform_type) != 0) {
+		RTE_LOG(INFO, USER1,
+			"Device doesn't support required ASYM capabilities. Test skipped\n");
+		return TEST_SKIPPED;
+	}
+	return 0;
+}
+
+static int
+crypto_asym_dsa_testsuite_setup(void)
+{
+	const enum rte_crypto_asym_xform_type xform_type = RTE_CRYPTO_ASYM_XFORM_DSA;
+
+	if (check_asym_capabilities_supported(xform_type) != 0) {
+		RTE_LOG(INFO, USER1,
+			"Device doesn't support required ASYM capabilities. Test skipped\n");
+		return TEST_SKIPPED;
+	}
+	return 0;
+}
+
+static int
+crypto_asym_ecdh_testsuite_setup(void)
+{
+	const enum rte_crypto_asym_xform_type xform_type = RTE_CRYPTO_ASYM_XFORM_ECDH;
+
+	if (check_asym_capabilities_supported(xform_type) != 0) {
+		RTE_LOG(INFO, USER1,
+			"Device doesn't support required ASYM capabilities. Test skipped\n");
+		return TEST_SKIPPED;
+	}
+	return 0;
+}
+
+static int
+crypto_asym_ecdsa_testsuite_setup(void)
+{
+	const enum rte_crypto_asym_xform_type xform_type = RTE_CRYPTO_ASYM_XFORM_ECDSA;
+
+	if (check_asym_capabilities_supported(xform_type) != 0) {
+		RTE_LOG(INFO, USER1,
+			"Device doesn't support required ASYM capabilities. Test skipped\n");
+		return TEST_SKIPPED;
+	}
+	return 0;
+}
+
+static int
+crypto_asym_ecpm_testsuite_setup(void)
+{
+	const enum rte_crypto_asym_xform_type xform_type = RTE_CRYPTO_ASYM_XFORM_ECPM;
+
+	if (check_asym_capabilities_supported(xform_type) != 0) {
+		RTE_LOG(INFO, USER1,
+			"Device doesn't support required ASYM capabilities. Test skipped\n");
+		return TEST_SKIPPED;
+	}
+	return 0;
+}
+
+static int
+crypto_asym_eddsa_testsuite_setup(void)
+{
+	const enum rte_crypto_asym_xform_type xform_type = RTE_CRYPTO_ASYM_XFORM_EDDSA;
+
+	if (check_asym_capabilities_supported(xform_type) != 0) {
+		RTE_LOG(INFO, USER1,
+			"Device doesn't support required ASYM capabilities. Test skipped\n");
+		return TEST_SKIPPED;
+	}
+	return 0;
+}
+
+static int
+crypto_asym_mod_ex_testsuite_setup(void)
+{
+	const enum rte_crypto_asym_xform_type xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX;
+
+	if (check_asym_capabilities_supported(xform_type) != 0) {
+		RTE_LOG(INFO, USER1,
+			"Device doesn't support required ASYM capabilities. Test skipped\n");
+		return TEST_SKIPPED;
+	}
+	return 0;
+}
+
+static int
+crypto_asym_mod_inv_testsuite_setup(void)
+{
+	const enum rte_crypto_asym_xform_type xform_type = RTE_CRYPTO_ASYM_XFORM_MODINV;
+
+	if (check_asym_capabilities_supported(xform_type) != 0) {
+		RTE_LOG(INFO, USER1,
+			"Device doesn't support required ASYM capabilities. Test skipped\n");
+		return TEST_SKIPPED;
+	}
+	return 0;
+}
+
+static int
+crypto_asym_rsa_testsuite_setup(void)
+{
+	const enum rte_crypto_asym_xform_type xform_type = RTE_CRYPTO_ASYM_XFORM_RSA;
+
+	if (check_asym_capabilities_supported(xform_type) != 0) {
+		RTE_LOG(INFO, USER1,
+			"Device doesn't support required ASYM capabilities. Test skipped\n");
+		return TEST_SKIPPED;
+	}
+	return 0;
+}
+
+static int
+crypto_asym_sm2_testsuite_setup(void)
+{
+	const enum rte_crypto_asym_xform_type xform_type = RTE_CRYPTO_ASYM_XFORM_SM2;
+
+	if (check_asym_capabilities_supported(xform_type) != 0) {
+		RTE_LOG(INFO, USER1,
+			"Device doesn't support required ASYM capabilities. Test skipped\n");
+		return TEST_SKIPPED;
+	}
+	return 0;
+}
+
+static int
+crypto_asym_ml_kem_testsuite_setup(void)
+{
+	const enum rte_crypto_asym_xform_type xform_type = RTE_CRYPTO_ASYM_XFORM_ML_KEM;
+
+	if (check_asym_capabilities_supported(xform_type) != 0) {
+		RTE_LOG(INFO, USER1,
+			"Device doesn't support required ASYM capabilities. Test skipped\n");
+		return TEST_SKIPPED;
+	}
+	return 0;
+}
+
+static int
+crypto_asym_ml_dsa_testsuite_setup(void)
+{
+	const enum rte_crypto_asym_xform_type xform_type = RTE_CRYPTO_ASYM_XFORM_ML_DSA;
+
+	if (check_asym_capabilities_supported(xform_type) != 0) {
+		RTE_LOG(INFO, USER1,
+			"Device doesn't support required ASYM capabilities. Test skipped\n");
+		return TEST_SKIPPED;
+	}
+	return 0;
+}
+
+static struct unit_test_suite cryptodev_asym_gen_testsuite = {
+	.suite_name = "Cryptodev ASYM General Unit Test Suite",
 	.unit_test_cases = {
 		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_capability),
+		TEST_CASES_END()
+	}
+};
+
+static struct unit_test_suite cryptodev_asym_dh_testsuite = {
+	.suite_name = "Cryptodev ASYM DH Unit Test Suite",
+	.setup = crypto_asym_dh_testsuite_setup,
+	.unit_test_cases = {
+		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_dh_key_generation),
+		TEST_CASES_END() /**< NULL terminate unit test array */
+	}
+};
+
+static struct unit_test_suite cryptodev_asym_dsa_testsuite = {
+	.suite_name = "Cryptodev ASYM DSA Unit Test Suite",
+	.setup = crypto_asym_dsa_testsuite_setup,
+	.unit_test_cases = {
 		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_dsa),
+		TEST_CASES_END()
+	}
+};
+
+static struct unit_test_suite cryptodev_asym_ecdh_testsuite = {
+	.suite_name = "Cryptodev ASYM ECDH Unit Test Suite",
+	.setup = crypto_asym_ecdh_testsuite_setup,
+	.unit_test_cases = {
 		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym,
-				test_dh_key_generation),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_sm2_sign),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_sm2_verify),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_sm2_enc),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_sm2_dec),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_rsa_enc_dec),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym,
-				test_rsa_sign_verify),
+				test_ecdh_all_curve),
+		TEST_CASE_NAMED_ST(
+			"ECDH Elliptic Curve tests",
+			ut_setup_asym, ut_teardown_asym,
+			test_ecdh_qat_curves),
+		TEST_CASES_END()
+	}
+};
+
+static struct unit_test_suite cryptodev_asym_ecdsa_testsuite = {
+	.suite_name = "Cryptodev ASYM ECDSA Unit Test Suite",
+	.setup = crypto_asym_ecdsa_testsuite_setup,
+	.unit_test_cases = {
 		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym,
-				test_rsa_enc_dec_crt),
+			     test_ecdsa_sign_verify_all_curve),
+		TEST_CASE_NAMED_ST(
+			"ECDSA Elliptic Curve tests",
+			ut_setup_asym, ut_teardown_asym,
+			test_ecdsa_sign_verify_qat_curves),
+		TEST_CASES_END()
+	}
+};
+
+static struct unit_test_suite cryptodev_asym_ecpm_testsuite = {
+	.suite_name = "Cryptodev ASYM ECPM Unit Test Suite",
+	.setup = crypto_asym_ecpm_testsuite_setup,
+	.unit_test_cases = {
 		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym,
-				test_rsa_sign_verify_crt),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_mod_inv),
+				test_ecpm_all_curve),
+		TEST_CASE_NAMED_ST(
+			"ECPM Elliptic Curve tests",
+			ut_setup_asym, ut_teardown_asym,
+			test_ecpm_qat_curves),
+		TEST_CASES_END()
+	}
+};
+
+static struct unit_test_suite cryptodev_asym_eddsa_testsuite = {
+	.suite_name = "Cryptodev ASYM EdDSA Unit Test Suite",
+	.setup = crypto_asym_eddsa_testsuite_setup,
+	.unit_test_cases = {
+		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_eddsa_sign_verify_all_curve),
+		TEST_CASES_END()
+	}
+};
+
+static struct unit_test_suite cryptodev_asym_mod_ex_testsuite = {
+	.suite_name = "Cryptodev ASYM MOD Ex Unit Test Suite",
+	.setup = crypto_asym_mod_ex_testsuite_setup,
+	.unit_test_cases = {
 		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_mod_exp),
 		TEST_CASE_NAMED_WITH_DATA(
 			"Modex test for zero padding",
@@ -5057,34 +5294,39 @@ static struct unit_test_suite cryptodev_openssl_asym_testsuite  = {
 			"Modex Group 24 subgroup test",
 			ut_setup_asym, ut_teardown_asym,
 			modular_exponentiation, &modex_group_test_cases[7]),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_eddsa_sign_verify_all_curve),
-
-		TEST_CASES_END() /**< NULL terminate unit test array */
-	}
-};
-
-static struct unit_test_suite cryptodev_qat_asym_testsuite  = {
-	.suite_name = "Crypto Device QAT ASYM Unit Test Suite",
-	.setup = testsuite_setup,
-	.teardown = testsuite_teardown,
-	.unit_test_cases = {
-		TEST_CASE_NAMED_WITH_DATA(
-			"SM2 encryption - test case 1",
-			ut_setup_asym, ut_teardown_asym,
-			test_sm2_partial_encryption, &sm2_enc_hw_t1),
-		TEST_CASE_NAMED_WITH_DATA(
-			"SM2 decryption - test case 1",
-			ut_setup_asym, ut_teardown_asym,
-			test_sm2_partial_decryption, &sm2_enc_hw_t1),
 		TEST_CASE_NAMED_WITH_DATA(
 			"Modular Exponentiation (mod=128, base=20, exp=3, res=128)",
 			ut_setup_asym, ut_teardown_asym,
 			modular_exponentiation, &modex_test_case_m128_b20_e3),
+		TEST_CASES_END()
+	}
+};
+
+static struct unit_test_suite cryptodev_asym_mod_inv_testsuite = {
+	.suite_name = "Cryptodev ASYM MOD Inv Unit Test Suite",
+	.setup = crypto_asym_mod_inv_testsuite_setup,
+	.unit_test_cases = {
+		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_mod_inv),
 		/* Modular Multiplicative Inverse */
 		TEST_CASE_NAMED_WITH_DATA(
 			"Modular Inverse (mod=128, base=20, exp=3, inv=128)",
 			ut_setup_asym, ut_teardown_asym,
 			modular_multiplicative_inverse, &modinv_test_case),
+		TEST_CASES_END()
+	}
+};
+
+static struct unit_test_suite cryptodev_asym_rsa_testsuite = {
+	.suite_name = "Cryptodev ASYM RSA Unit Test Suite",
+	.setup = crypto_asym_rsa_testsuite_setup,
+	.unit_test_cases = {
+		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_rsa_enc_dec),
+		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym,
+				test_rsa_sign_verify),
+		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym,
+				test_rsa_enc_dec_crt),
+		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym,
+				test_rsa_sign_verify_crt),
 		/* RSA EXP */
 		TEST_CASE_NAMED_WITH_DATA(
 			"RSA Encryption (n=128, pt=20, e=3) EXP, Padding: NONE",
@@ -5103,203 +5345,149 @@ static struct unit_test_suite cryptodev_qat_asym_testsuite  = {
 			"RSA Decryption (n=128, pt=20, e=3) CRT, Padding: NONE",
 			ut_setup_asym, ut_teardown_asym,
 			kat_rsa_decrypt_crt, &rsa_vector_128_20_3_none),
-		TEST_CASE_NAMED_ST(
-			"ECDH Elliptic Curve tests",
-			ut_setup_asym, ut_teardown_asym,
-			test_ecdh_qat_curves),
-		TEST_CASE_NAMED_ST(
-			"ECPM Elliptic Curve tests",
-			ut_setup_asym, ut_teardown_asym,
-			test_ecpm_qat_curves),
-		TEST_CASE_NAMED_ST(
-			"ECDSA Elliptic Curve tests",
-			ut_setup_asym, ut_teardown_asym,
-			test_ecdsa_sign_verify_qat_curves),
-
-		TEST_CASES_END() /**< NULL terminate unit test array */
+		TEST_CASES_END()
 	}
 };
 
-static struct unit_test_suite cryptodev_octeontx_asym_testsuite  = {
-	.suite_name = "Crypto Device OCTEONTX ASYM Unit Test Suite",
-	.setup = testsuite_setup,
-	.teardown = testsuite_teardown,
+static struct unit_test_suite cryptodev_asym_sm2_testsuite = {
+	.suite_name = "Cryptodev ASYM SM2 Unit Test Suite",
+	.setup = crypto_asym_sm2_testsuite_setup,
 	.unit_test_cases = {
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_capability),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym,
-				test_rsa_enc_dec_crt),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym,
-				test_rsa_sign_verify_crt),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_rsa_enc_dec),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym,
-				test_rsa_sign_verify),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_mod_exp),
-		TEST_CASE_NAMED_WITH_DATA(
-			"Modex test for zero padding",
-			ut_setup_asym, ut_teardown_asym,
-			modular_exponentiation, &modex_test_cases[0]),
-		TEST_CASE_NAMED_WITH_DATA(
-			"Modex test for zero padding (2)",
-			ut_setup_asym, ut_teardown_asym,
-			modular_exponentiation, &modex_test_cases[1]),
-		TEST_CASE_NAMED_WITH_DATA(
-			"Modex Group 5 test",
-			ut_setup_asym, ut_teardown_asym,
-			modular_exponentiation, &modex_group_test_cases[0]),
-		TEST_CASE_NAMED_WITH_DATA(
-			"Modex Group 14 test",
-			ut_setup_asym, ut_teardown_asym,
-			modular_exponentiation, &modex_group_test_cases[1]),
-		TEST_CASE_NAMED_WITH_DATA(
-			"Modex Group 15 test",
-			ut_setup_asym, ut_teardown_asym,
-			modular_exponentiation, &modex_group_test_cases[2]),
-		TEST_CASE_NAMED_WITH_DATA(
-			"Modex Group 16 test",
-			ut_setup_asym, ut_teardown_asym,
-			modular_exponentiation, &modex_group_test_cases[3]),
-		TEST_CASE_NAMED_WITH_DATA(
-			"Modex Group 17 test",
-			ut_setup_asym, ut_teardown_asym,
-			modular_exponentiation, &modex_group_test_cases[4]),
-		TEST_CASE_NAMED_WITH_DATA(
-			"Modex Group 18 test",
-			ut_setup_asym, ut_teardown_asym,
-			modular_exponentiation, &modex_group_test_cases[5]),
+		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_sm2_sign),
+		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_sm2_verify),
+		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_sm2_enc),
+		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_sm2_dec),
 		TEST_CASE_NAMED_WITH_DATA(
-			"Modex Group 24 test",
+			"SM2 encryption - test case 1",
 			ut_setup_asym, ut_teardown_asym,
-			modular_exponentiation, &modex_group_test_cases[6]),
+			test_sm2_partial_encryption, &sm2_enc_hw_t1),
 		TEST_CASE_NAMED_WITH_DATA(
-			"Modex Group 24 subgroup test",
+			"SM2 decryption - test case 1",
 			ut_setup_asym, ut_teardown_asym,
-			modular_exponentiation, &modex_group_test_cases[7]),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym,
-			     test_ecdsa_sign_verify_all_curve),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_sm2_sign),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_sm2_verify),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym,
-				test_ecdh_all_curve),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym,
-				test_ecpm_all_curve),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_eddsa_sign_verify_all_curve),
+			test_sm2_partial_decryption, &sm2_enc_hw_t1),
+		TEST_CASES_END()
+	}
+};
+
+static struct unit_test_suite cryptodev_asym_ml_kem_testsuite = {
+	.suite_name = "Cryptodev ASYM ML KEM Unit Test Suite",
+	.setup = crypto_asym_ml_kem_testsuite_setup,
+	.unit_test_cases = {
 		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_mlkem_keygen),
 		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_mlkem_encap),
 		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_mlkem_decap),
+		TEST_CASES_END()
+	}
+};
+
+static struct unit_test_suite cryptodev_asym_ml_dsa_testsuite = {
+	.suite_name = "Cryptodev ASYM ML DSA Unit Test Suite",
+	.setup = crypto_asym_ml_dsa_testsuite_setup,
+	.unit_test_cases = {
 		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_mldsa_keygen),
 		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_mldsa_sign),
 		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_mldsa_verify),
-		TEST_CASES_END() /**< NULL terminate unit test array */
+		TEST_CASES_END()
 	}
 };
 
-static struct unit_test_suite cryptodev_virtio_asym_testsuite  = {
-	.suite_name = "Crypto Device VIRTIO ASYM Unit Test Suite",
-	.setup = testsuite_setup,
-	.teardown = testsuite_teardown,
-	.unit_test_cases = {
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_capability),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym,
-				test_rsa_sign_verify_crt),
-		TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_rsa_enc_dec_crt),
-		TEST_CASES_END() /**< NULL terminate unit test array */
-	}
+static struct unit_test_suite end_testsuite = {
+	.suite_name = NULL,
+	.setup = NULL,
+	.teardown = NULL,
+	.unit_test_suites = NULL
 };
 
 static int
-test_cryptodev_openssl_asym(void)
+run_cryptodev_asym_testsuite(const char *pmd_name)
 {
-	gbl_driver_id = rte_cryptodev_driver_id_get(
-			RTE_STR(CRYPTODEV_NAME_OPENSSL_PMD));
-
+	uint8_t ret, j, i = 0;
+
+	struct unit_test_suite *asym_suites[] = {
+		&cryptodev_asym_gen_testsuite,
+		&cryptodev_asym_dh_testsuite,
+		&cryptodev_asym_dsa_testsuite,
+		&cryptodev_asym_ecdh_testsuite,
+		&cryptodev_asym_ecdsa_testsuite,
+		&cryptodev_asym_ecpm_testsuite,
+		&cryptodev_asym_eddsa_testsuite,
+		&cryptodev_asym_mod_ex_testsuite,
+		&cryptodev_asym_mod_inv_testsuite,
+		&cryptodev_asym_rsa_testsuite,
+		&cryptodev_asym_sm2_testsuite,
+		&cryptodev_asym_ml_kem_testsuite,
+		&cryptodev_asym_ml_dsa_testsuite,
+		&end_testsuite
+	};
+
+	static struct unit_test_suite asym_ts = {
+		.suite_name = "Cryptodev ASYM Unit Test Suite",
+		.setup = testsuite_setup,
+		.teardown = testsuite_teardown,
+		.unit_test_cases = {TEST_CASES_END()}
+	};
+
+	gbl_driver_id = rte_cryptodev_driver_id_get(pmd_name);
 	if (gbl_driver_id == -1) {
-		RTE_LOG(ERR, USER1, "OPENSSL PMD must be loaded.\n");
+		RTE_LOG(ERR, USER1, "%s PMD must be loaded.\n", pmd_name);
 		return TEST_SKIPPED;
 	}
 
-	return unit_test_suite_runner(&cryptodev_openssl_asym_testsuite);
+	asym_ts.unit_test_suites = malloc(sizeof(struct unit_test_suite *) * RTE_DIM(asym_suites));
+	if (asym_ts.unit_test_suites == NULL) {
+		RTE_LOG(ERR, USER1,
+			"Failed to allocate memory for unit test suites\n");
+		return TEST_FAILED;
+	}
+
+	ADD_ASYM_TESTSUITE(i, asym_ts, asym_suites, RTE_DIM(asym_suites));
+	ret = unit_test_suite_runner(&asym_ts);
+
+	free(asym_ts.unit_test_suites);
+
+	return ret;
 }
 
 static int
-test_cryptodev_qat_asym(void)
+test_cryptodev_openssl_asym(void)
 {
-	gbl_driver_id = rte_cryptodev_driver_id_get(
-			RTE_STR(CRYPTODEV_NAME_QAT_ASYM_PMD));
-
-	if (gbl_driver_id == -1) {
-		RTE_LOG(ERR, USER1, "QAT PMD must be loaded.\n");
-		return TEST_SKIPPED;
-	}
+	return run_cryptodev_asym_testsuite(RTE_STR(CRYPTODEV_NAME_OPENSSL_PMD));
+}
 
-	return unit_test_suite_runner(&cryptodev_qat_asym_testsuite);
+static int
+test_cryptodev_qat_asym(void)
+{
+	return run_cryptodev_asym_testsuite(RTE_STR(CRYPTODEV_NAME_QAT_ASYM_PMD));
 }
 
 static int
 test_cryptodev_octeontx_asym(void)
 {
-	gbl_driver_id = rte_cryptodev_driver_id_get(
-			RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD));
-	if (gbl_driver_id == -1) {
-		RTE_LOG(ERR, USER1, "OCTEONTX PMD must be loaded.\n");
-		return TEST_SKIPPED;
-	}
-	return unit_test_suite_runner(&cryptodev_octeontx_asym_testsuite);
+	return run_cryptodev_asym_testsuite(RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD));
 }
 
 static int
 test_cryptodev_cn9k_asym(void)
 {
-	gbl_driver_id = rte_cryptodev_driver_id_get(
-			RTE_STR(CRYPTODEV_NAME_CN9K_PMD));
-	if (gbl_driver_id == -1) {
-		RTE_LOG(ERR, USER1, "CN9K PMD must be loaded.\n");
-		return TEST_SKIPPED;
-	}
-
-	/* Use test suite registered for crypto_octeontx PMD */
-	return unit_test_suite_runner(&cryptodev_octeontx_asym_testsuite);
+	return run_cryptodev_asym_testsuite(RTE_STR(CRYPTODEV_NAME_CN9K_PMD));
 }
 
 static int
 test_cryptodev_cn10k_asym(void)
 {
-	gbl_driver_id = rte_cryptodev_driver_id_get(
-			RTE_STR(CRYPTODEV_NAME_CN10K_PMD));
-	if (gbl_driver_id == -1) {
-		RTE_LOG(ERR, USER1, "CN10K PMD must be loaded.\n");
-		return TEST_SKIPPED;
-	}
-
-	/* Use test suite registered for crypto_octeontx PMD */
-	return unit_test_suite_runner(&cryptodev_octeontx_asym_testsuite);
+	return run_cryptodev_asym_testsuite(RTE_STR(CRYPTODEV_NAME_CN10K_PMD));
 }
 
 static int
 test_cryptodev_virtio_asym(void)
 {
-	gbl_driver_id = rte_cryptodev_driver_id_get(
-			RTE_STR(CRYPTODEV_NAME_VIRTIO_PMD));
-	if (gbl_driver_id == -1) {
-		RTE_LOG(ERR, USER1, "virtio PMD must be loaded.\n");
-		return TEST_SKIPPED;
-	}
-
-	/* Use test suite registered for crypto_virtio PMD */
-	return unit_test_suite_runner(&cryptodev_virtio_asym_testsuite);
+	return run_cryptodev_asym_testsuite(RTE_STR(CRYPTODEV_NAME_VIRTIO_PMD));
 }
 
 static int
 test_cryptodev_virtio_user_asym(void)
 {
-	gbl_driver_id = rte_cryptodev_driver_id_get(
-			RTE_STR(CRYPTODEV_NAME_VIRTIO_USER_PMD));
-	if (gbl_driver_id == -1) {
-		RTE_LOG(ERR, USER1, "virtio user PMD must be loaded.\n");
-		return TEST_SKIPPED;
-	}
-
-	/* Use test suite registered for crypto_virtio_user PMD */
-	return unit_test_suite_runner(&cryptodev_virtio_asym_testsuite);
+	return run_cryptodev_asym_testsuite(RTE_STR(CRYPTODEV_NAME_VIRTIO_USER_PMD));
 }
 
 REGISTER_DRIVER_TEST(cryptodev_openssl_asym_autotest, test_cryptodev_openssl_asym);
-- 
2.48.1


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2025-12-18 14:09 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-12-18 14:09 [PATCH] test/crypto: remove PMD specific asym testsuites Rupesh Chiluka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).