diff options
author | Tuomas Taipale <tuomas.taipale@nokia.com> | 2023-05-12 12:09:21 +0000 |
---|---|---|
committer | Matias Elo <matias.elo@nokia.com> | 2023-06-09 16:04:26 +0300 |
commit | f33339fbd1e28f44555f84cc01f4e34b956a7c51 (patch) | |
tree | f085f9bf4b9bdf9e28901c8c048982dbd1a4404d /test/validation | |
parent | e7443ebf0665f05c75dbc99c20896f2277339e32 (diff) |
validation: dma: add same session name tests
Verify that same session name (NULL or named) can be used to create
separate DMA sessions.
Signed-off-by: Tuomas Taipale <tuomas.taipale@nokia.com>
Reviewed-by: Matias Elo <matias.elo@nokia.com>
Diffstat (limited to 'test/validation')
-rw-r--r-- | test/validation/api/dma/dma.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/test/validation/api/dma/dma.c b/test/validation/api/dma/dma.c index 5b352edbd..e1ba4ff7a 100644 --- a/test/validation/api/dma/dma.c +++ b/test/validation/api/dma/dma.c @@ -270,6 +270,54 @@ static void test_dma_debug(void) CU_ASSERT(odp_dma_destroy(dma) == 0); } +static void test_dma_same_name_null(void) +{ + odp_dma_param_t dma_param; + odp_dma_t dma_a, dma_b; + + odp_dma_param_init(&dma_param); + dma_param.compl_mode_mask = ODP_DMA_COMPL_SYNC; + dma_a = odp_dma_create(NULL, &dma_param); + + CU_ASSERT_FATAL(dma_a != ODP_DMA_INVALID); + + dma_b = odp_dma_create(NULL, &dma_param); + + CU_ASSERT_FATAL(dma_b != ODP_DMA_INVALID); + CU_ASSERT(odp_dma_to_u64(dma_a) != odp_dma_to_u64(dma_b)); + CU_ASSERT(odp_dma_destroy(dma_a) == 0); + CU_ASSERT(odp_dma_destroy(dma_b) == 0); +} + +static void test_dma_same_name_named(void) +{ + odp_dma_param_t dma_param; + const char *name = "DMA session"; + odp_dma_t dma, dma_a, dma_b; + + odp_dma_param_init(&dma_param); + dma_param.compl_mode_mask = ODP_DMA_COMPL_SYNC; + dma_a = odp_dma_create(name, &dma_param); + + CU_ASSERT_FATAL(dma_a != ODP_DMA_INVALID); + + dma = odp_dma_lookup(name); + + CU_ASSERT(odp_dma_to_u64(dma) == odp_dma_to_u64(dma_a)); + + dma_b = odp_dma_create(name, &dma_param); + + CU_ASSERT_FATAL(dma_b != ODP_DMA_INVALID); + + dma = odp_dma_lookup(name); + + CU_ASSERT(odp_dma_to_u64(dma) == odp_dma_to_u64(dma_a) || + odp_dma_to_u64(dma) == odp_dma_to_u64(dma_b)); + CU_ASSERT(odp_dma_to_u64(dma_a) != odp_dma_to_u64(dma_b)); + CU_ASSERT(odp_dma_destroy(dma_a) == 0); + CU_ASSERT(odp_dma_destroy(dma_b) == 0); +} + static void test_dma_compl_pool(void) { odp_pool_t pool; @@ -1084,6 +1132,17 @@ static int check_sync(void) return ODP_TEST_ACTIVE; } +static int check_session_count(void) +{ + if (global.disabled) + return ODP_TEST_INACTIVE; + + if (global.dma_capa.max_sessions > 1) + return ODP_TEST_ACTIVE; + + return ODP_TEST_INACTIVE; +} + static int check_event(void) { if (global.disabled) @@ -1498,6 +1557,8 @@ odp_testinfo_t dma_suite[] = { ODP_TEST_INFO(test_dma_capability), ODP_TEST_INFO_CONDITIONAL(test_dma_param_init, check_sync), ODP_TEST_INFO_CONDITIONAL(test_dma_debug, check_sync), + ODP_TEST_INFO_CONDITIONAL(test_dma_same_name_null, check_session_count), + ODP_TEST_INFO_CONDITIONAL(test_dma_same_name_named, check_session_count), ODP_TEST_INFO_CONDITIONAL(test_dma_compl_pool, check_event), ODP_TEST_INFO_CONDITIONAL(test_dma_compl_pool_same_name, check_event), ODP_TEST_INFO_CONDITIONAL(test_dma_compl_pool_max_pools, check_event), |