-----Original Message-----
> Date: Fri, 23 Jun 2017 10:06:18 +0100
> From: Harry van Haaren <harry.van.haa...@intel.com>
> To: dev@dpdk.org
> CC: tho...@monjalon.net, jerin.ja...@caviumnetworks.com,
>  keith.wi...@intel.com, bruce.richard...@intel.com, Harry van Haaren
>  <harry.van.haa...@intel.com>
> Subject: [PATCH 5/6] service core: add unit tests
> X-Mailer: git-send-email 2.7.4
> 
> Add a bunch of unit tests, to ensure that the service
> core functions are operating as expected.
> 
> As part of these tests a dummy service is registered which
> allows identifying if a service callback has been invoked
> by using the CPU tick counter. This allows identifying if
> functions to start and stop service lcores are actually having
> effect.
> 
> Signed-off-by: Harry van Haaren <harry.van.haa...@intel.com>
> ---
> +#define SERVICE_DELAY 1
> +
> +static int
> +testsuite_setup(void)
> +{
> +     /* assuming lcore 1 is available for service-core testing */

We can check the number of available lcores is >= 2.

> +     score_id = 1;

How about slcore_id?

> +     return TEST_SUCCESS;
> +}
> +
> +static void
> +testsuite_teardown(void)
> +{
> +     /* release service cores? */
> +}
> +
> +static int32_t dummy_cb(void *args)
> +{
> +     RTE_SET_USED(args);
> +     service_tick++;
> +     rte_delay_ms(SERVICE_DELAY);
> +     return 0;
> +}
> +
> +/* unregister all services */
> +static int
> +dummy_unregister(void)

How about unregister_all(void) as it is un registering all services.

> +{
> +     uint32_t i;
> +     struct rte_service_spec *dead = (struct rte_service_spec *)0xdead;
> +
> +     TEST_ASSERT_EQUAL(-EINVAL, rte_service_unregister(0),
> +                     "Unregistered NULL pointer");
> +     TEST_ASSERT_EQUAL(-EINVAL, rte_service_unregister(dead),
> +                     "Unregistered invalid pointer");
> +
> +     uint32_t c = rte_service_get_count();
> +     for (i = 0; i < c; i++) {
> +             struct rte_service_spec *s = rte_service_get_by_id(i);
> +             TEST_ASSERT_EQUAL(0, rte_service_unregister(s),
> +                             "Error unregistering a valid service");
> +     }
> +
> +     rte_service_core_reset_all();
> +
> +     return TEST_SUCCESS;
> +}
> +
> +/* enable and disable a core for a service */
> +static int
> +service_core_enable_disable(void)
> +{
> +     struct rte_service_spec *s = rte_service_get_by_id(0);
> +
> +     /* expected failure cases */
> +     TEST_ASSERT_EQUAL(-EINVAL, rte_service_enable_on_core(s, 100000),
> +                     "Enable on invalid core did not fail");
> +     TEST_ASSERT_EQUAL(-EINVAL, rte_service_disable_on_core(s, 100000),
> +                     "Dispable on invalid core did not fail");

s/Dispable/Disable

> +
> +     /* add service core to allow enabling */
> +     TEST_ASSERT_EQUAL(0, rte_service_core_add(score_id),
> +                     "Add service core failed when not in use before");
> +
> +     /* valid enable */
> +     TEST_ASSERT_EQUAL(0, rte_service_enable_on_core(s, score_id),
> +                     "Enabling valid service and core failed");
> +     TEST_ASSERT_EQUAL(1, rte_service_get_enabled_on_core(s, score_id),
> +                     "Enabled core returned not-enabled");
> +
> +     /* valid disable */
> +     TEST_ASSERT_EQUAL(0, rte_service_disable_on_core(s, score_id),
> +                     "Disabling valid service and core failed");
> +     TEST_ASSERT_EQUAL(0, rte_service_get_enabled_on_core(s, score_id),
> +                     "Disabled core returned enabled");
> +
> +     return dummy_unregister();
> +}
> +
> +static struct unit_test_suite service_tests  = {
> +     .suite_name = "service core test suite",
> +     .setup = testsuite_setup,
> +     .teardown = testsuite_teardown,
> +     .unit_test_cases = {
> +             TEST_CASE_ST(dummy_register, NULL, dummy_unregister),
> +             TEST_CASE_ST(dummy_register, NULL, service_start_stop),
> +             TEST_CASE_ST(dummy_register, NULL, service_core_add_del),
> +             TEST_CASE_ST(dummy_register, NULL, service_core_start_stop),
> +             TEST_CASE_ST(dummy_register, NULL, service_core_enable_disable),

IMO, Following functions/functionality coverage is missing. How about add that
in unit test case.
1) rte_service_get_name()
2) Verify RTE_SERVICE_CAP_MT_SAFE with available lcores
3) rte_service_probe_capability()
4) rte_service_dump()
5) Moving service lcore to/from rte lcore back and forth.

Reply via email to