From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5F4E7A0503; Wed, 18 May 2022 17:45:25 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 51CF540223; Wed, 18 May 2022 17:45:25 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 1787A40221 for ; Wed, 18 May 2022 17:45:23 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24IBrR6w010683; Wed, 18 May 2022 08:45:23 -0700 Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2174.outbound.protection.outlook.com [104.47.58.174]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3g50as0wgx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 18 May 2022 08:45:23 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Qy8l+n7K/l75f/32meth8syQjPM9a3yCLb9tFIc496Z34ZrIkgHP2kk0XG1YmWZPAYvk7v1CHhmPVbVt2CBLYq1TaJTZhkod1MD0OALOX83VN/SYYguwSPxfJzX1/xBWaJIvP6R7+tOULrayQChGCEkFf+Tl5HeygIvlYdvOBfKLmARRgv7+xsLbSsPYLorOZ2QFsal+Mf6eTcEsk/cW9g4FOKb84TnWC3adnweVyOXhhUggdPgQ57XrlBBx5upSZitrebOzSrY7U0LNZxQLqJhA6QCIyXVrDLHMt52IBYUw8KS2Gu9pGrlnrlWe+j+3lNcA6XTv7G6b7BZcf7SfEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=60wMAsjekw/i8tpWkTrVvvJczQ6e7bYPRE6Fc5njNUw=; b=UmYWGU/gEQJh4562DYYNm5zYX5SVbIkSE6RSFtNvYcoQ9+zDAlEAM1yrikTKwXbIsWexAE04yrCZp2kR8aVbHximusrj7fr8eVlP4thI8c4Al/trwROJPvlOovi+bszcZCLqWF4e83r6FN018pzpakzD2D0b1lO71HhicWXpdrBgyfGI0MbOKKyDHrdYi6BH2O24EKyg3IU0uapVVefkYKBwTqJrjQNoT+odtAXSTLXlEepBHlcMG6fGW4OAXjVP0C7RHi3QD+hn1hE8Of41U2UDFouFa6lwlkUuR4dOhzl7y6EA1jqVUwSWtbTKnnlM3krjZBQhO7ov+cYkcdXUOA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=60wMAsjekw/i8tpWkTrVvvJczQ6e7bYPRE6Fc5njNUw=; b=aUNJ5pstA/6QdQMJ7ou7QqfERq5PzN2p3psADk8nhUE8Cr4Bzx81WUQyTy7T4zNEFi/6xkOfJnvuZ2bgmDPPc1ZG7+FSlnBy3p4OSU418R17C1SJ2Y1RGLUGknJJ+hHGBq38LLDnDPivmjUy+RXfgn+uPyj6XlGoz7aQYDeFexs= Received: from CO1PR18MB4714.namprd18.prod.outlook.com (2603:10b6:303:e9::18) by SN6PR18MB3744.namprd18.prod.outlook.com (2603:10b6:805:55::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.18; Wed, 18 May 2022 15:45:20 +0000 Received: from CO1PR18MB4714.namprd18.prod.outlook.com ([fe80::f83c:2654:ed5:fd1f]) by CO1PR18MB4714.namprd18.prod.outlook.com ([fe80::f83c:2654:ed5:fd1f%6]) with mapi id 15.20.5273.014; Wed, 18 May 2022 15:45:20 +0000 From: Gowrishankar Muthukrishnan To: Brandon Lo , "roy.fan.zhang@intel.com" , "ciara.power@intel.com" CC: "dev@dpdk.org" , Akhil Goyal Subject: RE: [EXT] [PATCH v4 4/8] examples/fips_validation: allow json file as input Thread-Topic: [EXT] [PATCH v4 4/8] examples/fips_validation: allow json file as input Thread-Index: AQHYW+SAc7uUd7I0/kCaTUnV728KmK0k5Ldw Date: Wed, 18 May 2022 15:45:20 +0000 Message-ID: References: <20220129175514.746925-1-blo@iol.unh.edu> <20220429161559.415645-1-blo@iol.unh.edu> <20220429161559.415645-5-blo@iol.unh.edu> In-Reply-To: <20220429161559.415645-5-blo@iol.unh.edu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a2a03ed7-7e8d-436c-8483-08da38e569f0 x-ms-traffictypediagnostic: SN6PR18MB3744:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: fG/fwu/kZCApq2aKFlGibQB0m5/8Ljc6k7LeO13UdNEFa4aVT9/QPdAPhDYSx8yIk//4mXOLILLvndc2xBTzR5LPmoope42vUex5ZMMYPc1UuaZ1mguk5nNMj8NULqe9/Wsi1AT3zEWln0quaz5/DjIqm/xiTKBOWw9oUAhiMv7E3EJEai5RjU0Q2AfHAdrFFp1mAvXnkz9+j0Kj0TEoqwMlk4qe4qnUcWKoKCL/spvRPtCuEW07flztjiIyGu9YRUVB/xBBkchS2bOftEzSeAnXCYE5XafVt0aJoutWxZ2wTAuWt/O+QSS9JakLLU3wkHU5uoTk7EFT6QwcYZVGHf4otjPtJd/eh64M/MEu+MhUcsIeQ0fK8nc21cs3ZqNdmgdsZ77nvYVHWaTWd5iT5pf6kuua74Gl5MWO9jIwpS2IhzBZi75mjDo4kISqohaZC7/J3eNgA51VF3IFDdIpQ5+0ikpRjj7wFTLPBQoD/jH+50KOd3zV7TLJiKKCcGBO8fvdG6mBua8GybNMHK33jyBM4iAkNCMtVL7uOBPSRTs7N8VqPwQUoc2Woa3Q3v+bb2yIVc97vCncQlj8Vp986wOdUkjECww3OUlrhGMrCYS26C3746RfQnzGX2nA5i2/Q8v7si9Or0ixeeb0zejAURgQq/5zo8IkBYvgVS2xBL/8k1IinLq37JKpoB4xrhrV+Mha7KssRlN5AsqZNixDgg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CO1PR18MB4714.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(54906003)(66946007)(76116006)(86362001)(4326008)(66556008)(55016003)(110136005)(66446008)(2906002)(5660300002)(38100700002)(6506007)(53546011)(316002)(8936002)(9686003)(26005)(33656002)(186003)(7696005)(38070700005)(508600001)(52536014)(107886003)(8676002)(66476007)(64756008)(83380400001)(71200400001)(122000001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?j3flqaKnPfolTAECuZ5tAUsXjV3NRG3vNuHrBMmgfFcqLE2/FOvFO1m3IqOw?= =?us-ascii?Q?+Fg4Syril9hZi7PM9PTd1wFR9VM5ER9kFm5Xlew1rJxF0ZRZWJEX+d+FfnXZ?= =?us-ascii?Q?IgtiikoiFE6OtN+7P8muyjK6qBN/Pg5Wag+/ymHSuuNEotCMoF3eRGkyVqZJ?= =?us-ascii?Q?kGX0WO2OV/YbvE+MGsoq8nV0aNsDkVJDJOKKG0RljXAuTn5npjt1mS59mvaf?= =?us-ascii?Q?YhLVr3XPFn5Q/9LJV6OVNQiQcFIkG8R8aYKMBJngSTKEME3Fe4fX/eCDKmsf?= =?us-ascii?Q?O/kMpAPGEvuLzzEe0PgERpTL/dUfbBg8jCW0iagj8BF2pOmoJXKX7u2ZtEuY?= =?us-ascii?Q?siFXpDpXWclAcbyFm9owaXHguhSDDzMbHeYDaWy5+BbzG/zptsT9AQ31syBr?= =?us-ascii?Q?iTaty743U7fQn7RCW5+6ZJ1gmVtatU4TJjHev98UQEJUc8x/9YhCL+5U2p6k?= =?us-ascii?Q?ulWzvsI4e9DuzViKagxtfWz4pVXSZBAZXi6+Q6iqlQU/3ply3tCxfC7vp8t2?= =?us-ascii?Q?k8LqN6q+SKeJJ1Lzv7wp91ic4z9OChFajgdY2hxBrD01DMWKnycpDMTQPne9?= =?us-ascii?Q?tif1cSQXyM/yX2mt2Z6bEEA5TYc94eaQyJ70c16fHeuAgZHoXmP9Ocfi0jN6?= =?us-ascii?Q?0OFczlDPnC67C9Vwmt6EqoKDakcD15zQ0lSJ+L5uEr6YW/PMviK9sq3N2Lwi?= =?us-ascii?Q?noyADoNQmTsUCdDl5dMRtuYTR0RiLuq+yKEUTTFFK8QudS0a6qxT6IQvjKjV?= =?us-ascii?Q?+OeRCNiXwVsGTBtaZVMAFNUAh8b7ZmdhFGDXFVIPdiM9+cCwRb+LZnkHxZfZ?= =?us-ascii?Q?gtak51/+49b5l0UsybrCbKWTdGQQyqYV9Th06Bt6GwhLUS1J2soVjPGkIoTe?= =?us-ascii?Q?4KTeh1GqjGUpijpQHnN7Py9kfevcywcKh5aD297smnRoJVNXPVrRwUiMWCt2?= =?us-ascii?Q?zRsdqiz/MHKHqbtDRpTFwGN5N/daZm1igZukkfk0RiU/GRpEC1pGaD90j2XW?= =?us-ascii?Q?NOPpHz8klnwhleidMvGvUOYptjAEKodx+SKufXygh1HQ/NMEhRYDcjGttfNb?= =?us-ascii?Q?1n16LqeeDAlqDg7l6Z87v7qcPh8IVmz0sBLYiHQTFpRvOXwh3kr7OJxagY2b?= =?us-ascii?Q?okbGmZ99d1yLcgCFfquQWrj73i76oYQtoe9ncxpR4tO3QsGaG8AXTqA22gOC?= =?us-ascii?Q?U5h40u84YuOjldOk5QEfqHe6fr9Z938lVqu8MD0EUSRZ5dFIO8PdDo0BIKrK?= =?us-ascii?Q?m1ekqafTInwBOBUKQFihIIZ5q841iGkjr6f03jpJfzF/qKhR27+CvfumNlJA?= =?us-ascii?Q?etm6RqXTnqlHbps4j642dqR0cUnE9tbMFjqy3//LkY/4w5i0gwORH2fK8RqY?= =?us-ascii?Q?eKMdhxxsuPqxBfcKrI5pANCaYYN/pAhoCAXtA9gZAiRC8B18c2ySTDy+xlcj?= =?us-ascii?Q?lEaU2UqtVggzU6QbEo3j2GdiQVcaUoykU7zUykkWhUzV/FmKFN1Rnd7xf2RO?= =?us-ascii?Q?df0P4jK0dmCWOWIrjIkh7X9628FdKss5dr2zNxRKNf+fAK3e9JE7vKrd66mI?= =?us-ascii?Q?xWHzeu+hO7wGIj6N93jIquebjbP7iyhkZTfDdSkhRRBrlOsKT0VKMCoq7YNb?= =?us-ascii?Q?iaL+lZQiBdPbyHolTkEIsWmedFcsDYkzmkw8X1ZNfxKQUkklN0ViGkgmg02C?= =?us-ascii?Q?UCh+oPBxVqf9+SOcVhYAYZuNxquoCgKBYqzUBIg9GJ7GvseezZUe86dQ0L+2?= =?us-ascii?Q?2w0GxAwqHg=3D=3D?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR18MB4714.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a2a03ed7-7e8d-436c-8483-08da38e569f0 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 May 2022 15:45:20.1914 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: P3H/5OM+dKfhd9nbYQDcz2j4PIGgVuFFd0I3U7YV0ZfW+1HTRZcKjgXJd8ynJOn8VZKVcIDO46e2lo39RrdcLfrLU9/g2wU3rNJeq4Me+/g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR18MB3744 X-Proofpoint-ORIG-GUID: etxkQIihz_sSI6LnkpRtS_7B5wQOT3QS X-Proofpoint-GUID: etxkQIihz_sSI6LnkpRtS_7B5wQOT3QS X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.874,Hydra:6.0.486,FMLib:17.11.64.514 definitions=2022-05-18_06,2022-05-17_02,2022-02-23_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Verified the functionality changes and looks good to me. Acked-by: Gowrishankar Muthukrishnan Thanks. > -----Original Message----- > From: Brandon Lo > Sent: Friday, April 29, 2022 9:46 PM > To: roy.fan.zhang@intel.com; ciara.power@intel.com > Cc: dev@dpdk.org; Brandon Lo > Subject: [EXT] [PATCH v4 4/8] examples/fips_validation: allow json file a= s > input >=20 > External Email >=20 > ---------------------------------------------------------------------- > Added the ability to use the json format as the input and output of the > example application. >=20 > Signed-off-by: Brandon Lo > --- > v3: > * fix checkpatch warnings >=20 > v2: > * remove use_json variable >=20 > examples/fips_validation/main.c | 200 > +++++++++++++++++++++++++++++++- > 1 file changed, 196 insertions(+), 4 deletions(-) >=20 > diff --git a/examples/fips_validation/main.c > b/examples/fips_validation/main.c index e06ae37567..65f736f3cb 100644 > --- a/examples/fips_validation/main.c > +++ b/examples/fips_validation/main.c > @@ -34,11 +34,17 @@ enum { > OPT_CRYPTODEV_BK_ID_NUM, > #define OPT_CRYPTODEV_BK_DIR_KEY "broken-test-dir" > OPT_CRYPTODEV_BK_DIR_KEY_NUM, > +#define OPT_USE_JSON "use-json" > + OPT_USE_JSON_NUM, > }; >=20 > struct fips_test_vector vec; > struct fips_test_interim_info info; >=20 > +#ifdef RTE_HAS_JANSSON > +struct fips_test_json_info json_info; > +#endif /* RTE_HAS_JANSSON */ > + > struct cryptodev_fips_validate_env { > const char *req_path; > const char *rsp_path; > @@ -166,6 +172,11 @@ cryptodev_fips_validate_app_uninit(void) > static int > fips_test_one_file(void); >=20 > +#ifdef RTE_HAS_JANSSON > +static int > +fips_test_one_json_file(void); > +#endif /* RTE_HAS_JANSSON */ > + > static int > parse_cryptodev_arg(char *arg) > { > @@ -389,6 +400,7 @@ int > main(int argc, char *argv[]) > { > int ret; > + char use_json; >=20 > ret =3D rte_eal_init(argc, argv); > if (ret < 0) { > @@ -424,9 +436,17 @@ main(int argc, char *argv[]) > ret, env.req_path); > goto exit; > } > - > - > + use_json =3D info.file_type =3D=3D FIPS_TYPE_JSON; > + > +#ifdef RTE_HAS_JANSSON > + ret =3D info.file_type =3D=3D FIPS_TYPE_JSON ? > + fips_test_one_json_file() : fips_test_one_file(); > + if (use_json) > + json_decref(json_info.json_root); > +#else /* RTE_HAS_JANSSON */ > ret =3D fips_test_one_file(); > +#endif /* RTE_HAS_JANSSON */ > + > if (ret < 0) { > RTE_LOG(ERR, USER1, "Error %i: Failed test %s\n", > ret, env.req_path); > @@ -480,8 +500,19 @@ main(int argc, char *argv[]) > ret, req_path); > break; > } > + use_json =3D info.file_type =3D=3D FIPS_TYPE_JSON; >=20 > +#ifdef RTE_HAS_JANSSON > + if (use_json) { > + ret =3D fips_test_one_json_file(); > + json_decref(json_info.json_root); > + } else { > + ret =3D fips_test_one_file(); > + } > +#else /* RTE_HAS_JANSSON */ > ret =3D fips_test_one_file(); > +#endif /* RTE_HAS_JANSSON */ > + > if (ret < 0) { > RTE_LOG(ERR, USER1, "Error %i: Failed test > %s\n", > ret, req_path); > @@ -1219,7 +1250,8 @@ fips_generic_test(void) > struct fips_val val =3D {NULL, 0}; > int ret; >=20 > - fips_test_write_one_case(); > + if (info.file_type !=3D FIPS_TYPE_JSON) > + fips_test_write_one_case(); >=20 > ret =3D fips_run_test(); > if (ret < 0) { > @@ -1238,6 +1270,7 @@ fips_generic_test(void) > switch (info.file_type) { > case FIPS_TYPE_REQ: > case FIPS_TYPE_RSP: > + case FIPS_TYPE_JSON: > if (info.parse_writeback =3D=3D NULL) > return -EPERM; > ret =3D info.parse_writeback(&val); > @@ -1253,7 +1286,8 @@ fips_generic_test(void) > break; > } >=20 > - fprintf(info.fp_wr, "\n"); > + if (info.file_type !=3D FIPS_TYPE_JSON) > + fprintf(info.fp_wr, "\n"); > free(val.val); >=20 > return 0; > @@ -1844,3 +1878,161 @@ fips_test_one_file(void) >=20 > return ret; > } > + > +#ifdef RTE_HAS_JANSSON > +static int > +fips_test_json_init_writeback(void) > +{ > + json_t *session_info, *session_write; > + session_info =3D json_array_get(json_info.json_root, 0); > + session_write =3D json_object(); > + json_info.json_write_root =3D json_array(); > + > + json_object_set(session_write, "jwt", > + json_object_get(session_info, "jwt")); > + json_object_set(session_write, "url", > + json_object_get(session_info, "url")); > + json_object_set(session_write, "isSample", > + json_object_get(session_info, "isSample")); > + > + json_info.is_sample =3D json_boolean_value( > + json_object_get(session_info, "isSample")); > + > + json_array_append_new(json_info.json_write_root, > session_write); > + return 0; > +} > + > +static int > +fips_test_one_test_case(void) > +{ > + int ret; > + > + ret =3D fips_test_parse_one_json_case(); > + > + switch (ret) { > + case 0: > + ret =3D test_ops.test(); > + if (ret =3D=3D 0) > + break; > + RTE_LOG(ERR, USER1, "Error %i: test block\n", > + ret); > + break; > + case 1: > + break; > + default: > + RTE_LOG(ERR, USER1, "Error %i: Parse block\n", > + ret); > + } > + return 0; > +} > + > +static int > +fips_test_one_test_group(void) > +{ > + int ret; > + json_t *tests, *write_tests; > + size_t test_idx, tests_size; > + > + write_tests =3D json_array(); > + json_info.json_write_group =3D json_object(); > + json_object_set(json_info.json_write_group, "tgId", > + json_object_get(json_info.json_test_group, "tgId")); > + json_object_set_new(json_info.json_write_group, "tests", > write_tests); > + > + switch (info.algo) { > + case FIPS_TEST_ALGO_AES_GCM: > + ret =3D parse_test_gcm_init(); > + break; > + default: > + return -EINVAL; > + } > + if (ret < 0) > + return ret; > + > + ret =3D fips_test_parse_one_json_group(); > + if (ret < 0) > + return ret; > + > + ret =3D init_test_ops(); > + if (ret < 0) > + return ret; > + > + tests =3D json_object_get(json_info.json_test_group, "tests"); > + tests_size =3D json_array_size(tests); > + for (test_idx =3D 0; test_idx < tests_size; test_idx++) { > + json_info.json_test_case =3D json_array_get(tests, test_idx); > + fips_test_one_test_case(); > + json_array_append_new(write_tests, > json_info.json_write_case); > + } > + > + return 0; > +} > + > +static int > +fips_test_one_vector_set(void) > +{ > + int ret; > + json_t *test_groups, *write_groups, *write_version, *write_set; > + size_t group_idx, num_groups; > + > + test_groups =3D json_object_get(json_info.json_vector_set, > "testGroups"); > + num_groups =3D json_array_size(test_groups); > + > + json_info.json_write_set =3D json_array(); > + write_version =3D json_object(); > + json_object_set_new(write_version, "acvVersion", > json_string(ACVVERSION)); > + json_array_append_new(json_info.json_write_set, write_version); > + > + write_set =3D json_object(); > + json_array_append_new(json_info.json_write_set, write_set); > + write_groups =3D json_array(); > + > + json_object_set(write_set, "vsId", > + json_object_get(json_info.json_vector_set, "vsId")); > + json_object_set(write_set, "algorithm", > + json_object_get(json_info.json_vector_set, "algorithm")); > + json_object_set(write_set, "revision", > + json_object_get(json_info.json_vector_set, "revision")); > + json_object_set_new(write_set, "isSample", > + json_boolean(json_info.is_sample)); > + json_object_set_new(write_set, "testGroups", write_groups); > + > + ret =3D fips_test_parse_one_json_vector_set(); > + if (ret < 0) { > + RTE_LOG(ERR, USER1, "Error: Unsupported or invalid vector > set algorithm: %s\n", > + > json_string_value(json_object_get(json_info.json_vector_set, > "algorithm"))); > + return ret; > + } > + > + for (group_idx =3D 0; group_idx < num_groups; group_idx++) { > + json_info.json_test_group =3D json_array_get(test_groups, > group_idx); > + ret =3D fips_test_one_test_group(); > + json_array_append_new(write_groups, > json_info.json_write_group); > + } > + > + return 0; > +} > + > +static int > +fips_test_one_json_file(void) > +{ > + size_t vector_set_idx, root_size; > + > + root_size =3D json_array_size(json_info.json_root); > + fips_test_json_init_writeback(); > + > + for (vector_set_idx =3D 1; vector_set_idx < root_size; > vector_set_idx++) { > + /* Vector set index starts at 1, the 0th index contains test > session > + * information. > + */ > + json_info.json_vector_set =3D > json_array_get(json_info.json_root, vector_set_idx); > + fips_test_one_vector_set(); > + json_array_append_new(json_info.json_write_root, > json_info.json_write_set); > + } > + > + json_dumpf(json_info.json_write_root, info.fp_wr, > JSON_INDENT(4)); > + json_decref(json_info.json_write_root); > + > + return 0; > +} > +#endif /* RTE_HAS_JANSSON */ > -- > 2.25.1