DPDK patches and discussions
 help / color / mirror / Atom feed
From: Aaron Conole <aconole@redhat.com>
To: Ciara Power <ciara.power@intel.com>
Cc: dev@dpdk.org,  declan.doherty@intel.com,
	 Fiona Trahe <fiona.trahe@intel.com>,
	 Ashish Gupta <ashish.gupta@marvell.com>,
	 Thomas Monjalon <thomas@monjalon.net>,
	 Ferruh Yigit <ferruh.yigit@intel.com>,
	Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,
	 Abhinandan Gujjar <abhinandan.gujjar@intel.com>,
	 Jay Jayatheerthan <jay.jayatheerthan@intel.com>,
	 Erik Gabriel Carrillo <erik.g.carrillo@intel.com>,
	 Jerin Jacob <jerinj@marvell.com>,
	 Anatoly Burakov <anatoly.burakov@intel.com>,
	 Vladimir Medvedkin <vladimir.medvedkin@intel.com>,
	 Kiran Kumar K <kirankumark@marvell.com>,
	Nithin Dabilpuram <ndabilpuram@marvell.com>,
	 Konstantin Ananyev <konstantin.ananyev@intel.com>,
	 Bernard Iremonger <bernard.iremonger@intel.com>,
	 Reshma Pattan <reshma.pattan@intel.com>,
	Chas Williams <chas3@att.com>,
	 "Min Hu \(Connor\)" <humin29@huawei.com>,
	Bruce Richardson <bruce.richardson@intel.com>,
	 Akhil Goyal <gakhil@marvell.com>,
	 Harry van Haaren <harry.van.haaren@intel.com>,
	Sunil Kumar Kori <skori@marvell.com>
Subject: Re: [dpdk-dev] [PATCH 2/6] test: introduce parent testsuite format
Date: Wed, 31 Mar 2021 10:42:32 -0400	[thread overview]
Message-ID: <f7tk0pnv0yv.fsf@dhcp-25.97.bos.redhat.com> (raw)
In-Reply-To: <20210316143253.3849182-3-ciara.power@intel.com> (Ciara Power's message of "Tue, 16 Mar 2021 14:32:49 +0000")

Ciara Power <ciara.power@intel.com> writes:

> The current structure for unit testing only allows for running a
> test suite with nested test cases. This means all test cases for an
> autotest must be in one suite, which is not ideal.
> For example, in some cases we may want to run multiple lists of test
> cases that each require different setup, so should be in separate suites.
>
> The unit test suite struct is modified to hold either a pointer to a
> list of test cases, or a pointer to a list of sub-testsuites.
> A bool value is also introduced here to indicate whether the testsuite
> is a parent suite or not.
>
> Signed-off-by: Ciara Power <ciara.power@intel.com>
> ---
>  app/test/test.c                      | 151 ++++++++++++++++++---------
>  app/test/test.h                      |   6 +-
>  app/test/test_bitratestats.c         |   4 +-
>  app/test/test_compressdev.c          |   4 +-
>  app/test/test_cryptodev.c            |  24 ++---
>  app/test/test_cryptodev_asym.c       |  12 +--
>  app/test/test_ethdev_link.c          |   4 +-
>  app/test/test_event_crypto_adapter.c |   4 +-
>  app/test/test_event_eth_rx_adapter.c |   8 +-
>  app/test/test_event_eth_tx_adapter.c |   4 +-
>  app/test/test_event_timer_adapter.c  |   4 +-
>  app/test/test_eventdev.c             |   4 +-
>  app/test/test_fbarray.c              |   4 +-
>  app/test/test_fib.c                  |   8 +-
>  app/test/test_fib6.c                 |   8 +-
>  app/test/test_graph.c                |   4 +-
>  app/test/test_graph_perf.c           |   4 +-
>  app/test/test_ipfrag.c               |   4 +-
>  app/test/test_ipsec.c                |   4 +-
>  app/test/test_ipsec_sad.c            |   4 +-
>  app/test/test_latencystats.c         |   4 +-
>  app/test/test_link_bonding.c         |   4 +-
>  app/test/test_link_bonding_mode4.c   |   4 +-
>  app/test/test_link_bonding_rssconf.c |   4 +-
>  app/test/test_metrics.c              |   4 +-
>  app/test/test_pmd_ring.c             |   4 +-
>  app/test/test_reorder.c              |   4 +-
>  app/test/test_rib.c                  |   8 +-
>  app/test/test_rib6.c                 |   8 +-
>  app/test/test_security.c             |   4 +-
>  app/test/test_service_cores.c        |   4 +-
>  app/test/test_trace.c                |   4 +-
>  32 files changed, 188 insertions(+), 137 deletions(-)
>
> diff --git a/app/test/test.c b/app/test/test.c
> index 72768c8854..fe40a91f97 100644
> --- a/app/test/test.c
> +++ b/app/test/test.c
> @@ -213,24 +213,37 @@ unit_test_suite_count_tcs_on_setup_fail(struct unit_test_suite *suite,
>  		unsigned int *failed)
>  {
>  	struct unit_test_case tc;
> -
> -	tc = suite->unit_test_cases[*total];
> -	while (tc.testcase) {
> -		if (!tc.enabled || test_success == TEST_SKIPPED)
> -			(*skipped)++;
> -		else
> -			(*failed)++;
> -		(*total)++;
> -		tc = suite->unit_test_cases[*total];
> +	int i, tc_count = 0;
> +
> +	if (suite->parent_testsuite) {
> +		for (i = 0; suite->unit_test_suites[i].suite_name != NULL; i++)
> +			unit_test_suite_count_tcs_on_setup_fail(
> +				&suite->unit_test_suites[i],
> +				test_success, total,
> +				skipped, failed);
> +	} else {
> +		tc = suite->unit_test_cases[tc_count];
> +		while (tc.testcase) {
> +			if (!tc.enabled ||
> +			test_success == TEST_SKIPPED)
> +				(*skipped)++;
> +			else
> +				(*failed)++;
> +			tc_count++;
> +			tc = suite->unit_test_cases[tc_count];
> +		}
> +		*total += tc_count;
>  	}
>  }
>  
>  int
>  unit_test_suite_runner(struct unit_test_suite *suite)
>  {
> -	int test_success;
> +	int test_success, i, ret;
>  	unsigned int total = 0, executed = 0, skipped = 0;
>  	unsigned int succeeded = 0, failed = 0, unsupported = 0;
> +	unsigned int sub_ts_succeeded = 0, sub_ts_failed = 0;
> +	unsigned int sub_ts_skipped = 0, sub_ts_total = 0;
>  	const char *status;
>  	struct unit_test_case tc;
>  
> @@ -255,63 +268,80 @@ unit_test_suite_runner(struct unit_test_suite *suite)
>  
>  	printf(" + ------------------------------------------------------- +\n");
>  
> -	tc = suite->unit_test_cases[total];
> -	while (tc.testcase) {
> -		if (!tc.enabled) {
> -			skipped++;
> -			total++;
> -			tc = suite->unit_test_cases[total];
> -			continue;
> -		} else {
> -			executed++;
> +	if (suite->parent_testsuite) {
> +		for (i = 0; suite->unit_test_suites[i].suite_name != NULL; i++) {
> +			ret = unit_test_suite_runner(&suite->unit_test_suites[i]);
> +			if (ret == TEST_SUCCESS)
> +				sub_ts_succeeded++;
> +			else if (ret == TEST_SKIPPED)
> +				sub_ts_skipped++;
> +			else
> +				sub_ts_failed++;
> +			sub_ts_total++;

I suggest adding these counts to the test suite object itself - that way
we can track them separately.  And we can clear them when we jump into
the unit_test_suite_runner() so that we get fresh counts each time and
don't need to track this information in different ways.

ie:

   void run_test(suite, tc) {
       if (!tc.enabled) {
          suite->skipped++;
       }

       suite->executed++;
       if tc.setup
          res = tc.setup
       else
          res = success

       if res != success
          suite->failed++
          return

       res = tc.testcase()
       switch res {
          case success:
             suite->success++
             break
          case fail:
             suite->fail++
             break
          case skipped:
             suite->skipped++
             break;
          case unsupported:
             suite->unsupported++;
             break;
       }
       if tc.teardown
          tc.teardown()
   }

   ...
   void run_tests_in_suite(suite) {
      struct unit_test_case tc;
      size_t total;

      FOR_EACH_SUITE_TESTCASE(total, suite, tc)
         run_test(suite, tc);
   }
   ...

   FOR_EACH_SUITE_TESTSUITE(total, suite, tsuite) {
       run_tests_in_suite(suite);
   }

   FOR_EACH_SUITE_TESTSUITE(total, suite, tsuite) {
       total_failed += tsuite->failed;
       total_executed += tsuite->executed;
       total_skipped += tsuite->skipped;
       ...
   }

etc..

Does it make sense?

>  		}
> +	} else {
> +		tc = suite->unit_test_cases[total];
> +		while (tc.testcase) {
> +			if (!tc.enabled) {
> +				skipped++;
> +				total++;
> +				tc = suite->unit_test_cases[total];
> +				continue;
> +			} else {
> +				executed++;
> +			}
> +
> +			/* run test case setup */
> +			if (tc.setup)
> +				test_success = tc.setup();
> +			else
> +				test_success = TEST_SUCCESS;
> +
> +			if (test_success == TEST_SUCCESS) {
> +				/* run the test case */
> +				test_success = tc.testcase();
> +				if (test_success == TEST_SUCCESS)
> +					succeeded++;
> +				else if (test_success == TEST_SKIPPED)
> +					skipped++;
> +				else if (test_success == -ENOTSUP)
> +					unsupported++;
> +				else
> +					failed++;
> +			} else if (test_success == -ENOTSUP) {
> +				unsupported++;
> +			} else {
> +				failed++;
> +			}
>  
> -		/* run test case setup */
> -		if (tc.setup)
> -			test_success = tc.setup();
> -		else
> -			test_success = TEST_SUCCESS;
> +			/* run the test case teardown */
> +			if (tc.teardown)
> +				tc.teardown();
>  
> -		if (test_success == TEST_SUCCESS) {
> -			/* run the test case */
> -			test_success = tc.testcase();
>  			if (test_success == TEST_SUCCESS)
> -				succeeded++;
> +				status = "succeeded";
>  			else if (test_success == TEST_SKIPPED)
> -				skipped++;
> +				status = "skipped";
>  			else if (test_success == -ENOTSUP)
> -				unsupported++;
> +				status = "unsupported";
>  			else
> -				failed++;
> -		} else if (test_success == -ENOTSUP) {
> -			unsupported++;
> -		} else {
> -			failed++;
> -		}
> -
> -		/* run the test case teardown */
> -		if (tc.teardown)
> -			tc.teardown();

This got dropped and never re-added anywhere afaict.

> -
> -		if (test_success == TEST_SUCCESS)
> -			status = "succeeded";
> -		else if (test_success == TEST_SKIPPED)
> -			status = "skipped";
> -		else if (test_success == -ENOTSUP)
> -			status = "unsupported";
> -		else
> -			status = "failed";
> +				status = "failed";
>  
> -		printf(" + TestCase [%2d] : %s %s\n", total, tc.name, status);
> +			printf(" + TestCase [%2d] : %s %s\n", total,
> +					tc.name, status);
>  
> -		total++;
> -		tc = suite->unit_test_cases[total];
> +			total++;
> +			tc = suite->unit_test_cases[total];
> +		}
>  	}
>  
>  	/* Run test suite teardown */
>  	if (suite->teardown)
>  		suite->teardown();
>  
> +	if (suite->parent_testsuite)
> +		goto parent_suite_summary;
> +
>  	goto suite_summary;
>  
>  suite_summary:
> @@ -332,4 +362,21 @@ unit_test_suite_runner(struct unit_test_suite *suite)
>  	if (total == skipped)
>  		return TEST_SKIPPED;
>  	return TEST_SUCCESS;
> +
> +parent_suite_summary:
> +	printf(" + ------------------------------------------------------- +\n");
> +	printf(" + Parent Test Suite Summary :  %s\n", suite->suite_name);
> +	printf(" + Sub Testsuites Total :       %2d\n", sub_ts_total);
> +	printf(" + Sub Testsuites Skipped :     %2d\n", sub_ts_skipped);
> +	printf(" + Sub Testsuites Passed :      %2d\n", sub_ts_succeeded);
> +	printf(" + Sub Testsuites Failed :      %2d\n", sub_ts_failed);
> +	printf(" + ------------------------------------------------------- +\n");
> +
> +	last_test_result = failed;
> +
> +	if (sub_ts_failed)
> +		return TEST_FAILED;
> +	if (sub_ts_total == sub_ts_skipped)
> +		return TEST_SKIPPED;
> +	return TEST_SUCCESS;
>  }
> diff --git a/app/test/test.h b/app/test/test.h
> index b07f6c1ef0..3fdac56631 100644
> --- a/app/test/test.h
> +++ b/app/test/test.h
> @@ -138,7 +138,11 @@ struct unit_test_suite {
>  	const char *suite_name;
>  	int (*setup)(void);
>  	void (*teardown)(void);
> -	struct unit_test_case unit_test_cases[];
> +	bool parent_testsuite;
> +	union {
> +		struct unit_test_case *unit_test_cases;
> +		struct unit_test_suite *unit_test_suites;
> +	};

I don't see the advantage to this.  Why not just have the structs as
flat members, and use the NULL of unit_test_suites as your boolean.
It saves on refactor of all the test suites, since those members should
be 0 initialized anyway.  In fact, you are relying on that behavior
(since you don't explicitly set parent_testsuite to 'false') so might as
well make your life easier by not having to touch all the test suite
files.

ie: instead of

  if (suite->parent_testsuite)
     FOR_EACH_SUITE_TESTSUITE
  else
     FOR_EACH_SUITE_TESTCASE

you could just do:

  struct unit_test_case tc;
  struct unit_test_suite ts;
  size_t total;

  if (suite->unit_test_suite && suite->unit_test_case)
     /* is this prohibited? */

  FOR_EACH_SUITE_TESTCASE(total, suite, tc);
      ...
  FOR_EACH_SUITE_TESTSUITE(total, suite, ts)
      ...

This also makes reading the code a bit nicer.

>  };
>  
>  int unit_test_suite_runner(struct unit_test_suite *suite);
> diff --git a/app/test/test_bitratestats.c b/app/test/test_bitratestats.c
> index f4a92c9be6..a3fe5e839a 100644
> --- a/app/test/test_bitratestats.c
> +++ b/app/test/test_bitratestats.c
> @@ -189,7 +189,7 @@ unit_test_suite bitratestats_testsuite  = {
>  	.suite_name = "BitRate Stats Unit Test Suite",
>  	.setup = test_bit_ring_setup,
>  	.teardown = test_bit_ring_free,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		/* TEST CASE 1: Test to create bit rate data */
>  		TEST_CASE(test_stats_bitrate_create),
>  
> @@ -231,7 +231,7 @@ unit_test_suite bitratestats_testsuite  = {
>  		/* TEST CASE 9: Test to do the cleanup w.r.t create */
>  		TEST_CASE(test_stats_bitrate_free),
>  		TEST_CASES_END()
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_compressdev.c b/app/test/test_compressdev.c
> index 0571c17ecb..7789511bd0 100644
> --- a/app/test/test_compressdev.c
> +++ b/app/test/test_compressdev.c
> @@ -4183,7 +4183,7 @@ static struct unit_test_suite compressdev_testsuite  = {
>  	.suite_name = "compressdev unit test suite",
>  	.setup = testsuite_setup,
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_ST(NULL, NULL,
>  			test_compressdev_invalid_configuration),
>  		TEST_CASE_ST(generic_ut_setup, generic_ut_teardown,
> @@ -4261,7 +4261,7 @@ static struct unit_test_suite compressdev_testsuite  = {
>  		      test_compressdev_deflate_im_buffers_SGL_over_2ops_second),
>  
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
> index f91debc168..bdfb2727dd 100644
> --- a/app/test/test_cryptodev.c
> +++ b/app/test/test_cryptodev.c
> @@ -13247,7 +13247,7 @@ static struct unit_test_suite cryptodev_scheduler_testsuite  = {
>  	.suite_name = "Crypto Device Scheduler Unit Test Suite",
>  	.setup = testsuite_setup,
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		/* Multi Core */
>  		TEST_CASE_ST(NULL, NULL, test_scheduler_attach_slave_op),
>  		TEST_CASE_ST(NULL, NULL, test_scheduler_mode_multicore_op),
> @@ -13281,7 +13281,7 @@ static struct unit_test_suite cryptodev_scheduler_testsuite  = {
>  		TEST_CASE_ST(NULL, NULL, test_scheduler_detach_slave_op),
>  
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  #endif /* RTE_CRYPTO_SCHEDULER */
> @@ -13290,7 +13290,7 @@ static struct unit_test_suite cryptodev_testsuite  = {
>  	.suite_name = "Crypto Unit Test Suite",
>  	.setup = testsuite_setup,
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_ST(ut_setup, ut_teardown,
>  				test_device_configure_invalid_dev_id),
>  		TEST_CASE_ST(ut_setup, ut_teardown,
> @@ -13921,25 +13921,25 @@ static struct unit_test_suite cryptodev_testsuite  = {
>  		TEST_CASE_ST(ut_setup, ut_teardown, test_enq_callback_setup),
>  		TEST_CASE_ST(ut_setup, ut_teardown, test_deq_callback_setup),
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static struct unit_test_suite cryptodev_virtio_testsuite = {
>  	.suite_name = "Crypto VIRTIO Unit Test Suite",
>  	.setup = testsuite_setup,
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_ST(ut_setup, ut_teardown, test_AES_cipheronly_all),
>  
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static struct unit_test_suite cryptodev_caam_jr_testsuite  = {
>  	.suite_name = "Crypto CAAM JR Unit Test Suite",
>  	.setup = testsuite_setup,
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_ST(ut_setup, ut_teardown,
>  			     test_device_configure_invalid_dev_id),
>  		TEST_CASE_ST(ut_setup, ut_teardown,
> @@ -13952,14 +13952,14 @@ static struct unit_test_suite cryptodev_caam_jr_testsuite  = {
>  		TEST_CASE_ST(ut_setup, ut_teardown, test_authonly_all),
>  
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static struct unit_test_suite cryptodev_mrvl_testsuite  = {
>  	.suite_name = "Crypto Device Marvell Component Test Suite",
>  	.setup = testsuite_setup,
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_ST(ut_setup, ut_teardown, test_multi_session),
>  		TEST_CASE_ST(ut_setup, ut_teardown,
>  				test_multi_session_random_usage),
> @@ -13980,14 +13980,14 @@ static struct unit_test_suite cryptodev_mrvl_testsuite  = {
>  			auth_decryption_AES128CBC_HMAC_SHA1_fail_tag_corrupt),
>  
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static struct unit_test_suite cryptodev_ccp_testsuite  = {
>  	.suite_name = "Crypto Device CCP Unit Test Suite",
>  	.setup = testsuite_setup,
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_ST(ut_setup, ut_teardown, test_multi_session),
>  		TEST_CASE_ST(ut_setup, ut_teardown,
>  				test_multi_session_random_usage),
> @@ -14008,7 +14008,7 @@ static struct unit_test_suite cryptodev_ccp_testsuite  = {
>  			auth_decryption_AES128CBC_HMAC_SHA1_fail_tag_corrupt),
>  
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c
> index 85cd076059..4a2c0a310f 100644
> --- a/app/test/test_cryptodev_asym.c
> +++ b/app/test/test_cryptodev_asym.c
> @@ -2288,7 +2288,7 @@ static struct unit_test_suite cryptodev_openssl_asym_testsuite  = {
>  	.suite_name = "Crypto Device OPENSSL ASYM Unit Test Suite",
>  	.setup = testsuite_setup,
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_ST(ut_setup, ut_teardown, test_capability),
>  		TEST_CASE_ST(ut_setup, ut_teardown, test_dsa),
>  		TEST_CASE_ST(ut_setup, ut_teardown, test_dh_keygenration),
> @@ -2300,24 +2300,24 @@ static struct unit_test_suite cryptodev_openssl_asym_testsuite  = {
>  		TEST_CASE_ST(ut_setup, ut_teardown, test_mod_exp),
>  		TEST_CASE_ST(ut_setup, ut_teardown, test_one_by_one),
>  		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 = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_ST(ut_setup, ut_teardown, test_one_by_one),
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static struct unit_test_suite cryptodev_octeontx_asym_testsuite  = {
>  	.suite_name = "Crypto Device OCTEONTX ASYM Unit Test Suite",
>  	.setup = testsuite_setup,
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_ST(ut_setup, ut_teardown, test_capability),
>  		TEST_CASE_ST(ut_setup, ut_teardown, test_rsa_enc_dec_crt),
>  		TEST_CASE_ST(ut_setup, ut_teardown, test_rsa_sign_verify_crt),
> @@ -2326,7 +2326,7 @@ static struct unit_test_suite cryptodev_octeontx_asym_testsuite  = {
>  			     test_ecdsa_sign_verify_all_curve),
>  		TEST_CASE_ST(ut_setup, ut_teardown, test_ecpm_all_curve),
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_ethdev_link.c b/app/test/test_ethdev_link.c
> index ee11987bae..1f3ac34b5f 100644
> --- a/app/test/test_ethdev_link.c
> +++ b/app/test/test_ethdev_link.c
> @@ -148,13 +148,13 @@ static struct unit_test_suite link_status_testsuite = {
>  	.suite_name = "link status formatting",
>  	.setup = NULL,
>  	.teardown = NULL,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE(test_link_status_up_default),
>  		TEST_CASE(test_link_status_down_default),
>  		TEST_CASE(test_link_speed_all_values),
>  		TEST_CASE(test_link_status_invalid),
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_event_crypto_adapter.c b/app/test/test_event_crypto_adapter.c
> index 335211cd8c..722e2f1b7c 100644
> --- a/app/test/test_event_crypto_adapter.c
> +++ b/app/test/test_event_crypto_adapter.c
> @@ -959,7 +959,7 @@ static struct unit_test_suite functional_testsuite = {
>  	.suite_name = "Event crypto adapter test suite",
>  	.setup = testsuite_setup,
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  
>  		TEST_CASE_ST(NULL, test_crypto_adapter_free,
>  				test_crypto_adapter_create),
> @@ -989,7 +989,7 @@ static struct unit_test_suite functional_testsuite = {
>  				test_sessionless_with_op_new_mode),
>  
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_event_eth_rx_adapter.c b/app/test/test_event_eth_rx_adapter.c
> index 9198767b41..735d5766d6 100644
> --- a/app/test/test_event_eth_rx_adapter.c
> +++ b/app/test/test_event_eth_rx_adapter.c
> @@ -754,7 +754,7 @@ static struct unit_test_suite event_eth_rx_tests = {
>  	.suite_name = "rx event eth adapter test suite",
>  	.setup = testsuite_setup,
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_ST(NULL, NULL, adapter_create_free),
>  		TEST_CASE_ST(adapter_create, adapter_free,
>  					adapter_queue_add_del),
> @@ -763,18 +763,18 @@ static struct unit_test_suite event_eth_rx_tests = {
>  		TEST_CASE_ST(adapter_create, adapter_free, adapter_start_stop),
>  		TEST_CASE_ST(adapter_create, adapter_free, adapter_stats),
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static struct unit_test_suite event_eth_rx_intr_tests = {
>  	.suite_name = "rx event eth adapter test suite",
>  	.setup = testsuite_setup_rx_intr,
>  	.teardown = testsuite_teardown_rx_intr,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_ST(adapter_create, adapter_free,
>  			adapter_intr_queue_add_del),
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_event_eth_tx_adapter.c b/app/test/test_event_eth_tx_adapter.c
> index 7073030902..bf67afcc69 100644
> --- a/app/test/test_event_eth_tx_adapter.c
> +++ b/app/test/test_event_eth_tx_adapter.c
> @@ -680,7 +680,7 @@ static struct unit_test_suite event_eth_tx_tests = {
>  	.setup = testsuite_setup,
>  	.teardown = testsuite_teardown,
>  	.suite_name = "tx event eth adapter test suite",
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_ST(NULL, NULL, tx_adapter_create_free),
>  		TEST_CASE_ST(tx_adapter_create, tx_adapter_free,
>  					tx_adapter_queue_add_del),
> @@ -690,7 +690,7 @@ static struct unit_test_suite event_eth_tx_tests = {
>  					tx_adapter_service),
>  		TEST_CASE_ST(NULL, NULL, tx_adapter_dynamic_device),
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_event_timer_adapter.c b/app/test/test_event_timer_adapter.c
> index ad3f4dcc20..08c3035c7c 100644
> --- a/app/test/test_event_timer_adapter.c
> +++ b/app/test/test_event_timer_adapter.c
> @@ -1779,7 +1779,7 @@ static struct unit_test_suite event_timer_adptr_functional_testsuite  = {
>  	.suite_name = "event timer functional test suite",
>  	.setup = testsuite_setup,
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_ST(timdev_setup_usec, timdev_teardown,
>  				test_timer_state),
>  		TEST_CASE_ST(timdev_setup_usec, timdev_teardown,
> @@ -1832,7 +1832,7 @@ static struct unit_test_suite event_timer_adptr_functional_testsuite  = {
>  				adapter_tick_resolution),
>  		TEST_CASE(adapter_create_max),
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_eventdev.c b/app/test/test_eventdev.c
> index 27ca5a6494..b4b55117b4 100644
> --- a/app/test/test_eventdev.c
> +++ b/app/test/test_eventdev.c
> @@ -934,7 +934,7 @@ static struct unit_test_suite eventdev_common_testsuite  = {
>  	.suite_name = "eventdev common code unit test suite",
>  	.setup = testsuite_setup,
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_ST(NULL, NULL,
>  			test_eventdev_count),
>  		TEST_CASE_ST(NULL, NULL,
> @@ -984,7 +984,7 @@ static struct unit_test_suite eventdev_common_testsuite  = {
>  		TEST_CASE_ST(eventdev_setup_device, NULL,
>  			test_eventdev_close),
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_fbarray.c b/app/test/test_fbarray.c
> index a691bf4458..ff6896d1bc 100644
> --- a/app/test/test_fbarray.c
> +++ b/app/test/test_fbarray.c
> @@ -714,7 +714,7 @@ static struct unit_test_suite fbarray_test_suite = {
>  	.suite_name = "fbarray autotest",
>  	.setup = autotest_setup,
>  	.teardown = autotest_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE(test_invalid),
>  		TEST_CASE(test_basic),
>  		TEST_CASE_ST(first_msk_test_setup, reset_array, test_find),
> @@ -724,7 +724,7 @@ static struct unit_test_suite fbarray_test_suite = {
>  		TEST_CASE_ST(full_msk_test_setup, reset_array, test_find),
>  		TEST_CASE_ST(empty_msk_test_setup, reset_array, test_empty),
>  		TEST_CASES_END()
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_fib.c b/app/test/test_fib.c
> index e46b9934fe..fc574bdf0b 100644
> --- a/app/test/test_fib.c
> +++ b/app/test/test_fib.c
> @@ -375,24 +375,24 @@ static struct unit_test_suite fib_fast_tests = {
>  	.suite_name = "fib autotest",
>  	.setup = NULL,
>  	.teardown = NULL,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  	TEST_CASE(test_create_invalid),
>  	TEST_CASE(test_free_null),
>  	TEST_CASE(test_add_del_invalid),
>  	TEST_CASE(test_get_invalid),
>  	TEST_CASE(test_lookup),
>  	TEST_CASES_END()
> -	}
> +	})
>  };
>  
>  static struct unit_test_suite fib_slow_tests = {
>  	.suite_name = "fib slow autotest",
>  	.setup = NULL,
>  	.teardown = NULL,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  	TEST_CASE(test_multiple_create),
>  	TEST_CASES_END()
> -	}
> +	})
>  };
>  
>  /*
> diff --git a/app/test/test_fib6.c b/app/test/test_fib6.c
> index 74abfc7a5d..4e36ab795e 100644
> --- a/app/test/test_fib6.c
> +++ b/app/test/test_fib6.c
> @@ -384,24 +384,24 @@ static struct unit_test_suite fib6_fast_tests = {
>  	.suite_name = "fib6 autotest",
>  	.setup = NULL,
>  	.teardown = NULL,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  	TEST_CASE(test_create_invalid),
>  	TEST_CASE(test_free_null),
>  	TEST_CASE(test_add_del_invalid),
>  	TEST_CASE(test_get_invalid),
>  	TEST_CASE(test_lookup),
>  	TEST_CASES_END()
> -	}
> +	})
>  };
>  
>  static struct unit_test_suite fib6_slow_tests = {
>  	.suite_name = "fib6 slow autotest",
>  	.setup = NULL,
>  	.teardown = NULL,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  	TEST_CASE(test_multiple_create),
>  	TEST_CASES_END()
> -	}
> +	})
>  };
>  
>  /*
> diff --git a/app/test/test_graph.c b/app/test/test_graph.c
> index 81bdcb9bea..81eef73900 100644
> --- a/app/test/test_graph.c
> +++ b/app/test/test_graph.c
> @@ -815,7 +815,7 @@ static struct unit_test_suite graph_testsuite = {
>  	.suite_name = "Graph library test suite",
>  	.setup = graph_setup,
>  	.teardown = graph_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE(test_update_edges),
>  		TEST_CASE(test_lookup_functions),
>  		TEST_CASE(test_create_graph),
> @@ -823,7 +823,7 @@ static struct unit_test_suite graph_testsuite = {
>  		TEST_CASE(test_graph_walk),
>  		TEST_CASE(test_print_stats),
>  		TEST_CASES_END(), /**< NULL terminate unit test array */
> -	},
> +	}),
>  };
>  
>  static int
> diff --git a/app/test/test_graph_perf.c b/app/test/test_graph_perf.c
> index 296d99a9d3..ae30ab3c41 100644
> --- a/app/test/test_graph_perf.c
> +++ b/app/test/test_graph_perf.c
> @@ -1035,7 +1035,7 @@ static struct unit_test_suite graph_perf_testsuite = {
>  	.suite_name = "Graph library performance test suite",
>  	.setup = graph_perf_setup,
>  	.teardown = graph_perf_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_ST(graph_init_hr, graph_fini,
>  			     graph_hr_4s_1n_1src_1snk),
>  		TEST_CASE_ST(graph_init_hr_brst_one, graph_fini,
> @@ -1051,7 +1051,7 @@ static struct unit_test_suite graph_perf_testsuite = {
>  		TEST_CASE_ST(graph_init_parallel_tree, graph_fini,
>  			     graph_parallel_tree_5s_4n_4src_4snk),
>  		TEST_CASES_END(), /**< NULL terminate unit test array */
> -	},
> +	}),
>  };
>  
>  static int
> diff --git a/app/test/test_ipfrag.c b/app/test/test_ipfrag.c
> index da8c212f92..b0ac54e422 100644
> --- a/app/test/test_ipfrag.c
> +++ b/app/test/test_ipfrag.c
> @@ -242,12 +242,12 @@ static struct unit_test_suite ipfrag_testsuite  = {
>  	.suite_name = "IP Frag Unit Test Suite",
>  	.setup = testsuite_setup,
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_ST(ut_setup, ut_teardown,
>  			     test_ip_frag),
>  
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_ipsec.c b/app/test/test_ipsec.c
> index d18220a885..bd9fc3f999 100644
> --- a/app/test/test_ipsec.c
> +++ b/app/test/test_ipsec.c
> @@ -2498,7 +2498,7 @@ static struct unit_test_suite ipsec_testsuite  = {
>  	.suite_name = "IPsec NULL Unit Test Suite",
>  	.setup = testsuite_setup,
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_ST(ut_setup, ut_teardown,
>  			test_ipsec_crypto_inb_burst_null_null_wrapper),
>  		TEST_CASE_ST(ut_setup, ut_teardown,
> @@ -2528,7 +2528,7 @@ static struct unit_test_suite ipsec_testsuite  = {
>  		TEST_CASE_ST(ut_setup, ut_teardown,
>  			test_ipsec_crypto_inb_burst_2sa_4grp_null_null_wrapper),
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_ipsec_sad.c b/app/test/test_ipsec_sad.c
> index 491164689e..874b19a286 100644
> --- a/app/test/test_ipsec_sad.c
> +++ b/app/test/test_ipsec_sad.c
> @@ -864,7 +864,7 @@ static struct unit_test_suite ipsec_sad_tests = {
>  	.suite_name = "ipsec sad autotest",
>  	.setup = NULL,
>  	.teardown = NULL,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE(test_create_invalid),
>  		TEST_CASE(test_find_existing),
>  		TEST_CASE(test_multiple_create),
> @@ -875,7 +875,7 @@ static struct unit_test_suite ipsec_sad_tests = {
>  		TEST_CASE(test_lookup_adv),
>  		TEST_CASE(test_lookup_order),
>  		TEST_CASES_END()
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_latencystats.c b/app/test/test_latencystats.c
> index 427339904d..f72eee98cc 100644
> --- a/app/test/test_latencystats.c
> +++ b/app/test/test_latencystats.c
> @@ -171,7 +171,7 @@ unit_test_suite latencystats_testsuite = {
>  	.suite_name = "Latency Stats Unit Test Suite",
>  	.setup = test_latency_ring_setup,
>  	.teardown = test_latency_ring_free,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  
>  		/* Test Case 1: To check latency init with
>  		 * metrics init
> @@ -198,7 +198,7 @@ unit_test_suite latencystats_testsuite = {
>  		TEST_CASE_ST(NULL, NULL, test_latency_uninit),
>  
>  		TEST_CASES_END()
> -	}
> +	})
>  };
>  
>  static int test_latencystats(void)
> diff --git a/app/test/test_link_bonding.c b/app/test/test_link_bonding.c
> index 8a5c8310a8..4fa1e0525c 100644
> --- a/app/test/test_link_bonding.c
> +++ b/app/test/test_link_bonding.c
> @@ -5094,7 +5094,7 @@ static struct unit_test_suite link_bonding_test_suite  = {
>  	.suite_name = "Link Bonding Unit Test Suite",
>  	.setup = test_setup,
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE(test_create_bonded_device),
>  		TEST_CASE(test_create_bonded_device_with_invalid_params),
>  		TEST_CASE(test_add_slave_to_bonded_device),
> @@ -5162,7 +5162,7 @@ static struct unit_test_suite link_bonding_test_suite  = {
>  		TEST_CASE(test_close_bonded_device),
>  
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  
> diff --git a/app/test/test_link_bonding_mode4.c b/app/test/test_link_bonding_mode4.c
> index 2c835fa7ad..aafa2236ce 100644
> --- a/app/test/test_link_bonding_mode4.c
> +++ b/app/test/test_link_bonding_mode4.c
> @@ -1653,7 +1653,7 @@ static struct unit_test_suite link_bonding_mode4_test_suite  = {
>  	.suite_name = "Link Bonding mode 4 Unit Test Suite",
>  	.setup = test_setup,
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_NAMED("test_mode4_agg_mode_selection",
>  				test_mode4_agg_mode_selection_wrapper),
>  		TEST_CASE_NAMED("test_mode4_lacp", test_mode4_lacp_wrapper),
> @@ -1667,7 +1667,7 @@ static struct unit_test_suite link_bonding_mode4_test_suite  = {
>  				test_mode4_ext_lacp_wrapper),
>  
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_link_bonding_rssconf.c b/app/test/test_link_bonding_rssconf.c
> index 5dac60ca1e..58ff4a8971 100644
> --- a/app/test/test_link_bonding_rssconf.c
> +++ b/app/test/test_link_bonding_rssconf.c
> @@ -645,13 +645,13 @@ test_rss_lazy_wrapper(void)
>  static struct unit_test_suite link_bonding_rssconf_test_suite  = {
>  	.suite_name = "RSS Dynamic Configuration for Bonding Unit Test Suite",
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_NAMED("test_setup", test_setup_wrapper),
>  		TEST_CASE_NAMED("test_rss", test_rss_wrapper),
>  		TEST_CASE_NAMED("test_rss_lazy", test_rss_lazy_wrapper),
>  
>  		TEST_CASES_END()
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_metrics.c b/app/test/test_metrics.c
> index e736019ae4..d80be0e5b4 100644
> --- a/app/test/test_metrics.c
> +++ b/app/test/test_metrics.c
> @@ -275,7 +275,7 @@ static struct unit_test_suite metrics_testsuite  = {
>  	.suite_name = "Metrics Unit Test Suite",
>  	.setup = NULL,
>  	.teardown = NULL,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		/* Test Case 1: Test to check all metric APIs without
>  		 * metrics init
>  		 */
> @@ -317,7 +317,7 @@ static struct unit_test_suite metrics_testsuite  = {
>  		TEST_CASE(test_metrics_deinitialize),
>  
>  		TEST_CASES_END()
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_pmd_ring.c b/app/test/test_pmd_ring.c
> index 86b1db2c1f..9ef667aed7 100644
> --- a/app/test/test_pmd_ring.c
> +++ b/app/test/test_pmd_ring.c
> @@ -576,7 +576,7 @@ unit_test_suite test_pmd_ring_suite  = {
>  	.setup = test_pmd_ringcreate_setup,
>  	.teardown = test_cleanup_resources,
>  	.suite_name = "Test Pmd Ring Unit Test Suite",
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE(test_ethdev_configure_ports),
>  		TEST_CASE(test_send_basic_packets),
>  		TEST_CASE(test_get_stats_for_port),
> @@ -584,7 +584,7 @@ unit_test_suite test_pmd_ring_suite  = {
>  		TEST_CASE(test_pmd_ring_pair_create_attach),
>  		TEST_CASE(test_command_line_ring_port),
>  		TEST_CASES_END()
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_reorder.c b/app/test/test_reorder.c
> index 1c4226da65..04bdf4a2d1 100644
> --- a/app/test/test_reorder.c
> +++ b/app/test/test_reorder.c
> @@ -373,7 +373,7 @@ static struct unit_test_suite reorder_test_suite  = {
>  	.setup = test_setup,
>  	.teardown = test_teardown,
>  	.suite_name = "Reorder Unit Test Suite",
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE(test_reorder_create),
>  		TEST_CASE(test_reorder_init),
>  		TEST_CASE(test_reorder_find_existing),
> @@ -381,7 +381,7 @@ static struct unit_test_suite reorder_test_suite  = {
>  		TEST_CASE(test_reorder_insert),
>  		TEST_CASE(test_reorder_drain),
>  		TEST_CASES_END()
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_rib.c b/app/test/test_rib.c
> index 3dc48fe1f2..8a2a7d68aa 100644
> --- a/app/test/test_rib.c
> +++ b/app/test/test_rib.c
> @@ -327,7 +327,7 @@ static struct unit_test_suite rib_tests = {
>  	.suite_name = "rib autotest",
>  	.setup = NULL,
>  	.teardown = NULL,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE(test_create_invalid),
>  		TEST_CASE(test_free_null),
>  		TEST_CASE(test_insert_invalid),
> @@ -335,17 +335,17 @@ static struct unit_test_suite rib_tests = {
>  		TEST_CASE(test_basic),
>  		TEST_CASE(test_tree_traversal),
>  		TEST_CASES_END()
> -	}
> +	})
>  };
>  
>  static struct unit_test_suite rib_slow_tests = {
>  	.suite_name = "rib slow autotest",
>  	.setup = NULL,
>  	.teardown = NULL,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE(test_multiple_create),
>  		TEST_CASES_END()
> -	}
> +	})
>  };
>  
>  /*
> diff --git a/app/test/test_rib6.c b/app/test/test_rib6.c
> index c77df11298..c381c68ce6 100644
> --- a/app/test/test_rib6.c
> +++ b/app/test/test_rib6.c
> @@ -332,7 +332,7 @@ static struct unit_test_suite rib6_tests = {
>  	.suite_name = "rib6 autotest",
>  	.setup = NULL,
>  	.teardown = NULL,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE(test_create_invalid),
>  		TEST_CASE(test_free_null),
>  		TEST_CASE(test_insert_invalid),
> @@ -340,17 +340,17 @@ static struct unit_test_suite rib6_tests = {
>  		TEST_CASE(test_basic),
>  		TEST_CASE(test_tree_traversal),
>  		TEST_CASES_END()
> -	}
> +	})
>  };
>  
>  static struct unit_test_suite rib6_slow_tests = {
>  	.suite_name = "rib6 slow autotest",
>  	.setup = NULL,
>  	.teardown = NULL,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE(test_multiple_create),
>  		TEST_CASES_END()
> -	}
> +	})
>  };
>  
>  /*
> diff --git a/app/test/test_security.c b/app/test/test_security.c
> index 060cf1ffa8..583a229c0e 100644
> --- a/app/test/test_security.c
> +++ b/app/test/test_security.c
> @@ -2484,7 +2484,7 @@ static struct unit_test_suite security_testsuite  = {
>  	.suite_name = "generic security",
>  	.setup = testsuite_setup,
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_ST(ut_setup, ut_teardown,
>  				test_session_create_inv_context),
>  		TEST_CASE_ST(ut_setup, ut_teardown,
> @@ -2627,7 +2627,7 @@ static struct unit_test_suite security_testsuite  = {
>  				test_capability_get_docsis_match),
>  
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_service_cores.c b/app/test/test_service_cores.c
> index 37d7172d53..ff4d3aa95a 100644
> --- a/app/test/test_service_cores.c
> +++ b/app/test/test_service_cores.c
> @@ -996,7 +996,7 @@ static struct unit_test_suite service_tests  = {
>  	.suite_name = "service core test suite",
>  	.setup = testsuite_setup,
>  	.teardown = testsuite_teardown,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE_ST(dummy_register, NULL, unregister_all),
>  		TEST_CASE_ST(dummy_register, NULL, service_name),
>  		TEST_CASE_ST(dummy_register, NULL, service_get_by_name),
> @@ -1015,7 +1015,7 @@ static struct unit_test_suite service_tests  = {
>  		TEST_CASE_ST(dummy_register, NULL, service_may_be_active),
>  		TEST_CASE_ST(dummy_register, NULL, service_active_two_cores),
>  		TEST_CASES_END() /**< NULL terminate unit test array */
> -	}
> +	})
>  };
>  
>  static int
> diff --git a/app/test/test_trace.c b/app/test/test_trace.c
> index 0f9df83c40..d704ceb8c2 100644
> --- a/app/test/test_trace.c
> +++ b/app/test/test_trace.c
> @@ -176,7 +176,7 @@ static struct unit_test_suite trace_tests = {
>  	.suite_name = "trace autotest",
>  	.setup = NULL,
>  	.teardown = NULL,
> -	.unit_test_cases = {
> +	.unit_test_cases = ((struct unit_test_case []) {
>  		TEST_CASE(test_trace_mode),
>  		TEST_CASE(test_generic_trace_points),
>  		TEST_CASE(test_fp_trace_points),
> @@ -185,7 +185,7 @@ static struct unit_test_suite trace_tests = {
>  		TEST_CASE(test_trace_point_regex),
>  		TEST_CASE(test_trace_points_lookup),
>  		TEST_CASES_END()
> -	}
> +	})
>  };
>  
>  static int


  reply	other threads:[~2021-03-31 14:42 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-16 14:32 [dpdk-dev] [PATCH 0/6] test: refactor crypto unit test framework Ciara Power
2021-03-16 14:32 ` [dpdk-dev] [PATCH 1/6] app/test: refactor of unit test suite runner Ciara Power
2021-03-31 14:42   ` Aaron Conole
2021-03-16 14:32 ` [dpdk-dev] [PATCH 2/6] test: introduce parent testsuite format Ciara Power
2021-03-31 14:42   ` Aaron Conole [this message]
2021-03-16 14:32 ` [dpdk-dev] [PATCH 3/6] test/crypto: refactor to use sub-testsuites Ciara Power
2021-03-16 14:32 ` [dpdk-dev] [PATCH 4/6] test/crypto: move testsuite params to header file Ciara Power
2021-03-16 14:32 ` [dpdk-dev] [PATCH 5/6] test/crypto: dynamically build blockcipher suite Ciara Power
2021-03-16 14:32 ` [dpdk-dev] [PATCH 6/6] doc: add unit test suite change to release notes Ciara Power
2021-03-30 16:15 ` [dpdk-dev] [PATCH 0/6] test: refactor crypto unit test framework Doherty, Declan
2021-03-31 14:43   ` Aaron Conole
2021-04-02 14:32     ` Power, Ciara
2021-04-01  3:13 ` Ruifeng Wang
2021-04-02 14:29   ` Power, Ciara

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f7tk0pnv0yv.fsf@dhcp-25.97.bos.redhat.com \
    --to=aconole@redhat.com \
    --cc=abhinandan.gujjar@intel.com \
    --cc=anatoly.burakov@intel.com \
    --cc=andrew.rybchenko@oktetlabs.ru \
    --cc=ashish.gupta@marvell.com \
    --cc=bernard.iremonger@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=chas3@att.com \
    --cc=ciara.power@intel.com \
    --cc=declan.doherty@intel.com \
    --cc=dev@dpdk.org \
    --cc=erik.g.carrillo@intel.com \
    --cc=ferruh.yigit@intel.com \
    --cc=fiona.trahe@intel.com \
    --cc=gakhil@marvell.com \
    --cc=harry.van.haaren@intel.com \
    --cc=humin29@huawei.com \
    --cc=jay.jayatheerthan@intel.com \
    --cc=jerinj@marvell.com \
    --cc=kirankumark@marvell.com \
    --cc=konstantin.ananyev@intel.com \
    --cc=ndabilpuram@marvell.com \
    --cc=reshma.pattan@intel.com \
    --cc=skori@marvell.com \
    --cc=thomas@monjalon.net \
    --cc=vladimir.medvedkin@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).