[Accel-config] Re: [PATCH v1 07/11] accel-config: Improve management of test cases

Jiang, Dave <dave.jiang at intel.com>
Newsgroups dev.linux.lists.accel-config
Message-ID <[email protected]>

> -----Original Message-----
> From: ramesh.thomas(a)intel.com <ramesh.thomas(a)intel.com>
> Sent: Wednesday, December 2, 2020 12:31 PM
> To: accel-config(a)lists.01.org
> Cc: Thomas, Ramesh <ramesh.thomas(a)intel.com>; Luck, Tony
> <tony.luck(a)intel.com>; Jiang, Dave <dave.jiang(a)intel.com>
> Subject: [PATCH v1 07/11] accel-config: Improve management of test cases
> 
> From: Ramesh Thomas <ramesh.thomas(a)intel.com>

Reviewed-by: Dave Jiang <dave.jiang(a)intel.com>

> 
> Created structure to store test func and description. Array of this
> structure will be used to print test case description and results.
> This removes the need to name tests with serial numbers. Invidual
> tests can be enabled/disabled by setting a flag.
> 
> Signed-off-by: Ramesh Thomas <ramesh.thomas(a)intel.com>
> ---
>  test/libaccfg.c | 66 ++++++++++++++++++++++++++++++-------------------
>  1 file changed, 40 insertions(+), 26 deletions(-)
> 
> diff --git a/test/libaccfg.c b/test/libaccfg.c
> index aef877a..2494a44 100644
> --- a/test/libaccfg.c
> +++ b/test/libaccfg.c
> @@ -766,7 +766,7 @@ static int wq_bounds_test(struct accfg_ctx *ctx, const
> char *dev_name)
>  }
> 
>  /* test the set and get libaccfg functions for all components in dsa0 */
> -static int do_test0(struct accfg_ctx *ctx)
> +static int test_config(struct accfg_ctx *ctx)
>  {
>  	int rc = 0;
> 
> @@ -781,22 +781,18 @@ static int do_test0(struct accfg_ctx *ctx)
> 
>  	/* get configuration to see if match */
>  	rc = check_config(ctx, "dsa0");
> -	if (rc != 0) {
> -		fprintf(stderr, "test 0: test the set and get libaccfg functions
> for components failed\n");
> +	if (rc != 0)
>  		return rc;
> -	}
> 
>  	rc = device_test_reset(ctx, "dsa0");
>  	if (rc != 0)
>  		return rc;
> 
> -	fprintf(stderr, "test 0: test the set and get libaccfg functions for
> components passed successfully\n");
> -
>  	return 0;
>  }
> 
>  /* set large wq to exceed max total size in dsa */
> -static int do_test1(struct accfg_ctx *ctx)
> +static int test_max_wq_size(struct accfg_ctx *ctx)
>  {
>  	int rc = 0;
> 
> @@ -805,21 +801,18 @@ static int do_test1(struct accfg_ctx *ctx)
>  		return rc;
> 
>  	rc = set_exceed_config(ctx, "dsa1");
> -	if (rc != 0) {
> -		fprintf(stderr, "test 1: set large wq to exceed max total size in
> dsa failed\n");
> +	if (rc != 0)
>  		return rc;
> -	}
> 
>  	rc = device_test_reset(ctx, "dsa1");
>  	if (rc != 0)
>  		return rc;
> 
> -	fprintf(stderr, "test 1: set large wq to exceed max total size in dsa
> passed successfully\n");
> -		return 0;
> +	return 0;
>  }
> 
>  /* test the boundary conditions for wq max_batch_size and
> max_transfer_size */
> -static int do_test2(struct accfg_ctx *ctx)
> +static int test_wq_boundary_conditions(struct accfg_ctx *ctx)
>  {
>  	int rc = 0;
> 
> @@ -828,24 +821,39 @@ static int do_test2(struct accfg_ctx *ctx)
>  		return rc;
> 
>  	rc = wq_bounds_test(ctx, "dsa0");
> -	if (rc != 0) {
> -		fprintf(stderr, "test 2: wq boundary conditions test
> failed\n");
> +	if (rc != 0)
>  		return rc;
> -	}
> 
>  	rc = device_test_reset(ctx, "dsa0");
>  	if (rc != 0)
>  		return rc;
> 
> -	fprintf(stderr, "test 2: wq boundary conditions test passed
> successfully\n");
> -		return 0;
> +	return 0;
>  }
> 
>  typedef int (*do_test_fn)(struct accfg_ctx *ctx);
> -static do_test_fn do_test[] = {
> -	do_test0,
> -	do_test1,
> -	do_test2,
> +struct _test_case {
> +	do_test_fn test_fn;
> +	char *desc;
> +	bool enabled;
> +};
> +
> +static struct _test_case test_cases[] = {
> +	{
> +		.test_fn = test_config,
> +		.desc = "set and get configurations",
> +		.enabled = true,
> +	},
> +	{
> +		.test_fn = test_max_wq_size,
> +		.desc = "max wq size",
> +		.enabled = true,
> +	},
> +	{
> +		.test_fn = test_wq_boundary_conditions,
> +		.desc = "wq boundary conditions",
> +		.enabled = true,
> +	},
>  };
> 
>  static int idxd_kmod_init(struct kmod_ctx **ctx, struct kmod_module
> **mod,
> @@ -914,15 +922,21 @@ int test_libaccfg(int loglevel, struct accfg_test *test,
>  		}
>  	}
> 
> -	for (i = 0; i < ARRAY_SIZE(do_test); i++) {
> -		err = do_test[i](ctx);
> +	for (i = 0; i < ARRAY_SIZE(test_cases); i++) {
> +		if (!test_cases[i].enabled) {
> +			fprintf(stderr, "\naccfg-test%d *disabled*\n", i);
> +			continue;
> +		}
> +		printf("\nRunning accfg-test%d: %s\n", i, test_cases[i].desc);
> +		err = test_cases[i].test_fn(ctx);
>  		if (err < 0) {
> -			fprintf(stderr, "accfg-test%d failed: %d\n", i, err);
> +			fprintf(stderr, "accfg-test%d *failed*: %d\n", i, err);
>  			break;
>  		}
> +		printf("accfg-test%d passed!\n", i);
>  	}
> 
> -	if (i >= ARRAY_SIZE(do_test))
> +	if (i >= ARRAY_SIZE(test_cases))
>  		result = EXIT_SUCCESS;
> 
>  	kmod_module_remove_module(mod, 0);
> --
> 2.26.2
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.