14849e8e4SLukasz Wojciechowski /* SPDX-License-Identifier: BSD-3-Clause
24849e8e4SLukasz Wojciechowski * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
34849e8e4SLukasz Wojciechowski */
44849e8e4SLukasz Wojciechowski
54849e8e4SLukasz Wojciechowski #include <rte_errno.h>
64849e8e4SLukasz Wojciechowski #include <rte_log.h>
74849e8e4SLukasz Wojciechowski #include <rte_memory.h>
84849e8e4SLukasz Wojciechowski #include <rte_mempool.h>
9c6478fd5SDavid Coyle #include <rte_ether.h>
104849e8e4SLukasz Wojciechowski #include <rte_security.h>
114849e8e4SLukasz Wojciechowski #include <rte_security_driver.h>
124849e8e4SLukasz Wojciechowski
134849e8e4SLukasz Wojciechowski /* Before including rte_test.h file you can define
144849e8e4SLukasz Wojciechowski * RTE_TEST_TRACE_FAILURE(_file, _line, _func) macro to better trace/debug test
154849e8e4SLukasz Wojciechowski * failures. Mostly useful in development phase.
164849e8e4SLukasz Wojciechowski */
174849e8e4SLukasz Wojciechowski #ifndef RTE_TEST_TRACE_FAILURE
184849e8e4SLukasz Wojciechowski #define RTE_TEST_TRACE_FAILURE(_file, _line, _func) \
194849e8e4SLukasz Wojciechowski RTE_LOG(DEBUG, EAL, "in %s:%d %s\n", _file, _line, _func)
204849e8e4SLukasz Wojciechowski #endif
214849e8e4SLukasz Wojciechowski
224849e8e4SLukasz Wojciechowski #include <rte_test.h>
234849e8e4SLukasz Wojciechowski #include "test.h"
244849e8e4SLukasz Wojciechowski
254849e8e4SLukasz Wojciechowski /**
264849e8e4SLukasz Wojciechowski * Security
274849e8e4SLukasz Wojciechowski * =======
284849e8e4SLukasz Wojciechowski *
294849e8e4SLukasz Wojciechowski * Basic unit tests of the librte_security API.
304849e8e4SLukasz Wojciechowski *
314849e8e4SLukasz Wojciechowski * Structure of the file:
324849e8e4SLukasz Wojciechowski * - macros for making tests more readable;
334849e8e4SLukasz Wojciechowski * - mockup structures and functions for rte_security_ops;
344849e8e4SLukasz Wojciechowski * - test suite and test cases setup and teardown functions;
354849e8e4SLukasz Wojciechowski * - tests functions;
364849e8e4SLukasz Wojciechowski * - declaration of testcases.
374849e8e4SLukasz Wojciechowski */
384849e8e4SLukasz Wojciechowski
394849e8e4SLukasz Wojciechowski
404849e8e4SLukasz Wojciechowski /**
414849e8e4SLukasz Wojciechowski * Macros
424849e8e4SLukasz Wojciechowski *
434849e8e4SLukasz Wojciechowski * Set of macros for making tests easier to read.
444849e8e4SLukasz Wojciechowski */
454849e8e4SLukasz Wojciechowski
464849e8e4SLukasz Wojciechowski /**
474849e8e4SLukasz Wojciechowski * Verify condition inside mocked up function.
484849e8e4SLukasz Wojciechowski * Mockup function cannot return a test error, so the failure
494849e8e4SLukasz Wojciechowski * of assertion increases counter and print logs.
504849e8e4SLukasz Wojciechowski * The counter can be verified later to check if test case should fail.
514849e8e4SLukasz Wojciechowski *
524849e8e4SLukasz Wojciechowski * @param fail_counter fail counter
534849e8e4SLukasz Wojciechowski * @param cond condition expected to be true
544849e8e4SLukasz Wojciechowski * @param msg printf style formatting string for custom message
554849e8e4SLukasz Wojciechowski */
564849e8e4SLukasz Wojciechowski #define MOCK_TEST_ASSERT(fail_counter, cond, msg, ...) do { \
574849e8e4SLukasz Wojciechowski if (!(cond)) { \
584849e8e4SLukasz Wojciechowski fail_counter++; \
594849e8e4SLukasz Wojciechowski RTE_LOG(DEBUG, EAL, "Test assert %s line %d failed: " \
604849e8e4SLukasz Wojciechowski msg "\n", __func__, __LINE__, \
614849e8e4SLukasz Wojciechowski ##__VA_ARGS__); \
624849e8e4SLukasz Wojciechowski RTE_TEST_TRACE_FAILURE(__FILE__, __LINE__, __func__); \
634849e8e4SLukasz Wojciechowski } \
644849e8e4SLukasz Wojciechowski } while (0)
654849e8e4SLukasz Wojciechowski
664849e8e4SLukasz Wojciechowski /**
674849e8e4SLukasz Wojciechowski * Verify equality condition inside mocked up function.
684849e8e4SLukasz Wojciechowski * Mockup function cannot return a test error, so the failure
694849e8e4SLukasz Wojciechowski * of assertion increases counter and print logs.
704849e8e4SLukasz Wojciechowski * The counter can be verified later to check if test case should fail.
714849e8e4SLukasz Wojciechowski *
724849e8e4SLukasz Wojciechowski * @param fail_counter fail counter
734849e8e4SLukasz Wojciechowski * @param a first value of comparison
744849e8e4SLukasz Wojciechowski * @param b second value of comparison
754849e8e4SLukasz Wojciechowski * @param msg printf style formatting string for custom message
764849e8e4SLukasz Wojciechowski */
774849e8e4SLukasz Wojciechowski #define MOCK_TEST_ASSERT_EQUAL(fail_counter, a, b, msg, ...) \
784849e8e4SLukasz Wojciechowski MOCK_TEST_ASSERT(fail_counter, (a) == (b), msg, ##__VA_ARGS__)
794849e8e4SLukasz Wojciechowski
800cbd6711SLukasz Wojciechowski /**
810cbd6711SLukasz Wojciechowski * Verify not null condition inside mocked up function.
820cbd6711SLukasz Wojciechowski * Mockup function cannot return a test error, so the failure
830cbd6711SLukasz Wojciechowski * of assertion increases counter and print logs.
840cbd6711SLukasz Wojciechowski * The counter can be verified later to check if test case should fail.
850cbd6711SLukasz Wojciechowski *
860cbd6711SLukasz Wojciechowski * @param fail_counter fail counter
870cbd6711SLukasz Wojciechowski * @param val value expected not to be NULL
880cbd6711SLukasz Wojciechowski * @param msg printf style formatting string for custom message
890cbd6711SLukasz Wojciechowski */
900cbd6711SLukasz Wojciechowski #define MOCK_TEST_ASSERT_NOT_NULL(fail_counter, val, msg, ...) \
910cbd6711SLukasz Wojciechowski MOCK_TEST_ASSERT(fail_counter, (val) != NULL, msg, ##__VA_ARGS__)
920cbd6711SLukasz Wojciechowski
934849e8e4SLukasz Wojciechowski
944849e8e4SLukasz Wojciechowski /**
954849e8e4SLukasz Wojciechowski * Verify if parameter of the mocked up function matches expected value.
964849e8e4SLukasz Wojciechowski * The expected value is stored in data structure in the field matching
974849e8e4SLukasz Wojciechowski * parameter name.
984849e8e4SLukasz Wojciechowski *
994849e8e4SLukasz Wojciechowski * @param data structure with expected values
1004849e8e4SLukasz Wojciechowski * @param parameter name of the parameter (both field and parameter name)
1014849e8e4SLukasz Wojciechowski * @param spec printf style spec for parameter
1024849e8e4SLukasz Wojciechowski */
1034849e8e4SLukasz Wojciechowski #define MOCK_TEST_ASSERT_PARAMETER(data, parameter, spec) \
1044849e8e4SLukasz Wojciechowski MOCK_TEST_ASSERT_EQUAL(data.failed, data.parameter, parameter, \
1054849e8e4SLukasz Wojciechowski "Expecting parameter %s to be " spec \
1064849e8e4SLukasz Wojciechowski " but it's " spec, RTE_STR(parameter), \
1074849e8e4SLukasz Wojciechowski data.parameter, parameter)
1084849e8e4SLukasz Wojciechowski
1094849e8e4SLukasz Wojciechowski /**
1104849e8e4SLukasz Wojciechowski * Wrap for MOCK_TEST_ASSERT_PARAMETER macro for pointer type parameters.
1114849e8e4SLukasz Wojciechowski *
1124849e8e4SLukasz Wojciechowski * @param data structure with expected values
1134849e8e4SLukasz Wojciechowski * @param parameter name of the parameter (both field and parameter name)
1144849e8e4SLukasz Wojciechowski */
1154849e8e4SLukasz Wojciechowski #define MOCK_TEST_ASSERT_POINTER_PARAMETER(data, parameter) \
1164849e8e4SLukasz Wojciechowski MOCK_TEST_ASSERT_PARAMETER(data, parameter, "%p")
1174849e8e4SLukasz Wojciechowski
1184849e8e4SLukasz Wojciechowski /**
1190cbd6711SLukasz Wojciechowski * Wrap for MOCK_TEST_ASSERT_PARAMETER macro for uint64_t type parameters.
1200cbd6711SLukasz Wojciechowski *
1210cbd6711SLukasz Wojciechowski * @param data structure with expected values
1220cbd6711SLukasz Wojciechowski * @param parameter name of the parameter (both field and parameter name)
1230cbd6711SLukasz Wojciechowski */
1240cbd6711SLukasz Wojciechowski #define MOCK_TEST_ASSERT_U64_PARAMETER(data, parameter) \
1250cbd6711SLukasz Wojciechowski MOCK_TEST_ASSERT_PARAMETER(data, parameter, "%" PRIu64)
1260cbd6711SLukasz Wojciechowski
1270cbd6711SLukasz Wojciechowski /**
1284849e8e4SLukasz Wojciechowski * Verify number of calls of the mocked up function
1294849e8e4SLukasz Wojciechowski * and check if there were any fails during execution.
1304849e8e4SLukasz Wojciechowski * The fails statistics inside mocked up functions are collected
1314849e8e4SLukasz Wojciechowski * as "failed" field in mockup structures.
1324849e8e4SLukasz Wojciechowski *
1334849e8e4SLukasz Wojciechowski * @param mock_data structure with statistics (called, failed)
1344849e8e4SLukasz Wojciechowski * @param exp_calls expected number of mockup function calls
1354849e8e4SLukasz Wojciechowski */
1364849e8e4SLukasz Wojciechowski #define TEST_ASSERT_MOCK_CALLS(mock_data, exp_calls) do { \
1374849e8e4SLukasz Wojciechowski TEST_ASSERT_EQUAL(exp_calls, mock_data.called, \
1384849e8e4SLukasz Wojciechowski "Expecting sub op to be called %d times, " \
1394849e8e4SLukasz Wojciechowski "but it's called %d times", \
1404849e8e4SLukasz Wojciechowski exp_calls, mock_data.called); \
1414849e8e4SLukasz Wojciechowski TEST_ASSERT_EQUAL(0, mock_data.failed, \
1424849e8e4SLukasz Wojciechowski "Expecting sub op asserts not to fail, " \
1434849e8e4SLukasz Wojciechowski "but they're failed %d times", \
1444849e8e4SLukasz Wojciechowski mock_data.failed); \
1454849e8e4SLukasz Wojciechowski } while (0)
1464849e8e4SLukasz Wojciechowski
1474849e8e4SLukasz Wojciechowski /**
1484849e8e4SLukasz Wojciechowski * Assert tested function result match expected value
1494849e8e4SLukasz Wojciechowski *
1504849e8e4SLukasz Wojciechowski * @param f_name name of tested function
1514849e8e4SLukasz Wojciechowski * @param f_ret value returned by the function
1524849e8e4SLukasz Wojciechowski * @param exp_ret expected returned value
1534849e8e4SLukasz Wojciechowski * @param fmt printf style format for returned value
1544849e8e4SLukasz Wojciechowski */
1554849e8e4SLukasz Wojciechowski #define TEST_ASSERT_MOCK_FUNCTION_CALL_RET(f_name, f_ret, exp_ret, fmt) \
1564849e8e4SLukasz Wojciechowski TEST_ASSERT_EQUAL(exp_ret, f_ret, "Expecting " RTE_STR(f_name) \
1574849e8e4SLukasz Wojciechowski " to return " fmt ", but it returned " fmt \
1584849e8e4SLukasz Wojciechowski "\n", exp_ret, f_ret)
1594849e8e4SLukasz Wojciechowski
1604849e8e4SLukasz Wojciechowski /**
1614849e8e4SLukasz Wojciechowski * Assert tested function result is not NULL
1624849e8e4SLukasz Wojciechowski *
1634849e8e4SLukasz Wojciechowski * @param f_name name of tested function
1644849e8e4SLukasz Wojciechowski * @param f_ret value returned by the function
1654849e8e4SLukasz Wojciechowski */
1664849e8e4SLukasz Wojciechowski #define TEST_ASSERT_MOCK_FUNCTION_CALL_NOT_NULL(f_name, f_ret) \
1674849e8e4SLukasz Wojciechowski TEST_ASSERT_NOT_NULL(f_ret, "Expecting " RTE_STR(f_name) \
1684849e8e4SLukasz Wojciechowski " to return not NULL\n")
1694849e8e4SLukasz Wojciechowski
1704849e8e4SLukasz Wojciechowski /**
1714849e8e4SLukasz Wojciechowski * Verify that sess_cnt counter value matches expected
1724849e8e4SLukasz Wojciechowski *
1734849e8e4SLukasz Wojciechowski * @param expected_sessions_count expected counter value
1744849e8e4SLukasz Wojciechowski */
1754849e8e4SLukasz Wojciechowski #define TEST_ASSERT_SESSION_COUNT(expected_sessions_count) do { \
1764849e8e4SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params; \
1774849e8e4SLukasz Wojciechowski TEST_ASSERT_EQUAL(expected_sessions_count, \
1784849e8e4SLukasz Wojciechowski ut_params->ctx.sess_cnt, \
1794849e8e4SLukasz Wojciechowski "Expecting session counter to be %u," \
1804849e8e4SLukasz Wojciechowski " but it's %u", expected_sessions_count, \
1814849e8e4SLukasz Wojciechowski ut_params->ctx.sess_cnt); \
1824849e8e4SLukasz Wojciechowski } while (0)
1834849e8e4SLukasz Wojciechowski
1844849e8e4SLukasz Wojciechowski /**
1854849e8e4SLukasz Wojciechowski * Verify usage of mempool by checking if number of allocated objects matches
1864849e8e4SLukasz Wojciechowski * expectations. The mempool is used to manage objects for sessions data.
1874849e8e4SLukasz Wojciechowski * A single object is acquired from mempool during session_create
1884849e8e4SLukasz Wojciechowski * and put back in session_destroy.
1894849e8e4SLukasz Wojciechowski *
1904849e8e4SLukasz Wojciechowski * @param expected_mempool_usage expected number of used mempool objects
1914849e8e4SLukasz Wojciechowski */
1924849e8e4SLukasz Wojciechowski #define TEST_ASSERT_MEMPOOL_USAGE(expected_mempool_usage) do { \
1934849e8e4SLukasz Wojciechowski struct security_testsuite_params *ts_params = &testsuite_params;\
1944849e8e4SLukasz Wojciechowski unsigned int mempool_usage; \
1954849e8e4SLukasz Wojciechowski mempool_usage = rte_mempool_in_use_count( \
1964849e8e4SLukasz Wojciechowski ts_params->session_mpool); \
1974849e8e4SLukasz Wojciechowski TEST_ASSERT_EQUAL(expected_mempool_usage, mempool_usage, \
1984849e8e4SLukasz Wojciechowski "Expecting %u mempool allocations, " \
1994849e8e4SLukasz Wojciechowski "but there are %u allocated objects", \
2004849e8e4SLukasz Wojciechowski expected_mempool_usage, mempool_usage); \
2014849e8e4SLukasz Wojciechowski } while (0)
2024849e8e4SLukasz Wojciechowski
203e30b2833SAkhil Goyal /**
2044849e8e4SLukasz Wojciechowski * Mockup structures and functions for rte_security_ops;
2054849e8e4SLukasz Wojciechowski *
2064849e8e4SLukasz Wojciechowski * Set of structures for controlling mockup functions calls.
2074849e8e4SLukasz Wojciechowski * Every mockup function X has its corresponding X_data structure
2084849e8e4SLukasz Wojciechowski * and an instance of that structure X_exp.
2094849e8e4SLukasz Wojciechowski * Structure contains parameters that a mockup function is expected
2104849e8e4SLukasz Wojciechowski * to be called with, a value to return (.ret) and 2 statistics:
2114849e8e4SLukasz Wojciechowski * .called (number of times the mockup function was called)
2124849e8e4SLukasz Wojciechowski * and .failed (number of assertion fails during mockup function call).
2134849e8e4SLukasz Wojciechowski *
2144849e8e4SLukasz Wojciechowski * Mockup functions verify that the parameters they are called with match
2154849e8e4SLukasz Wojciechowski * expected values. The expected values should be stored in corresponding
2164849e8e4SLukasz Wojciechowski * structures prior to mockup functions call. Every failure of such
2174849e8e4SLukasz Wojciechowski * verification increases .failed counter. Every call of mockup function
2184849e8e4SLukasz Wojciechowski * increases .called counter. Function returns value stored in .ret field
2194849e8e4SLukasz Wojciechowski * of the structure.
2204849e8e4SLukasz Wojciechowski * In case of some parameters in some functions the expected value is unknown
2217be78d02SJosh Soref * and cannot be determined prior to call. Such parameters are stored
2224849e8e4SLukasz Wojciechowski * in structure and can be compared or analyzed later in test case code.
2234849e8e4SLukasz Wojciechowski *
2244849e8e4SLukasz Wojciechowski * Below structures and functions follow the rules just described.
2254849e8e4SLukasz Wojciechowski * Additional remarks and exceptions are added in comments.
2264849e8e4SLukasz Wojciechowski */
2274849e8e4SLukasz Wojciechowski
2284849e8e4SLukasz Wojciechowski /**
2294849e8e4SLukasz Wojciechowski * session_create mockup
2304849e8e4SLukasz Wojciechowski *
2314849e8e4SLukasz Wojciechowski * Verified parameters: device, conf, mp.
2324849e8e4SLukasz Wojciechowski * Saved, not verified parameters: sess.
2334849e8e4SLukasz Wojciechowski */
2344849e8e4SLukasz Wojciechowski static struct mock_session_create_data {
2354849e8e4SLukasz Wojciechowski void *device;
2364849e8e4SLukasz Wojciechowski struct rte_security_session_conf *conf;
2372973dbf9SAkhil Goyal void *sess;
2384849e8e4SLukasz Wojciechowski struct rte_mempool *mp;
239e30b2833SAkhil Goyal struct rte_mempool *priv_mp;
2404849e8e4SLukasz Wojciechowski
2414849e8e4SLukasz Wojciechowski int ret;
2424849e8e4SLukasz Wojciechowski
2434849e8e4SLukasz Wojciechowski int called;
2444849e8e4SLukasz Wojciechowski int failed;
245e30b2833SAkhil Goyal } mock_session_create_exp = {NULL, NULL, NULL, NULL, NULL, 0, 0, 0};
2464849e8e4SLukasz Wojciechowski
2474849e8e4SLukasz Wojciechowski static int
mock_session_create(void * device,struct rte_security_session_conf * conf,struct rte_security_session * sess)2484849e8e4SLukasz Wojciechowski mock_session_create(void *device,
2494849e8e4SLukasz Wojciechowski struct rte_security_session_conf *conf,
2503f3fc330SAkhil Goyal struct rte_security_session *sess)
2514849e8e4SLukasz Wojciechowski {
2524849e8e4SLukasz Wojciechowski mock_session_create_exp.called++;
2534849e8e4SLukasz Wojciechowski
2544849e8e4SLukasz Wojciechowski MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_create_exp, device);
2554849e8e4SLukasz Wojciechowski MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_create_exp, conf);
2564849e8e4SLukasz Wojciechowski
257e30b2833SAkhil Goyal if (mock_session_create_exp.ret == 0) {
2584849e8e4SLukasz Wojciechowski mock_session_create_exp.sess = sess;
259e30b2833SAkhil Goyal }
2604849e8e4SLukasz Wojciechowski
2614849e8e4SLukasz Wojciechowski return mock_session_create_exp.ret;
2624849e8e4SLukasz Wojciechowski }
2634849e8e4SLukasz Wojciechowski
2644849e8e4SLukasz Wojciechowski /**
2650b124e04SLukasz Wojciechowski * session_update mockup
2660b124e04SLukasz Wojciechowski *
2670b124e04SLukasz Wojciechowski * Verified parameters: device, sess, conf.
2680b124e04SLukasz Wojciechowski */
2690b124e04SLukasz Wojciechowski static struct mock_session_update_data {
2700b124e04SLukasz Wojciechowski void *device;
2712973dbf9SAkhil Goyal void *sess;
2720b124e04SLukasz Wojciechowski struct rte_security_session_conf *conf;
2730b124e04SLukasz Wojciechowski
2740b124e04SLukasz Wojciechowski int ret;
2750b124e04SLukasz Wojciechowski
2760b124e04SLukasz Wojciechowski int called;
2770b124e04SLukasz Wojciechowski int failed;
2780b124e04SLukasz Wojciechowski } mock_session_update_exp = {NULL, NULL, NULL, 0, 0, 0};
2790b124e04SLukasz Wojciechowski
2800b124e04SLukasz Wojciechowski static int
mock_session_update(void * device,struct rte_security_session * sess,struct rte_security_session_conf * conf)2810b124e04SLukasz Wojciechowski mock_session_update(void *device,
2820b124e04SLukasz Wojciechowski struct rte_security_session *sess,
2830b124e04SLukasz Wojciechowski struct rte_security_session_conf *conf)
2840b124e04SLukasz Wojciechowski {
2850b124e04SLukasz Wojciechowski mock_session_update_exp.called++;
2860b124e04SLukasz Wojciechowski
2870b124e04SLukasz Wojciechowski MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_update_exp, device);
2880b124e04SLukasz Wojciechowski MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_update_exp, sess);
2890b124e04SLukasz Wojciechowski MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_update_exp, conf);
2900b124e04SLukasz Wojciechowski
2910b124e04SLukasz Wojciechowski return mock_session_update_exp.ret;
2920b124e04SLukasz Wojciechowski }
2930b124e04SLukasz Wojciechowski
2940b124e04SLukasz Wojciechowski /**
295226430f4SLukasz Wojciechowski * session_get_size mockup
296226430f4SLukasz Wojciechowski *
297226430f4SLukasz Wojciechowski * Verified parameters: device.
298226430f4SLukasz Wojciechowski */
299226430f4SLukasz Wojciechowski static struct mock_session_get_size_data {
300226430f4SLukasz Wojciechowski void *device;
301226430f4SLukasz Wojciechowski
302226430f4SLukasz Wojciechowski unsigned int ret;
303226430f4SLukasz Wojciechowski
304226430f4SLukasz Wojciechowski int called;
305226430f4SLukasz Wojciechowski int failed;
306226430f4SLukasz Wojciechowski } mock_session_get_size_exp = {NULL, 0U, 0, 0};
307226430f4SLukasz Wojciechowski
308226430f4SLukasz Wojciechowski static unsigned int
mock_session_get_size(void * device)309226430f4SLukasz Wojciechowski mock_session_get_size(void *device)
310226430f4SLukasz Wojciechowski {
311226430f4SLukasz Wojciechowski mock_session_get_size_exp.called++;
312226430f4SLukasz Wojciechowski
313226430f4SLukasz Wojciechowski MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_get_size_exp, device);
314226430f4SLukasz Wojciechowski
315226430f4SLukasz Wojciechowski return mock_session_get_size_exp.ret;
316226430f4SLukasz Wojciechowski }
317226430f4SLukasz Wojciechowski
318226430f4SLukasz Wojciechowski /**
3191e1a0e49SLukasz Wojciechowski * session_stats_get mockup
3201e1a0e49SLukasz Wojciechowski *
3211e1a0e49SLukasz Wojciechowski * Verified parameters: device, sess, stats.
3221e1a0e49SLukasz Wojciechowski */
3231e1a0e49SLukasz Wojciechowski static struct mock_session_stats_get_data {
3241e1a0e49SLukasz Wojciechowski void *device;
3252973dbf9SAkhil Goyal void *sess;
3261e1a0e49SLukasz Wojciechowski struct rte_security_stats *stats;
3271e1a0e49SLukasz Wojciechowski
3281e1a0e49SLukasz Wojciechowski int ret;
3291e1a0e49SLukasz Wojciechowski
3301e1a0e49SLukasz Wojciechowski int called;
3311e1a0e49SLukasz Wojciechowski int failed;
3321e1a0e49SLukasz Wojciechowski } mock_session_stats_get_exp = {NULL, NULL, NULL, 0, 0, 0};
3331e1a0e49SLukasz Wojciechowski
3341e1a0e49SLukasz Wojciechowski static int
mock_session_stats_get(void * device,struct rte_security_session * sess,struct rte_security_stats * stats)3351e1a0e49SLukasz Wojciechowski mock_session_stats_get(void *device,
3361e1a0e49SLukasz Wojciechowski struct rte_security_session *sess,
3371e1a0e49SLukasz Wojciechowski struct rte_security_stats *stats)
3381e1a0e49SLukasz Wojciechowski {
3391e1a0e49SLukasz Wojciechowski mock_session_stats_get_exp.called++;
3401e1a0e49SLukasz Wojciechowski
3411e1a0e49SLukasz Wojciechowski MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_stats_get_exp, device);
3421e1a0e49SLukasz Wojciechowski MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_stats_get_exp, sess);
3431e1a0e49SLukasz Wojciechowski MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_stats_get_exp, stats);
3441e1a0e49SLukasz Wojciechowski
3451e1a0e49SLukasz Wojciechowski return mock_session_stats_get_exp.ret;
3461e1a0e49SLukasz Wojciechowski }
3471e1a0e49SLukasz Wojciechowski
3481e1a0e49SLukasz Wojciechowski /**
3494849e8e4SLukasz Wojciechowski * session_destroy mockup
3504849e8e4SLukasz Wojciechowski *
3514849e8e4SLukasz Wojciechowski * Verified parameters: device, sess.
3524849e8e4SLukasz Wojciechowski */
3534849e8e4SLukasz Wojciechowski static struct mock_session_destroy_data {
3544849e8e4SLukasz Wojciechowski void *device;
3552973dbf9SAkhil Goyal void *sess;
3564849e8e4SLukasz Wojciechowski
3574849e8e4SLukasz Wojciechowski int ret;
3584849e8e4SLukasz Wojciechowski
3594849e8e4SLukasz Wojciechowski int called;
3604849e8e4SLukasz Wojciechowski int failed;
3614849e8e4SLukasz Wojciechowski } mock_session_destroy_exp = {NULL, NULL, 0, 0, 0};
3624849e8e4SLukasz Wojciechowski
3634849e8e4SLukasz Wojciechowski static int
mock_session_destroy(void * device,struct rte_security_session * sess)3644849e8e4SLukasz Wojciechowski mock_session_destroy(void *device, struct rte_security_session *sess)
3654849e8e4SLukasz Wojciechowski {
366e30b2833SAkhil Goyal mock_session_destroy_exp.called++;
3674849e8e4SLukasz Wojciechowski MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_destroy_exp, device);
3684849e8e4SLukasz Wojciechowski MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_destroy_exp, sess);
3694849e8e4SLukasz Wojciechowski
3704849e8e4SLukasz Wojciechowski return mock_session_destroy_exp.ret;
3714849e8e4SLukasz Wojciechowski }
3724849e8e4SLukasz Wojciechowski
3734849e8e4SLukasz Wojciechowski /**
374a9ff3522SLukasz Wojciechowski * set_pkt_metadata mockup
375a9ff3522SLukasz Wojciechowski *
376a9ff3522SLukasz Wojciechowski * Verified parameters: device, sess, m, params.
377a9ff3522SLukasz Wojciechowski */
378a9ff3522SLukasz Wojciechowski static struct mock_set_pkt_metadata_data {
379a9ff3522SLukasz Wojciechowski void *device;
3802973dbf9SAkhil Goyal void *sess;
381a9ff3522SLukasz Wojciechowski struct rte_mbuf *m;
382a9ff3522SLukasz Wojciechowski void *params;
383a9ff3522SLukasz Wojciechowski
384a9ff3522SLukasz Wojciechowski int ret;
385a9ff3522SLukasz Wojciechowski
386a9ff3522SLukasz Wojciechowski int called;
387a9ff3522SLukasz Wojciechowski int failed;
388a9ff3522SLukasz Wojciechowski } mock_set_pkt_metadata_exp = {NULL, NULL, NULL, NULL, 0, 0, 0};
389a9ff3522SLukasz Wojciechowski
390a9ff3522SLukasz Wojciechowski static int
mock_set_pkt_metadata(void * device,struct rte_security_session * sess,struct rte_mbuf * m,void * params)391a9ff3522SLukasz Wojciechowski mock_set_pkt_metadata(void *device,
392a9ff3522SLukasz Wojciechowski struct rte_security_session *sess,
393a9ff3522SLukasz Wojciechowski struct rte_mbuf *m,
394a9ff3522SLukasz Wojciechowski void *params)
395a9ff3522SLukasz Wojciechowski {
396a9ff3522SLukasz Wojciechowski mock_set_pkt_metadata_exp.called++;
397a9ff3522SLukasz Wojciechowski
398a9ff3522SLukasz Wojciechowski MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_set_pkt_metadata_exp, device);
399a9ff3522SLukasz Wojciechowski MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_set_pkt_metadata_exp, sess);
400a9ff3522SLukasz Wojciechowski MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_set_pkt_metadata_exp, m);
401a9ff3522SLukasz Wojciechowski MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_set_pkt_metadata_exp, params);
402a9ff3522SLukasz Wojciechowski
403a9ff3522SLukasz Wojciechowski return mock_set_pkt_metadata_exp.ret;
404a9ff3522SLukasz Wojciechowski }
405a9ff3522SLukasz Wojciechowski
406a9ff3522SLukasz Wojciechowski /**
4072242e701SLukasz Wojciechowski * capabilities_get mockup
4082242e701SLukasz Wojciechowski *
4092242e701SLukasz Wojciechowski * Verified parameters: device.
4102242e701SLukasz Wojciechowski */
4112242e701SLukasz Wojciechowski static struct mock_capabilities_get_data {
4122242e701SLukasz Wojciechowski void *device;
4132242e701SLukasz Wojciechowski
4142242e701SLukasz Wojciechowski struct rte_security_capability *ret;
4152242e701SLukasz Wojciechowski
4162242e701SLukasz Wojciechowski int called;
4172242e701SLukasz Wojciechowski int failed;
4182242e701SLukasz Wojciechowski } mock_capabilities_get_exp = {NULL, NULL, 0, 0};
4192242e701SLukasz Wojciechowski
4202242e701SLukasz Wojciechowski static const struct rte_security_capability *
mock_capabilities_get(void * device)4212242e701SLukasz Wojciechowski mock_capabilities_get(void *device)
4222242e701SLukasz Wojciechowski {
4232242e701SLukasz Wojciechowski mock_capabilities_get_exp.called++;
4242242e701SLukasz Wojciechowski
4252242e701SLukasz Wojciechowski MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_capabilities_get_exp, device);
4262242e701SLukasz Wojciechowski
4272242e701SLukasz Wojciechowski return mock_capabilities_get_exp.ret;
4282242e701SLukasz Wojciechowski }
4292242e701SLukasz Wojciechowski
4302242e701SLukasz Wojciechowski /**
4314849e8e4SLukasz Wojciechowski * empty_ops
4324849e8e4SLukasz Wojciechowski *
4334849e8e4SLukasz Wojciechowski * is an empty security operations set (all function pointers set to NULL)
4344849e8e4SLukasz Wojciechowski */
4354849e8e4SLukasz Wojciechowski struct rte_security_ops empty_ops = { NULL };
4364849e8e4SLukasz Wojciechowski
4374849e8e4SLukasz Wojciechowski /**
4384849e8e4SLukasz Wojciechowski * mock_ops
4394849e8e4SLukasz Wojciechowski *
4404849e8e4SLukasz Wojciechowski * is a security operations set using mockup functions
4414849e8e4SLukasz Wojciechowski */
4424849e8e4SLukasz Wojciechowski struct rte_security_ops mock_ops = {
4434849e8e4SLukasz Wojciechowski .session_create = mock_session_create,
4440b124e04SLukasz Wojciechowski .session_update = mock_session_update,
445226430f4SLukasz Wojciechowski .session_get_size = mock_session_get_size,
4461e1a0e49SLukasz Wojciechowski .session_stats_get = mock_session_stats_get,
4474849e8e4SLukasz Wojciechowski .session_destroy = mock_session_destroy,
448a9ff3522SLukasz Wojciechowski .set_pkt_metadata = mock_set_pkt_metadata,
4492242e701SLukasz Wojciechowski .capabilities_get = mock_capabilities_get,
4504849e8e4SLukasz Wojciechowski };
4514849e8e4SLukasz Wojciechowski
4524849e8e4SLukasz Wojciechowski
4534849e8e4SLukasz Wojciechowski /**
4544849e8e4SLukasz Wojciechowski * Test suite and test cases setup and teardown functions.
4554849e8e4SLukasz Wojciechowski */
4564849e8e4SLukasz Wojciechowski
4574849e8e4SLukasz Wojciechowski /**
4584849e8e4SLukasz Wojciechowski * struct security_testsuite_params defines parameters initialized once
4594849e8e4SLukasz Wojciechowski * for whole tests suite.
4604849e8e4SLukasz Wojciechowski * Currently the only stored parameter is session_mpool a mempool created
4614849e8e4SLukasz Wojciechowski * once in testsuite_setup and released in testsuite_teardown.
4624849e8e4SLukasz Wojciechowski * The instance of this structure is stored in testsuite_params variable.
4634849e8e4SLukasz Wojciechowski */
4644849e8e4SLukasz Wojciechowski static struct security_testsuite_params {
4654849e8e4SLukasz Wojciechowski struct rte_mempool *session_mpool;
4664849e8e4SLukasz Wojciechowski } testsuite_params = { NULL };
4674849e8e4SLukasz Wojciechowski
4684849e8e4SLukasz Wojciechowski /**
4694849e8e4SLukasz Wojciechowski * struct security_unittest_params defines parameters initialized
4704849e8e4SLukasz Wojciechowski * for every test case. The parameters are initialized in ut_setup
4710b124e04SLukasz Wojciechowski * or ut_setup_with_session (depending on the testcase)
4724849e8e4SLukasz Wojciechowski * and released in ut_teardown.
4734849e8e4SLukasz Wojciechowski * The instance of this structure is stored in unittest_params variable.
4744849e8e4SLukasz Wojciechowski */
4754849e8e4SLukasz Wojciechowski static struct security_unittest_params {
4764849e8e4SLukasz Wojciechowski struct rte_security_ctx ctx;
4774849e8e4SLukasz Wojciechowski struct rte_security_session_conf conf;
4782973dbf9SAkhil Goyal void *sess;
4794849e8e4SLukasz Wojciechowski } unittest_params = {
4804849e8e4SLukasz Wojciechowski .ctx = {
4814849e8e4SLukasz Wojciechowski .device = NULL,
4824849e8e4SLukasz Wojciechowski .ops = &mock_ops,
4834849e8e4SLukasz Wojciechowski .sess_cnt = 0,
4844849e8e4SLukasz Wojciechowski },
4854849e8e4SLukasz Wojciechowski .sess = NULL,
4864849e8e4SLukasz Wojciechowski };
4874849e8e4SLukasz Wojciechowski
488e30b2833SAkhil Goyal #define SECURITY_TEST_MEMPOOL_NAME "SecurityTestMp"
489e30b2833SAkhil Goyal #define SECURITY_TEST_PRIV_MEMPOOL_NAME "SecurityTestPrivMp"
4904849e8e4SLukasz Wojciechowski #define SECURITY_TEST_MEMPOOL_SIZE 15
491e30b2833SAkhil Goyal #define SECURITY_TEST_SESSION_PRIV_OBJ_SZ 64
4923f3fc330SAkhil Goyal #define SECURITY_TEST_SESSION_OBJ_SZ (sizeof(struct rte_security_session) + \
4933f3fc330SAkhil Goyal SECURITY_TEST_SESSION_PRIV_OBJ_SZ)
4944849e8e4SLukasz Wojciechowski
4954849e8e4SLukasz Wojciechowski /**
4964849e8e4SLukasz Wojciechowski * testsuite_setup initializes whole test suite parameters.
4974849e8e4SLukasz Wojciechowski * It creates a new mempool used in all test cases
4984849e8e4SLukasz Wojciechowski * and verifies if it properly created.
4994849e8e4SLukasz Wojciechowski */
5004849e8e4SLukasz Wojciechowski static int
testsuite_setup(void)5014849e8e4SLukasz Wojciechowski testsuite_setup(void)
5024849e8e4SLukasz Wojciechowski {
5034849e8e4SLukasz Wojciechowski struct security_testsuite_params *ts_params = &testsuite_params;
5044849e8e4SLukasz Wojciechowski ts_params->session_mpool = rte_mempool_create(
5054849e8e4SLukasz Wojciechowski SECURITY_TEST_MEMPOOL_NAME,
5064849e8e4SLukasz Wojciechowski SECURITY_TEST_MEMPOOL_SIZE,
507e30b2833SAkhil Goyal SECURITY_TEST_SESSION_OBJ_SZ,
5084849e8e4SLukasz Wojciechowski 0, 0, NULL, NULL, NULL, NULL,
5094849e8e4SLukasz Wojciechowski SOCKET_ID_ANY, 0);
5104849e8e4SLukasz Wojciechowski TEST_ASSERT_NOT_NULL(ts_params->session_mpool,
5114849e8e4SLukasz Wojciechowski "Cannot create mempool %s\n", rte_strerror(rte_errno));
512e30b2833SAkhil Goyal
5134849e8e4SLukasz Wojciechowski return TEST_SUCCESS;
5144849e8e4SLukasz Wojciechowski }
5154849e8e4SLukasz Wojciechowski
5164849e8e4SLukasz Wojciechowski /**
5174849e8e4SLukasz Wojciechowski * testsuite_teardown releases test suite wide parameters.
5184849e8e4SLukasz Wojciechowski */
5194849e8e4SLukasz Wojciechowski static void
testsuite_teardown(void)5204849e8e4SLukasz Wojciechowski testsuite_teardown(void)
5214849e8e4SLukasz Wojciechowski {
5224849e8e4SLukasz Wojciechowski struct security_testsuite_params *ts_params = &testsuite_params;
5234849e8e4SLukasz Wojciechowski if (ts_params->session_mpool) {
5244849e8e4SLukasz Wojciechowski rte_mempool_free(ts_params->session_mpool);
5254849e8e4SLukasz Wojciechowski ts_params->session_mpool = NULL;
5264849e8e4SLukasz Wojciechowski }
5274849e8e4SLukasz Wojciechowski }
5284849e8e4SLukasz Wojciechowski
5294849e8e4SLukasz Wojciechowski /**
5304849e8e4SLukasz Wojciechowski * ut_setup initializes test case parameters to default values.
5314849e8e4SLukasz Wojciechowski * It resets also any .called and .failed statistics of mockup functions
5324849e8e4SLukasz Wojciechowski * usage.
5334849e8e4SLukasz Wojciechowski */
5344849e8e4SLukasz Wojciechowski static int
ut_setup(void)5354849e8e4SLukasz Wojciechowski ut_setup(void)
5364849e8e4SLukasz Wojciechowski {
5374849e8e4SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
5384849e8e4SLukasz Wojciechowski ut_params->ctx.device = NULL;
5394849e8e4SLukasz Wojciechowski ut_params->ctx.ops = &mock_ops;
5404849e8e4SLukasz Wojciechowski ut_params->ctx.sess_cnt = 0;
5414849e8e4SLukasz Wojciechowski ut_params->sess = NULL;
5424849e8e4SLukasz Wojciechowski
5434849e8e4SLukasz Wojciechowski mock_session_create_exp.called = 0;
5440b124e04SLukasz Wojciechowski mock_session_update_exp.called = 0;
545226430f4SLukasz Wojciechowski mock_session_get_size_exp.called = 0;
5461e1a0e49SLukasz Wojciechowski mock_session_stats_get_exp.called = 0;
5474849e8e4SLukasz Wojciechowski mock_session_destroy_exp.called = 0;
548a9ff3522SLukasz Wojciechowski mock_set_pkt_metadata_exp.called = 0;
5492242e701SLukasz Wojciechowski mock_capabilities_get_exp.called = 0;
5504849e8e4SLukasz Wojciechowski
5514849e8e4SLukasz Wojciechowski mock_session_create_exp.failed = 0;
5520b124e04SLukasz Wojciechowski mock_session_update_exp.failed = 0;
553226430f4SLukasz Wojciechowski mock_session_get_size_exp.failed = 0;
5541e1a0e49SLukasz Wojciechowski mock_session_stats_get_exp.failed = 0;
5554849e8e4SLukasz Wojciechowski mock_session_destroy_exp.failed = 0;
556a9ff3522SLukasz Wojciechowski mock_set_pkt_metadata_exp.failed = 0;
5572242e701SLukasz Wojciechowski mock_capabilities_get_exp.failed = 0;
5584849e8e4SLukasz Wojciechowski
5594849e8e4SLukasz Wojciechowski return TEST_SUCCESS;
5604849e8e4SLukasz Wojciechowski }
5614849e8e4SLukasz Wojciechowski
5624849e8e4SLukasz Wojciechowski /**
5634849e8e4SLukasz Wojciechowski * destroy_session_with_check is a helper function releasing session
5644849e8e4SLukasz Wojciechowski * created with rte_security_session_create and stored in test case parameters.
5654849e8e4SLukasz Wojciechowski * It's used both to release sessions created in test cases' bodies
5664849e8e4SLukasz Wojciechowski * which are assigned to ut_params->sess
5670b124e04SLukasz Wojciechowski * as well as sessions created in ut_setup_with_session.
5684849e8e4SLukasz Wojciechowski */
5694849e8e4SLukasz Wojciechowski static int
destroy_session_with_check(void)5704849e8e4SLukasz Wojciechowski destroy_session_with_check(void)
5714849e8e4SLukasz Wojciechowski {
5724849e8e4SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
5734849e8e4SLukasz Wojciechowski if (ut_params->sess != NULL) {
5744849e8e4SLukasz Wojciechowski /* Assure that mockup function for destroy operation is set. */
5754849e8e4SLukasz Wojciechowski ut_params->ctx.ops = &mock_ops;
5764849e8e4SLukasz Wojciechowski
5774849e8e4SLukasz Wojciechowski mock_session_destroy_exp.device = NULL;
5784849e8e4SLukasz Wojciechowski mock_session_destroy_exp.sess = ut_params->sess;
5794849e8e4SLukasz Wojciechowski mock_session_destroy_exp.ret = 0;
5804849e8e4SLukasz Wojciechowski mock_session_destroy_exp.called = 0;
5814849e8e4SLukasz Wojciechowski mock_session_destroy_exp.failed = 0;
5824849e8e4SLukasz Wojciechowski
5834849e8e4SLukasz Wojciechowski int ret = rte_security_session_destroy(&ut_params->ctx,
5844849e8e4SLukasz Wojciechowski ut_params->sess);
5854849e8e4SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_destroy,
5864849e8e4SLukasz Wojciechowski ret, 0, "%d");
5874849e8e4SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_destroy_exp, 1);
5884849e8e4SLukasz Wojciechowski
5894849e8e4SLukasz Wojciechowski ut_params->sess = NULL;
5904849e8e4SLukasz Wojciechowski }
5914849e8e4SLukasz Wojciechowski return TEST_SUCCESS;
5924849e8e4SLukasz Wojciechowski }
5934849e8e4SLukasz Wojciechowski
5944849e8e4SLukasz Wojciechowski /**
5954849e8e4SLukasz Wojciechowski * ut_teardown releases test case parameters.
5964849e8e4SLukasz Wojciechowski */
5974849e8e4SLukasz Wojciechowski static void
ut_teardown(void)5984849e8e4SLukasz Wojciechowski ut_teardown(void)
5994849e8e4SLukasz Wojciechowski {
6004849e8e4SLukasz Wojciechowski destroy_session_with_check();
6014849e8e4SLukasz Wojciechowski }
6024849e8e4SLukasz Wojciechowski
6030b124e04SLukasz Wojciechowski /**
6040b124e04SLukasz Wojciechowski * ut_setup_with_session initializes test case parameters by
6050b124e04SLukasz Wojciechowski * - calling standard ut_setup,
6060b124e04SLukasz Wojciechowski * - creating a session that can be used in test case.
6070b124e04SLukasz Wojciechowski */
6080b124e04SLukasz Wojciechowski static int
ut_setup_with_session(void)6090b124e04SLukasz Wojciechowski ut_setup_with_session(void)
6100b124e04SLukasz Wojciechowski {
6110b124e04SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
6120b124e04SLukasz Wojciechowski struct security_testsuite_params *ts_params = &testsuite_params;
6132973dbf9SAkhil Goyal void *sess;
6140b124e04SLukasz Wojciechowski
6150b124e04SLukasz Wojciechowski int ret = ut_setup();
6160b124e04SLukasz Wojciechowski if (ret != TEST_SUCCESS)
6170b124e04SLukasz Wojciechowski return ret;
6180b124e04SLukasz Wojciechowski
6190b124e04SLukasz Wojciechowski mock_session_create_exp.device = NULL;
6200b124e04SLukasz Wojciechowski mock_session_create_exp.conf = &ut_params->conf;
6210b124e04SLukasz Wojciechowski mock_session_create_exp.mp = ts_params->session_mpool;
6220b124e04SLukasz Wojciechowski mock_session_create_exp.ret = 0;
6230b124e04SLukasz Wojciechowski
6240b124e04SLukasz Wojciechowski sess = rte_security_session_create(&ut_params->ctx, &ut_params->conf,
6253f3fc330SAkhil Goyal ts_params->session_mpool);
6260b124e04SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_NOT_NULL(rte_security_session_create,
6270b124e04SLukasz Wojciechowski sess);
6280b124e04SLukasz Wojciechowski TEST_ASSERT_EQUAL(sess, mock_session_create_exp.sess,
6290b124e04SLukasz Wojciechowski "Expecting session_create to be called with %p sess"
6300b124e04SLukasz Wojciechowski " parameter, but it's called %p sess parameter",
6310b124e04SLukasz Wojciechowski sess, mock_session_create_exp.sess);
6320b124e04SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_create_exp, 1);
6330b124e04SLukasz Wojciechowski
6340b124e04SLukasz Wojciechowski /*
6350b124e04SLukasz Wojciechowski * Store created session in test case parameters, so it can be released
6360b124e04SLukasz Wojciechowski * after test case in ut_teardown by destroy_session_with_check.
6370b124e04SLukasz Wojciechowski */
6380b124e04SLukasz Wojciechowski ut_params->sess = sess;
6390b124e04SLukasz Wojciechowski
6400b124e04SLukasz Wojciechowski return TEST_SUCCESS;
6410b124e04SLukasz Wojciechowski }
6420b124e04SLukasz Wojciechowski
6434849e8e4SLukasz Wojciechowski
6444849e8e4SLukasz Wojciechowski /**
6454849e8e4SLukasz Wojciechowski * Test functions
6464849e8e4SLukasz Wojciechowski *
6474849e8e4SLukasz Wojciechowski * Each test function is related to a single test case.
6484849e8e4SLukasz Wojciechowski * They are arranged by tested rte_security API function
6494849e8e4SLukasz Wojciechowski * and by rte_security execution paths sequence in code.
6504849e8e4SLukasz Wojciechowski */
6514849e8e4SLukasz Wojciechowski
6524849e8e4SLukasz Wojciechowski /**
6534849e8e4SLukasz Wojciechowski * rte_security_session_create tests
6544849e8e4SLukasz Wojciechowski */
6554849e8e4SLukasz Wojciechowski
6564849e8e4SLukasz Wojciechowski /**
6574849e8e4SLukasz Wojciechowski * Test execution of rte_security_session_create with NULL instance
6584849e8e4SLukasz Wojciechowski */
6594849e8e4SLukasz Wojciechowski static int
test_session_create_inv_context(void)6604849e8e4SLukasz Wojciechowski test_session_create_inv_context(void)
6614849e8e4SLukasz Wojciechowski {
6624849e8e4SLukasz Wojciechowski struct security_testsuite_params *ts_params = &testsuite_params;
6634849e8e4SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
6642973dbf9SAkhil Goyal void *sess;
6654849e8e4SLukasz Wojciechowski
6664849e8e4SLukasz Wojciechowski sess = rte_security_session_create(NULL, &ut_params->conf,
6673f3fc330SAkhil Goyal ts_params->session_mpool);
6684849e8e4SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_create,
6694849e8e4SLukasz Wojciechowski sess, NULL, "%p");
6704849e8e4SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_create_exp, 0);
6714849e8e4SLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(0);
6724849e8e4SLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(0);
6734849e8e4SLukasz Wojciechowski
6744849e8e4SLukasz Wojciechowski return TEST_SUCCESS;
6754849e8e4SLukasz Wojciechowski }
6764849e8e4SLukasz Wojciechowski
6774849e8e4SLukasz Wojciechowski /**
6784849e8e4SLukasz Wojciechowski * Test execution of rte_security_session_create with invalid
6794849e8e4SLukasz Wojciechowski * security operations structure (NULL)
6804849e8e4SLukasz Wojciechowski */
6814849e8e4SLukasz Wojciechowski static int
test_session_create_inv_context_ops(void)6824849e8e4SLukasz Wojciechowski test_session_create_inv_context_ops(void)
6834849e8e4SLukasz Wojciechowski {
6844849e8e4SLukasz Wojciechowski struct security_testsuite_params *ts_params = &testsuite_params;
6854849e8e4SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
6862973dbf9SAkhil Goyal void *sess;
6874849e8e4SLukasz Wojciechowski
6884849e8e4SLukasz Wojciechowski ut_params->ctx.ops = NULL;
6894849e8e4SLukasz Wojciechowski
6904849e8e4SLukasz Wojciechowski sess = rte_security_session_create(&ut_params->ctx, &ut_params->conf,
6913f3fc330SAkhil Goyal ts_params->session_mpool);
6924849e8e4SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_create,
6934849e8e4SLukasz Wojciechowski sess, NULL, "%p");
6944849e8e4SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_create_exp, 0);
6954849e8e4SLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(0);
6964849e8e4SLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(0);
6974849e8e4SLukasz Wojciechowski
6984849e8e4SLukasz Wojciechowski return TEST_SUCCESS;
6994849e8e4SLukasz Wojciechowski }
7004849e8e4SLukasz Wojciechowski
7014849e8e4SLukasz Wojciechowski /**
7024849e8e4SLukasz Wojciechowski * Test execution of rte_security_session_create with empty
7034849e8e4SLukasz Wojciechowski * security operations
7044849e8e4SLukasz Wojciechowski */
7054849e8e4SLukasz Wojciechowski static int
test_session_create_inv_context_ops_fun(void)7064849e8e4SLukasz Wojciechowski test_session_create_inv_context_ops_fun(void)
7074849e8e4SLukasz Wojciechowski {
7084849e8e4SLukasz Wojciechowski struct security_testsuite_params *ts_params = &testsuite_params;
7094849e8e4SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
7102973dbf9SAkhil Goyal void *sess;
7114849e8e4SLukasz Wojciechowski
7124849e8e4SLukasz Wojciechowski ut_params->ctx.ops = &empty_ops;
7134849e8e4SLukasz Wojciechowski
7144849e8e4SLukasz Wojciechowski sess = rte_security_session_create(&ut_params->ctx, &ut_params->conf,
7153f3fc330SAkhil Goyal ts_params->session_mpool);
7164849e8e4SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_create,
7174849e8e4SLukasz Wojciechowski sess, NULL, "%p");
7184849e8e4SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_create_exp, 0);
7194849e8e4SLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(0);
7204849e8e4SLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(0);
7214849e8e4SLukasz Wojciechowski
7224849e8e4SLukasz Wojciechowski return TEST_SUCCESS;
7234849e8e4SLukasz Wojciechowski }
7244849e8e4SLukasz Wojciechowski
7254849e8e4SLukasz Wojciechowski /**
7264849e8e4SLukasz Wojciechowski * Test execution of rte_security_session_create with NULL conf parameter
7274849e8e4SLukasz Wojciechowski */
7284849e8e4SLukasz Wojciechowski static int
test_session_create_inv_configuration(void)7294849e8e4SLukasz Wojciechowski test_session_create_inv_configuration(void)
7304849e8e4SLukasz Wojciechowski {
7314849e8e4SLukasz Wojciechowski struct security_testsuite_params *ts_params = &testsuite_params;
7324849e8e4SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
7332973dbf9SAkhil Goyal void *sess;
7344849e8e4SLukasz Wojciechowski
7354849e8e4SLukasz Wojciechowski sess = rte_security_session_create(&ut_params->ctx, NULL,
7363f3fc330SAkhil Goyal ts_params->session_mpool);
7374849e8e4SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_create,
7384849e8e4SLukasz Wojciechowski sess, NULL, "%p");
7394849e8e4SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_create_exp, 0);
7404849e8e4SLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(0);
7414849e8e4SLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(0);
7424849e8e4SLukasz Wojciechowski
7434849e8e4SLukasz Wojciechowski return TEST_SUCCESS;
7444849e8e4SLukasz Wojciechowski }
7454849e8e4SLukasz Wojciechowski
7464849e8e4SLukasz Wojciechowski /**
747e30b2833SAkhil Goyal * Test execution of rte_security_session_create with NULL session
748e30b2833SAkhil Goyal * mempool
7494849e8e4SLukasz Wojciechowski */
7504849e8e4SLukasz Wojciechowski static int
test_session_create_inv_mempool(void)7514849e8e4SLukasz Wojciechowski test_session_create_inv_mempool(void)
7524849e8e4SLukasz Wojciechowski {
7534849e8e4SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
7542973dbf9SAkhil Goyal void *sess;
7554849e8e4SLukasz Wojciechowski
7563f3fc330SAkhil Goyal sess = rte_security_session_create(&ut_params->ctx, &ut_params->conf, NULL);
7574849e8e4SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_create,
7584849e8e4SLukasz Wojciechowski sess, NULL, "%p");
7594849e8e4SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_create_exp, 0);
7604849e8e4SLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(0);
7614849e8e4SLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(0);
7624849e8e4SLukasz Wojciechowski
7634849e8e4SLukasz Wojciechowski return TEST_SUCCESS;
7644849e8e4SLukasz Wojciechowski }
7654849e8e4SLukasz Wojciechowski
7664849e8e4SLukasz Wojciechowski /**
7674849e8e4SLukasz Wojciechowski * Test execution of rte_security_session_create in case when mempool
7684849e8e4SLukasz Wojciechowski * is fully used and no object can be got from it
7694849e8e4SLukasz Wojciechowski */
7704849e8e4SLukasz Wojciechowski static int
test_session_create_mempool_empty(void)7714849e8e4SLukasz Wojciechowski test_session_create_mempool_empty(void)
7724849e8e4SLukasz Wojciechowski {
7734849e8e4SLukasz Wojciechowski struct security_testsuite_params *ts_params = &testsuite_params;
7744849e8e4SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
7752973dbf9SAkhil Goyal void *tmp[SECURITY_TEST_MEMPOOL_SIZE];
7762973dbf9SAkhil Goyal void *sess;
7774849e8e4SLukasz Wojciechowski
7784849e8e4SLukasz Wojciechowski /* Get all available objects from mempool. */
7794849e8e4SLukasz Wojciechowski int i, ret;
7804849e8e4SLukasz Wojciechowski for (i = 0; i < SECURITY_TEST_MEMPOOL_SIZE; ++i) {
7814849e8e4SLukasz Wojciechowski ret = rte_mempool_get(ts_params->session_mpool,
7824849e8e4SLukasz Wojciechowski (void **)(&tmp[i]));
7834849e8e4SLukasz Wojciechowski TEST_ASSERT_EQUAL(0, ret,
7844849e8e4SLukasz Wojciechowski "Expect getting %d object from mempool"
7854849e8e4SLukasz Wojciechowski " to succeed", i);
7864849e8e4SLukasz Wojciechowski }
7874849e8e4SLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(SECURITY_TEST_MEMPOOL_SIZE);
7884849e8e4SLukasz Wojciechowski
7894849e8e4SLukasz Wojciechowski sess = rte_security_session_create(&ut_params->ctx, &ut_params->conf,
7903f3fc330SAkhil Goyal ts_params->session_mpool);
7914849e8e4SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_create,
7924849e8e4SLukasz Wojciechowski sess, NULL, "%p");
7934849e8e4SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_create_exp, 0);
7944849e8e4SLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(SECURITY_TEST_MEMPOOL_SIZE);
7954849e8e4SLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(0);
7964849e8e4SLukasz Wojciechowski
7974849e8e4SLukasz Wojciechowski /* Put objects back to the pool. */
798e30b2833SAkhil Goyal for (i = 0; i < SECURITY_TEST_MEMPOOL_SIZE; ++i) {
799e30b2833SAkhil Goyal rte_mempool_put(ts_params->session_mpool,
800e30b2833SAkhil Goyal (void *)(tmp[i]));
801e30b2833SAkhil Goyal }
8024849e8e4SLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(0);
8034849e8e4SLukasz Wojciechowski
8044849e8e4SLukasz Wojciechowski return TEST_SUCCESS;
8054849e8e4SLukasz Wojciechowski }
8064849e8e4SLukasz Wojciechowski
8074849e8e4SLukasz Wojciechowski /**
8084849e8e4SLukasz Wojciechowski * Test execution of rte_security_session_create when session_create
8094849e8e4SLukasz Wojciechowski * security operation fails
8104849e8e4SLukasz Wojciechowski */
8114849e8e4SLukasz Wojciechowski static int
test_session_create_ops_failure(void)8124849e8e4SLukasz Wojciechowski test_session_create_ops_failure(void)
8134849e8e4SLukasz Wojciechowski {
8144849e8e4SLukasz Wojciechowski struct security_testsuite_params *ts_params = &testsuite_params;
8154849e8e4SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
8162973dbf9SAkhil Goyal void *sess;
8174849e8e4SLukasz Wojciechowski
8184849e8e4SLukasz Wojciechowski mock_session_create_exp.device = NULL;
8194849e8e4SLukasz Wojciechowski mock_session_create_exp.conf = &ut_params->conf;
8204849e8e4SLukasz Wojciechowski mock_session_create_exp.mp = ts_params->session_mpool;
8214849e8e4SLukasz Wojciechowski mock_session_create_exp.ret = -1; /* Return failure status. */
8224849e8e4SLukasz Wojciechowski
8234849e8e4SLukasz Wojciechowski sess = rte_security_session_create(&ut_params->ctx, &ut_params->conf,
8243f3fc330SAkhil Goyal ts_params->session_mpool);
8254849e8e4SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_create,
8264849e8e4SLukasz Wojciechowski sess, NULL, "%p");
8274849e8e4SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_create_exp, 1);
8284849e8e4SLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(0);
8294849e8e4SLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(0);
8304849e8e4SLukasz Wojciechowski
8314849e8e4SLukasz Wojciechowski return TEST_SUCCESS;
8324849e8e4SLukasz Wojciechowski }
8334849e8e4SLukasz Wojciechowski
8344849e8e4SLukasz Wojciechowski /**
8354849e8e4SLukasz Wojciechowski * Test execution of rte_security_session_create in successful execution path
8364849e8e4SLukasz Wojciechowski */
8374849e8e4SLukasz Wojciechowski static int
test_session_create_success(void)8384849e8e4SLukasz Wojciechowski test_session_create_success(void)
8394849e8e4SLukasz Wojciechowski {
8404849e8e4SLukasz Wojciechowski struct security_testsuite_params *ts_params = &testsuite_params;
8414849e8e4SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
8422973dbf9SAkhil Goyal void *sess;
8434849e8e4SLukasz Wojciechowski
8444849e8e4SLukasz Wojciechowski mock_session_create_exp.device = NULL;
8454849e8e4SLukasz Wojciechowski mock_session_create_exp.conf = &ut_params->conf;
8464849e8e4SLukasz Wojciechowski mock_session_create_exp.mp = ts_params->session_mpool;
8474849e8e4SLukasz Wojciechowski mock_session_create_exp.ret = 0; /* Return success status. */
8484849e8e4SLukasz Wojciechowski
8494849e8e4SLukasz Wojciechowski sess = rte_security_session_create(&ut_params->ctx, &ut_params->conf,
8503f3fc330SAkhil Goyal ts_params->session_mpool);
8514849e8e4SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_NOT_NULL(rte_security_session_create,
8524849e8e4SLukasz Wojciechowski sess);
8534849e8e4SLukasz Wojciechowski TEST_ASSERT_EQUAL(sess, mock_session_create_exp.sess,
8544849e8e4SLukasz Wojciechowski "Expecting session_create to be called with %p sess"
8554849e8e4SLukasz Wojciechowski " parameter, but it's called %p sess parameter",
8564849e8e4SLukasz Wojciechowski sess, mock_session_create_exp.sess);
8574849e8e4SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_create_exp, 1);
8584849e8e4SLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(1);
8594849e8e4SLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(1);
8604849e8e4SLukasz Wojciechowski
8614849e8e4SLukasz Wojciechowski /*
8624849e8e4SLukasz Wojciechowski * Store created session in test case parameters, so it can be released
8634849e8e4SLukasz Wojciechowski * after test case in ut_teardown by destroy_session_with_check.
8644849e8e4SLukasz Wojciechowski */
8654849e8e4SLukasz Wojciechowski ut_params->sess = sess;
8664849e8e4SLukasz Wojciechowski
8674849e8e4SLukasz Wojciechowski return TEST_SUCCESS;
8684849e8e4SLukasz Wojciechowski }
8694849e8e4SLukasz Wojciechowski
8704849e8e4SLukasz Wojciechowski
8714849e8e4SLukasz Wojciechowski /**
8720b124e04SLukasz Wojciechowski * rte_security_session_update tests
8730b124e04SLukasz Wojciechowski */
8740b124e04SLukasz Wojciechowski
8750b124e04SLukasz Wojciechowski /**
8760b124e04SLukasz Wojciechowski * Test execution of rte_security_session_update with NULL instance
8770b124e04SLukasz Wojciechowski */
8780b124e04SLukasz Wojciechowski static int
test_session_update_inv_context(void)8790b124e04SLukasz Wojciechowski test_session_update_inv_context(void)
8800b124e04SLukasz Wojciechowski {
8810b124e04SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
8820b124e04SLukasz Wojciechowski
8830b124e04SLukasz Wojciechowski int ret = rte_security_session_update(NULL, ut_params->sess,
8840b124e04SLukasz Wojciechowski &ut_params->conf);
8850b124e04SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_update,
8860b124e04SLukasz Wojciechowski ret, -EINVAL, "%d");
8870b124e04SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_update_exp, 0);
8880b124e04SLukasz Wojciechowski
8890b124e04SLukasz Wojciechowski return TEST_SUCCESS;
8900b124e04SLukasz Wojciechowski }
8910b124e04SLukasz Wojciechowski
8920b124e04SLukasz Wojciechowski /**
8930b124e04SLukasz Wojciechowski * Test execution of rte_security_session_update with invalid
8940b124e04SLukasz Wojciechowski * security operations structure (NULL)
8950b124e04SLukasz Wojciechowski */
8960b124e04SLukasz Wojciechowski static int
test_session_update_inv_context_ops(void)8970b124e04SLukasz Wojciechowski test_session_update_inv_context_ops(void)
8980b124e04SLukasz Wojciechowski {
8990b124e04SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
9000b124e04SLukasz Wojciechowski ut_params->ctx.ops = NULL;
9010b124e04SLukasz Wojciechowski
9020b124e04SLukasz Wojciechowski int ret = rte_security_session_update(&ut_params->ctx, ut_params->sess,
9030b124e04SLukasz Wojciechowski &ut_params->conf);
9040b124e04SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_update,
9050b124e04SLukasz Wojciechowski ret, -EINVAL, "%d");
9060b124e04SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_update_exp, 0);
9070b124e04SLukasz Wojciechowski
9080b124e04SLukasz Wojciechowski return TEST_SUCCESS;
9090b124e04SLukasz Wojciechowski }
9100b124e04SLukasz Wojciechowski
9110b124e04SLukasz Wojciechowski /**
9120b124e04SLukasz Wojciechowski * Test execution of rte_security_session_update with empty
9130b124e04SLukasz Wojciechowski * security operations
9140b124e04SLukasz Wojciechowski */
9150b124e04SLukasz Wojciechowski static int
test_session_update_inv_context_ops_fun(void)9160b124e04SLukasz Wojciechowski test_session_update_inv_context_ops_fun(void)
9170b124e04SLukasz Wojciechowski {
9180b124e04SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
9190b124e04SLukasz Wojciechowski ut_params->ctx.ops = &empty_ops;
9200b124e04SLukasz Wojciechowski
9210b124e04SLukasz Wojciechowski int ret = rte_security_session_update(&ut_params->ctx, ut_params->sess,
9220b124e04SLukasz Wojciechowski &ut_params->conf);
9230b124e04SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_update,
9240b124e04SLukasz Wojciechowski ret, -ENOTSUP, "%d");
9250b124e04SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_update_exp, 0);
9260b124e04SLukasz Wojciechowski
9270b124e04SLukasz Wojciechowski return TEST_SUCCESS;
9280b124e04SLukasz Wojciechowski }
9290b124e04SLukasz Wojciechowski
9300b124e04SLukasz Wojciechowski /**
9310b124e04SLukasz Wojciechowski * Test execution of rte_security_session_update with NULL conf parameter
9320b124e04SLukasz Wojciechowski */
9330b124e04SLukasz Wojciechowski static int
test_session_update_inv_configuration(void)9340b124e04SLukasz Wojciechowski test_session_update_inv_configuration(void)
9350b124e04SLukasz Wojciechowski {
9360b124e04SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
9370b124e04SLukasz Wojciechowski
9380b124e04SLukasz Wojciechowski int ret = rte_security_session_update(&ut_params->ctx, ut_params->sess,
9390b124e04SLukasz Wojciechowski NULL);
9400b124e04SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_update,
9410b124e04SLukasz Wojciechowski ret, -EINVAL, "%d");
9420b124e04SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_update_exp, 0);
9430b124e04SLukasz Wojciechowski
9440b124e04SLukasz Wojciechowski return TEST_SUCCESS;
9450b124e04SLukasz Wojciechowski }
9460b124e04SLukasz Wojciechowski
9470b124e04SLukasz Wojciechowski /**
9480b124e04SLukasz Wojciechowski * Test execution of rte_security_session_update with NULL sess parameter
9490b124e04SLukasz Wojciechowski */
9500b124e04SLukasz Wojciechowski static int
test_session_update_inv_session(void)9510b124e04SLukasz Wojciechowski test_session_update_inv_session(void)
9520b124e04SLukasz Wojciechowski {
9530b124e04SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
9540b124e04SLukasz Wojciechowski
9550b124e04SLukasz Wojciechowski int ret = rte_security_session_update(&ut_params->ctx, NULL,
9560b124e04SLukasz Wojciechowski &ut_params->conf);
9570b124e04SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_update,
9580b124e04SLukasz Wojciechowski ret, -EINVAL, "%d");
9590b124e04SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_update_exp, 0);
9600b124e04SLukasz Wojciechowski
9610b124e04SLukasz Wojciechowski return TEST_SUCCESS;
9620b124e04SLukasz Wojciechowski }
9630b124e04SLukasz Wojciechowski
9640b124e04SLukasz Wojciechowski /**
9650b124e04SLukasz Wojciechowski * Test execution of rte_security_session_update when session_update
9660b124e04SLukasz Wojciechowski * security operation fails
9670b124e04SLukasz Wojciechowski */
9680b124e04SLukasz Wojciechowski static int
test_session_update_ops_failure(void)9690b124e04SLukasz Wojciechowski test_session_update_ops_failure(void)
9700b124e04SLukasz Wojciechowski {
9710b124e04SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
9720b124e04SLukasz Wojciechowski
9730b124e04SLukasz Wojciechowski mock_session_update_exp.device = NULL;
9740b124e04SLukasz Wojciechowski mock_session_update_exp.sess = ut_params->sess;
9750b124e04SLukasz Wojciechowski mock_session_update_exp.conf = &ut_params->conf;
9760b124e04SLukasz Wojciechowski mock_session_update_exp.ret = -1; /* Return failure status. */
9770b124e04SLukasz Wojciechowski
9780b124e04SLukasz Wojciechowski int ret = rte_security_session_update(&ut_params->ctx, ut_params->sess,
9790b124e04SLukasz Wojciechowski &ut_params->conf);
9800b124e04SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_update,
9810b124e04SLukasz Wojciechowski ret, -1, "%d");
9820b124e04SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_update_exp, 1);
9830b124e04SLukasz Wojciechowski
9840b124e04SLukasz Wojciechowski return TEST_SUCCESS;
9850b124e04SLukasz Wojciechowski }
9860b124e04SLukasz Wojciechowski
9870b124e04SLukasz Wojciechowski /**
9880b124e04SLukasz Wojciechowski * Test execution of rte_security_session_update in successful execution path
9890b124e04SLukasz Wojciechowski */
9900b124e04SLukasz Wojciechowski static int
test_session_update_success(void)9910b124e04SLukasz Wojciechowski test_session_update_success(void)
9920b124e04SLukasz Wojciechowski {
9930b124e04SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
9940b124e04SLukasz Wojciechowski
9950b124e04SLukasz Wojciechowski mock_session_update_exp.device = NULL;
9960b124e04SLukasz Wojciechowski mock_session_update_exp.sess = ut_params->sess;
9970b124e04SLukasz Wojciechowski mock_session_update_exp.conf = &ut_params->conf;
9980b124e04SLukasz Wojciechowski mock_session_update_exp.ret = 0; /* Return success status. */
9990b124e04SLukasz Wojciechowski
10000b124e04SLukasz Wojciechowski int ret = rte_security_session_update(&ut_params->ctx, ut_params->sess,
10010b124e04SLukasz Wojciechowski &ut_params->conf);
10020b124e04SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_update,
10030b124e04SLukasz Wojciechowski ret, 0, "%d");
10040b124e04SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_update_exp, 1);
10050b124e04SLukasz Wojciechowski
10060b124e04SLukasz Wojciechowski return TEST_SUCCESS;
10070b124e04SLukasz Wojciechowski }
10080b124e04SLukasz Wojciechowski
10090b124e04SLukasz Wojciechowski
10100b124e04SLukasz Wojciechowski /**
1011226430f4SLukasz Wojciechowski * rte_security_session_get_size tests
1012226430f4SLukasz Wojciechowski */
1013226430f4SLukasz Wojciechowski
1014226430f4SLukasz Wojciechowski /**
1015226430f4SLukasz Wojciechowski * Test execution of rte_security_session_get_size with NULL instance
1016226430f4SLukasz Wojciechowski */
1017226430f4SLukasz Wojciechowski static int
test_session_get_size_inv_context(void)1018226430f4SLukasz Wojciechowski test_session_get_size_inv_context(void)
1019226430f4SLukasz Wojciechowski {
1020226430f4SLukasz Wojciechowski unsigned int ret = rte_security_session_get_size(NULL);
1021226430f4SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_get_size,
1022226430f4SLukasz Wojciechowski ret, 0, "%u");
10233f3fc330SAkhil Goyal TEST_ASSERT_MOCK_CALLS(mock_session_get_size_exp, 1);
1024226430f4SLukasz Wojciechowski
1025226430f4SLukasz Wojciechowski return TEST_SUCCESS;
1026226430f4SLukasz Wojciechowski }
1027226430f4SLukasz Wojciechowski
1028226430f4SLukasz Wojciechowski /**
1029226430f4SLukasz Wojciechowski * Test execution of rte_security_session_get_size with invalid
1030226430f4SLukasz Wojciechowski * security operations structure (NULL)
1031226430f4SLukasz Wojciechowski */
1032226430f4SLukasz Wojciechowski static int
test_session_get_size_inv_context_ops(void)1033226430f4SLukasz Wojciechowski test_session_get_size_inv_context_ops(void)
1034226430f4SLukasz Wojciechowski {
1035226430f4SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1036226430f4SLukasz Wojciechowski ut_params->ctx.ops = NULL;
1037226430f4SLukasz Wojciechowski
1038226430f4SLukasz Wojciechowski unsigned int ret = rte_security_session_get_size(&ut_params->ctx);
1039226430f4SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_get_size,
1040226430f4SLukasz Wojciechowski ret, 0, "%u");
10413f3fc330SAkhil Goyal TEST_ASSERT_MOCK_CALLS(mock_session_get_size_exp, 1);
1042226430f4SLukasz Wojciechowski
1043226430f4SLukasz Wojciechowski return TEST_SUCCESS;
1044226430f4SLukasz Wojciechowski }
1045226430f4SLukasz Wojciechowski
1046226430f4SLukasz Wojciechowski /**
1047226430f4SLukasz Wojciechowski * Test execution of rte_security_session_get_size with empty
1048226430f4SLukasz Wojciechowski * security operations
1049226430f4SLukasz Wojciechowski */
1050226430f4SLukasz Wojciechowski static int
test_session_get_size_inv_context_ops_fun(void)1051226430f4SLukasz Wojciechowski test_session_get_size_inv_context_ops_fun(void)
1052226430f4SLukasz Wojciechowski {
1053226430f4SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1054226430f4SLukasz Wojciechowski ut_params->ctx.ops = &empty_ops;
1055226430f4SLukasz Wojciechowski
1056226430f4SLukasz Wojciechowski unsigned int ret = rte_security_session_get_size(&ut_params->ctx);
1057226430f4SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_get_size,
1058226430f4SLukasz Wojciechowski ret, 0, "%u");
10593f3fc330SAkhil Goyal TEST_ASSERT_MOCK_CALLS(mock_session_get_size_exp, 1);
1060226430f4SLukasz Wojciechowski
1061226430f4SLukasz Wojciechowski return TEST_SUCCESS;
1062226430f4SLukasz Wojciechowski }
1063226430f4SLukasz Wojciechowski
1064226430f4SLukasz Wojciechowski /**
1065226430f4SLukasz Wojciechowski * Test execution of rte_security_session_get_size when session_get_size
1066226430f4SLukasz Wojciechowski * security operation fails
1067226430f4SLukasz Wojciechowski */
1068226430f4SLukasz Wojciechowski static int
test_session_get_size_ops_failure(void)1069226430f4SLukasz Wojciechowski test_session_get_size_ops_failure(void)
1070226430f4SLukasz Wojciechowski {
1071226430f4SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1072226430f4SLukasz Wojciechowski
1073226430f4SLukasz Wojciechowski mock_session_get_size_exp.device = NULL;
1074226430f4SLukasz Wojciechowski mock_session_get_size_exp.ret = 0;
1075226430f4SLukasz Wojciechowski
1076226430f4SLukasz Wojciechowski unsigned int ret = rte_security_session_get_size(&ut_params->ctx);
1077226430f4SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_get_size,
10783f3fc330SAkhil Goyal ret, 64, "%u");
10793f3fc330SAkhil Goyal TEST_ASSERT_MOCK_CALLS(mock_session_get_size_exp, 2);
1080226430f4SLukasz Wojciechowski
1081226430f4SLukasz Wojciechowski return TEST_SUCCESS;
1082226430f4SLukasz Wojciechowski }
1083226430f4SLukasz Wojciechowski
1084226430f4SLukasz Wojciechowski /**
1085226430f4SLukasz Wojciechowski * Test execution of rte_security_session_get_size in successful execution path
1086226430f4SLukasz Wojciechowski */
1087226430f4SLukasz Wojciechowski static int
test_session_get_size_success(void)1088226430f4SLukasz Wojciechowski test_session_get_size_success(void)
1089226430f4SLukasz Wojciechowski {
1090226430f4SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1091226430f4SLukasz Wojciechowski
1092226430f4SLukasz Wojciechowski mock_session_get_size_exp.device = NULL;
10933f3fc330SAkhil Goyal mock_session_get_size_exp.ret = 64;
1094226430f4SLukasz Wojciechowski
1095226430f4SLukasz Wojciechowski unsigned int ret = rte_security_session_get_size(&ut_params->ctx);
1096226430f4SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_get_size,
10973f3fc330SAkhil Goyal ret, 128U, "%u");
10983f3fc330SAkhil Goyal TEST_ASSERT_MOCK_CALLS(mock_session_get_size_exp, 2);
1099226430f4SLukasz Wojciechowski
1100226430f4SLukasz Wojciechowski return TEST_SUCCESS;
1101226430f4SLukasz Wojciechowski }
1102226430f4SLukasz Wojciechowski
1103226430f4SLukasz Wojciechowski
1104226430f4SLukasz Wojciechowski /**
11051e1a0e49SLukasz Wojciechowski * rte_security_session_stats_get tests
11061e1a0e49SLukasz Wojciechowski */
11071e1a0e49SLukasz Wojciechowski
11081e1a0e49SLukasz Wojciechowski /**
11091e1a0e49SLukasz Wojciechowski * Test execution of rte_security_session_stats_get with NULL instance
11101e1a0e49SLukasz Wojciechowski */
11111e1a0e49SLukasz Wojciechowski static int
test_session_stats_get_inv_context(void)11121e1a0e49SLukasz Wojciechowski test_session_stats_get_inv_context(void)
11131e1a0e49SLukasz Wojciechowski {
11141e1a0e49SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
11151e1a0e49SLukasz Wojciechowski struct rte_security_stats stats;
11161e1a0e49SLukasz Wojciechowski
11171e1a0e49SLukasz Wojciechowski int ret = rte_security_session_stats_get(NULL, ut_params->sess, &stats);
11181e1a0e49SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_stats_get,
11191e1a0e49SLukasz Wojciechowski ret, -EINVAL, "%d");
11201e1a0e49SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_stats_get_exp, 0);
11211e1a0e49SLukasz Wojciechowski
11221e1a0e49SLukasz Wojciechowski return TEST_SUCCESS;
11231e1a0e49SLukasz Wojciechowski }
11241e1a0e49SLukasz Wojciechowski
11251e1a0e49SLukasz Wojciechowski /**
11261e1a0e49SLukasz Wojciechowski * Test execution of rte_security_session_stats_get with invalid
11271e1a0e49SLukasz Wojciechowski * security operations structure (NULL)
11281e1a0e49SLukasz Wojciechowski */
11291e1a0e49SLukasz Wojciechowski static int
test_session_stats_get_inv_context_ops(void)11301e1a0e49SLukasz Wojciechowski test_session_stats_get_inv_context_ops(void)
11311e1a0e49SLukasz Wojciechowski {
11321e1a0e49SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
11331e1a0e49SLukasz Wojciechowski struct rte_security_stats stats;
11341e1a0e49SLukasz Wojciechowski ut_params->ctx.ops = NULL;
11351e1a0e49SLukasz Wojciechowski
11361e1a0e49SLukasz Wojciechowski int ret = rte_security_session_stats_get(&ut_params->ctx,
11371e1a0e49SLukasz Wojciechowski ut_params->sess, &stats);
11381e1a0e49SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_stats_get,
11391e1a0e49SLukasz Wojciechowski ret, -EINVAL, "%d");
11401e1a0e49SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_stats_get_exp, 0);
11411e1a0e49SLukasz Wojciechowski
11421e1a0e49SLukasz Wojciechowski return TEST_SUCCESS;
11431e1a0e49SLukasz Wojciechowski }
11441e1a0e49SLukasz Wojciechowski
11451e1a0e49SLukasz Wojciechowski /**
11461e1a0e49SLukasz Wojciechowski * Test execution of rte_security_session_stats_get with empty
11471e1a0e49SLukasz Wojciechowski * security operations
11481e1a0e49SLukasz Wojciechowski */
11491e1a0e49SLukasz Wojciechowski static int
test_session_stats_get_inv_context_ops_fun(void)11501e1a0e49SLukasz Wojciechowski test_session_stats_get_inv_context_ops_fun(void)
11511e1a0e49SLukasz Wojciechowski {
11521e1a0e49SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
11531e1a0e49SLukasz Wojciechowski struct rte_security_stats stats;
11541e1a0e49SLukasz Wojciechowski ut_params->ctx.ops = &empty_ops;
11551e1a0e49SLukasz Wojciechowski
11561e1a0e49SLukasz Wojciechowski int ret = rte_security_session_stats_get(&ut_params->ctx,
11571e1a0e49SLukasz Wojciechowski ut_params->sess, &stats);
11581e1a0e49SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_stats_get,
11591e1a0e49SLukasz Wojciechowski ret, -ENOTSUP, "%d");
11601e1a0e49SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_stats_get_exp, 0);
11611e1a0e49SLukasz Wojciechowski
11621e1a0e49SLukasz Wojciechowski return TEST_SUCCESS;
11631e1a0e49SLukasz Wojciechowski }
11641e1a0e49SLukasz Wojciechowski
11651e1a0e49SLukasz Wojciechowski /**
11661e1a0e49SLukasz Wojciechowski * Test execution of rte_security_session_stats_get with NULL stats parameter
11671e1a0e49SLukasz Wojciechowski */
11681e1a0e49SLukasz Wojciechowski static int
test_session_stats_get_inv_stats(void)11691e1a0e49SLukasz Wojciechowski test_session_stats_get_inv_stats(void)
11701e1a0e49SLukasz Wojciechowski {
11711e1a0e49SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
11721e1a0e49SLukasz Wojciechowski
11731e1a0e49SLukasz Wojciechowski int ret = rte_security_session_stats_get(&ut_params->ctx,
11741e1a0e49SLukasz Wojciechowski ut_params->sess, NULL);
11751e1a0e49SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_stats_get,
11761e1a0e49SLukasz Wojciechowski ret, -EINVAL, "%d");
11771e1a0e49SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_stats_get_exp, 0);
11781e1a0e49SLukasz Wojciechowski
11791e1a0e49SLukasz Wojciechowski return TEST_SUCCESS;
11801e1a0e49SLukasz Wojciechowski }
11811e1a0e49SLukasz Wojciechowski
11821e1a0e49SLukasz Wojciechowski /**
11831e1a0e49SLukasz Wojciechowski * Test execution of rte_security_session_stats_get when session_stats_get
11841e1a0e49SLukasz Wojciechowski * security operation fails
11851e1a0e49SLukasz Wojciechowski */
11861e1a0e49SLukasz Wojciechowski static int
test_session_stats_get_ops_failure(void)11871e1a0e49SLukasz Wojciechowski test_session_stats_get_ops_failure(void)
11881e1a0e49SLukasz Wojciechowski {
11891e1a0e49SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
11901e1a0e49SLukasz Wojciechowski struct rte_security_stats stats;
11911e1a0e49SLukasz Wojciechowski
11921e1a0e49SLukasz Wojciechowski mock_session_stats_get_exp.device = NULL;
11931e1a0e49SLukasz Wojciechowski mock_session_stats_get_exp.sess = ut_params->sess;
11941e1a0e49SLukasz Wojciechowski mock_session_stats_get_exp.stats = &stats;
11951e1a0e49SLukasz Wojciechowski mock_session_stats_get_exp.ret = -1;
11961e1a0e49SLukasz Wojciechowski
11971e1a0e49SLukasz Wojciechowski int ret = rte_security_session_stats_get(&ut_params->ctx,
11981e1a0e49SLukasz Wojciechowski ut_params->sess, &stats);
11991e1a0e49SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_stats_get,
12001e1a0e49SLukasz Wojciechowski ret, -1, "%d");
12011e1a0e49SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_stats_get_exp, 1);
12021e1a0e49SLukasz Wojciechowski
12031e1a0e49SLukasz Wojciechowski return TEST_SUCCESS;
12041e1a0e49SLukasz Wojciechowski }
12051e1a0e49SLukasz Wojciechowski
12061e1a0e49SLukasz Wojciechowski /**
12071e1a0e49SLukasz Wojciechowski * Test execution of rte_security_session_stats_get in successful execution
12081e1a0e49SLukasz Wojciechowski * path
12091e1a0e49SLukasz Wojciechowski */
12101e1a0e49SLukasz Wojciechowski static int
test_session_stats_get_success(void)12111e1a0e49SLukasz Wojciechowski test_session_stats_get_success(void)
12121e1a0e49SLukasz Wojciechowski {
12131e1a0e49SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
12141e1a0e49SLukasz Wojciechowski struct rte_security_stats stats;
12151e1a0e49SLukasz Wojciechowski
12161e1a0e49SLukasz Wojciechowski mock_session_stats_get_exp.device = NULL;
12171e1a0e49SLukasz Wojciechowski mock_session_stats_get_exp.sess = ut_params->sess;
12181e1a0e49SLukasz Wojciechowski mock_session_stats_get_exp.stats = &stats;
12191e1a0e49SLukasz Wojciechowski mock_session_stats_get_exp.ret = 0;
12201e1a0e49SLukasz Wojciechowski
12211e1a0e49SLukasz Wojciechowski int ret = rte_security_session_stats_get(&ut_params->ctx,
12221e1a0e49SLukasz Wojciechowski ut_params->sess, &stats);
12231e1a0e49SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_stats_get,
12241e1a0e49SLukasz Wojciechowski ret, 0, "%d");
12251e1a0e49SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_stats_get_exp, 1);
12261e1a0e49SLukasz Wojciechowski
12271e1a0e49SLukasz Wojciechowski return TEST_SUCCESS;
12281e1a0e49SLukasz Wojciechowski }
12291e1a0e49SLukasz Wojciechowski
12301e1a0e49SLukasz Wojciechowski
12311e1a0e49SLukasz Wojciechowski /**
123204631dafSLukasz Wojciechowski * rte_security_session_destroy tests
123304631dafSLukasz Wojciechowski */
123404631dafSLukasz Wojciechowski
123504631dafSLukasz Wojciechowski /**
123604631dafSLukasz Wojciechowski * Test execution of rte_security_session_destroy with NULL instance
123704631dafSLukasz Wojciechowski */
123804631dafSLukasz Wojciechowski static int
test_session_destroy_inv_context(void)123904631dafSLukasz Wojciechowski test_session_destroy_inv_context(void)
124004631dafSLukasz Wojciechowski {
124104631dafSLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
124204631dafSLukasz Wojciechowski
124304631dafSLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(1);
124404631dafSLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(1);
124504631dafSLukasz Wojciechowski
124604631dafSLukasz Wojciechowski int ret = rte_security_session_destroy(NULL, ut_params->sess);
124704631dafSLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_destroy,
124804631dafSLukasz Wojciechowski ret, -EINVAL, "%d");
124904631dafSLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_destroy_exp, 0);
125004631dafSLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(1);
125104631dafSLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(1);
125204631dafSLukasz Wojciechowski
125304631dafSLukasz Wojciechowski return TEST_SUCCESS;
125404631dafSLukasz Wojciechowski }
125504631dafSLukasz Wojciechowski
125604631dafSLukasz Wojciechowski /**
125704631dafSLukasz Wojciechowski * Test execution of rte_security_session_destroy with invalid
125804631dafSLukasz Wojciechowski * security operations structure (NULL)
125904631dafSLukasz Wojciechowski */
126004631dafSLukasz Wojciechowski static int
test_session_destroy_inv_context_ops(void)126104631dafSLukasz Wojciechowski test_session_destroy_inv_context_ops(void)
126204631dafSLukasz Wojciechowski {
126304631dafSLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
126404631dafSLukasz Wojciechowski ut_params->ctx.ops = NULL;
126504631dafSLukasz Wojciechowski
126604631dafSLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(1);
126704631dafSLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(1);
126804631dafSLukasz Wojciechowski
126904631dafSLukasz Wojciechowski int ret = rte_security_session_destroy(&ut_params->ctx,
127004631dafSLukasz Wojciechowski ut_params->sess);
127104631dafSLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_destroy,
127204631dafSLukasz Wojciechowski ret, -EINVAL, "%d");
127304631dafSLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_destroy_exp, 0);
127404631dafSLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(1);
127504631dafSLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(1);
127604631dafSLukasz Wojciechowski
127704631dafSLukasz Wojciechowski return TEST_SUCCESS;
127804631dafSLukasz Wojciechowski }
127904631dafSLukasz Wojciechowski
128004631dafSLukasz Wojciechowski /**
128104631dafSLukasz Wojciechowski * Test execution of rte_security_session_destroy with empty
128204631dafSLukasz Wojciechowski * security operations
128304631dafSLukasz Wojciechowski */
128404631dafSLukasz Wojciechowski static int
test_session_destroy_inv_context_ops_fun(void)128504631dafSLukasz Wojciechowski test_session_destroy_inv_context_ops_fun(void)
128604631dafSLukasz Wojciechowski {
128704631dafSLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
128804631dafSLukasz Wojciechowski ut_params->ctx.ops = &empty_ops;
128904631dafSLukasz Wojciechowski
129004631dafSLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(1);
129104631dafSLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(1);
129204631dafSLukasz Wojciechowski
129304631dafSLukasz Wojciechowski int ret = rte_security_session_destroy(&ut_params->ctx,
129404631dafSLukasz Wojciechowski ut_params->sess);
129504631dafSLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_destroy,
129604631dafSLukasz Wojciechowski ret, -ENOTSUP, "%d");
129704631dafSLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_destroy_exp, 0);
129804631dafSLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(1);
129904631dafSLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(1);
130004631dafSLukasz Wojciechowski
130104631dafSLukasz Wojciechowski return TEST_SUCCESS;
130204631dafSLukasz Wojciechowski }
130304631dafSLukasz Wojciechowski
130404631dafSLukasz Wojciechowski /**
130504631dafSLukasz Wojciechowski * Test execution of rte_security_session_destroy with NULL sess parameter
130604631dafSLukasz Wojciechowski */
130704631dafSLukasz Wojciechowski static int
test_session_destroy_inv_session(void)130804631dafSLukasz Wojciechowski test_session_destroy_inv_session(void)
130904631dafSLukasz Wojciechowski {
131004631dafSLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
131104631dafSLukasz Wojciechowski
131204631dafSLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(1);
131304631dafSLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(1);
131404631dafSLukasz Wojciechowski
131504631dafSLukasz Wojciechowski int ret = rte_security_session_destroy(&ut_params->ctx, NULL);
131604631dafSLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_destroy,
131704631dafSLukasz Wojciechowski ret, -EINVAL, "%d");
131804631dafSLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_destroy_exp, 0);
131904631dafSLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(1);
132004631dafSLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(1);
132104631dafSLukasz Wojciechowski
132204631dafSLukasz Wojciechowski return TEST_SUCCESS;
132304631dafSLukasz Wojciechowski }
132404631dafSLukasz Wojciechowski
132504631dafSLukasz Wojciechowski /**
132604631dafSLukasz Wojciechowski * Test execution of rte_security_session_destroy when session_destroy
132704631dafSLukasz Wojciechowski * security operation fails
132804631dafSLukasz Wojciechowski */
132904631dafSLukasz Wojciechowski static int
test_session_destroy_ops_failure(void)133004631dafSLukasz Wojciechowski test_session_destroy_ops_failure(void)
133104631dafSLukasz Wojciechowski {
133204631dafSLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
133304631dafSLukasz Wojciechowski
133404631dafSLukasz Wojciechowski mock_session_destroy_exp.device = NULL;
133504631dafSLukasz Wojciechowski mock_session_destroy_exp.sess = ut_params->sess;
133604631dafSLukasz Wojciechowski mock_session_destroy_exp.ret = -1;
133704631dafSLukasz Wojciechowski
133804631dafSLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(1);
133904631dafSLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(1);
134004631dafSLukasz Wojciechowski
134104631dafSLukasz Wojciechowski int ret = rte_security_session_destroy(&ut_params->ctx,
134204631dafSLukasz Wojciechowski ut_params->sess);
134304631dafSLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_destroy,
134404631dafSLukasz Wojciechowski ret, -1, "%d");
134504631dafSLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_destroy_exp, 1);
134604631dafSLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(1);
134704631dafSLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(1);
134804631dafSLukasz Wojciechowski
134904631dafSLukasz Wojciechowski return TEST_SUCCESS;
135004631dafSLukasz Wojciechowski }
135104631dafSLukasz Wojciechowski
135204631dafSLukasz Wojciechowski /**
135304631dafSLukasz Wojciechowski * Test execution of rte_security_session_destroy in successful execution path
135404631dafSLukasz Wojciechowski */
135504631dafSLukasz Wojciechowski static int
test_session_destroy_success(void)135604631dafSLukasz Wojciechowski test_session_destroy_success(void)
135704631dafSLukasz Wojciechowski {
135804631dafSLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
135904631dafSLukasz Wojciechowski
136004631dafSLukasz Wojciechowski mock_session_destroy_exp.device = NULL;
136104631dafSLukasz Wojciechowski mock_session_destroy_exp.sess = ut_params->sess;
136204631dafSLukasz Wojciechowski mock_session_destroy_exp.ret = 0;
136304631dafSLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(1);
136404631dafSLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(1);
136504631dafSLukasz Wojciechowski
136604631dafSLukasz Wojciechowski int ret = rte_security_session_destroy(&ut_params->ctx,
136704631dafSLukasz Wojciechowski ut_params->sess);
136804631dafSLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_destroy,
136904631dafSLukasz Wojciechowski ret, 0, "%d");
137004631dafSLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_session_destroy_exp, 1);
137104631dafSLukasz Wojciechowski TEST_ASSERT_MEMPOOL_USAGE(0);
137204631dafSLukasz Wojciechowski TEST_ASSERT_SESSION_COUNT(0);
137304631dafSLukasz Wojciechowski
137404631dafSLukasz Wojciechowski /*
137504631dafSLukasz Wojciechowski * Remove session from test case parameters, so it won't be destroyed
137604631dafSLukasz Wojciechowski * during test case teardown.
137704631dafSLukasz Wojciechowski */
137804631dafSLukasz Wojciechowski ut_params->sess = NULL;
137904631dafSLukasz Wojciechowski
138004631dafSLukasz Wojciechowski return TEST_SUCCESS;
138104631dafSLukasz Wojciechowski }
138204631dafSLukasz Wojciechowski
138304631dafSLukasz Wojciechowski
138404631dafSLukasz Wojciechowski /**
1385a9ff3522SLukasz Wojciechowski * rte_security_set_pkt_metadata tests
1386a9ff3522SLukasz Wojciechowski */
1387a9ff3522SLukasz Wojciechowski
1388a9ff3522SLukasz Wojciechowski /**
1389a9ff3522SLukasz Wojciechowski * Test execution of rte_security_set_pkt_metadata with NULL instance
1390a9ff3522SLukasz Wojciechowski */
1391a9ff3522SLukasz Wojciechowski static int
test_set_pkt_metadata_inv_context(void)1392a9ff3522SLukasz Wojciechowski test_set_pkt_metadata_inv_context(void)
1393a9ff3522SLukasz Wojciechowski {
1394a9ff3522SLukasz Wojciechowski #ifdef RTE_DEBUG
1395a9ff3522SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1396a9ff3522SLukasz Wojciechowski struct rte_mbuf m;
1397a9ff3522SLukasz Wojciechowski int params;
1398a9ff3522SLukasz Wojciechowski
1399a9ff3522SLukasz Wojciechowski int ret = rte_security_set_pkt_metadata(NULL, ut_params->sess, &m,
1400a9ff3522SLukasz Wojciechowski ¶ms);
1401a9ff3522SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_set_pkt_metadata,
1402a9ff3522SLukasz Wojciechowski ret, -EINVAL, "%d");
1403a9ff3522SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_set_pkt_metadata_exp, 0);
1404a9ff3522SLukasz Wojciechowski
1405a9ff3522SLukasz Wojciechowski return TEST_SUCCESS;
1406a9ff3522SLukasz Wojciechowski #else
1407a9ff3522SLukasz Wojciechowski return TEST_SKIPPED;
1408a9ff3522SLukasz Wojciechowski #endif
1409a9ff3522SLukasz Wojciechowski }
1410a9ff3522SLukasz Wojciechowski
1411a9ff3522SLukasz Wojciechowski /**
1412a9ff3522SLukasz Wojciechowski * Test execution of rte_security_set_pkt_metadata with invalid
1413a9ff3522SLukasz Wojciechowski * security operations structure (NULL)
1414a9ff3522SLukasz Wojciechowski */
1415a9ff3522SLukasz Wojciechowski static int
test_set_pkt_metadata_inv_context_ops(void)1416a9ff3522SLukasz Wojciechowski test_set_pkt_metadata_inv_context_ops(void)
1417a9ff3522SLukasz Wojciechowski {
1418a9ff3522SLukasz Wojciechowski #ifdef RTE_DEBUG
1419a9ff3522SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1420a9ff3522SLukasz Wojciechowski struct rte_mbuf m;
1421a9ff3522SLukasz Wojciechowski int params;
1422a9ff3522SLukasz Wojciechowski ut_params->ctx.ops = NULL;
1423a9ff3522SLukasz Wojciechowski
1424a9ff3522SLukasz Wojciechowski int ret = rte_security_set_pkt_metadata(&ut_params->ctx,
1425a9ff3522SLukasz Wojciechowski ut_params->sess, &m, ¶ms);
1426a9ff3522SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_set_pkt_metadata,
1427a9ff3522SLukasz Wojciechowski ret, -EINVAL, "%d");
1428a9ff3522SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_set_pkt_metadata_exp, 0);
1429a9ff3522SLukasz Wojciechowski
1430a9ff3522SLukasz Wojciechowski return TEST_SUCCESS;
1431a9ff3522SLukasz Wojciechowski #else
1432a9ff3522SLukasz Wojciechowski return TEST_SKIPPED;
1433a9ff3522SLukasz Wojciechowski #endif
1434a9ff3522SLukasz Wojciechowski }
1435a9ff3522SLukasz Wojciechowski
1436a9ff3522SLukasz Wojciechowski /**
1437a9ff3522SLukasz Wojciechowski * Test execution of rte_security_set_pkt_metadata with empty
1438a9ff3522SLukasz Wojciechowski * security operations
1439a9ff3522SLukasz Wojciechowski */
1440a9ff3522SLukasz Wojciechowski static int
test_set_pkt_metadata_inv_context_ops_fun(void)1441a9ff3522SLukasz Wojciechowski test_set_pkt_metadata_inv_context_ops_fun(void)
1442a9ff3522SLukasz Wojciechowski {
1443a9ff3522SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1444a9ff3522SLukasz Wojciechowski struct rte_mbuf m;
1445a9ff3522SLukasz Wojciechowski int params;
1446a9ff3522SLukasz Wojciechowski ut_params->ctx.ops = &empty_ops;
1447a9ff3522SLukasz Wojciechowski
1448a9ff3522SLukasz Wojciechowski int ret = rte_security_set_pkt_metadata(&ut_params->ctx,
1449a9ff3522SLukasz Wojciechowski ut_params->sess, &m, ¶ms);
1450a9ff3522SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_set_pkt_metadata,
1451a9ff3522SLukasz Wojciechowski ret, -ENOTSUP, "%d");
1452a9ff3522SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_set_pkt_metadata_exp, 0);
1453a9ff3522SLukasz Wojciechowski
1454a9ff3522SLukasz Wojciechowski return TEST_SUCCESS;
1455a9ff3522SLukasz Wojciechowski }
1456a9ff3522SLukasz Wojciechowski
1457a9ff3522SLukasz Wojciechowski /**
1458a9ff3522SLukasz Wojciechowski * Test execution of rte_security_set_pkt_metadata with NULL sess parameter
1459a9ff3522SLukasz Wojciechowski */
1460a9ff3522SLukasz Wojciechowski static int
test_set_pkt_metadata_inv_session(void)1461a9ff3522SLukasz Wojciechowski test_set_pkt_metadata_inv_session(void)
1462a9ff3522SLukasz Wojciechowski {
1463a9ff3522SLukasz Wojciechowski #ifdef RTE_DEBUG
1464a9ff3522SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1465a9ff3522SLukasz Wojciechowski struct rte_mbuf m;
1466a9ff3522SLukasz Wojciechowski int params;
1467a9ff3522SLukasz Wojciechowski
1468a9ff3522SLukasz Wojciechowski int ret = rte_security_set_pkt_metadata(&ut_params->ctx, NULL,
1469a9ff3522SLukasz Wojciechowski &m, ¶ms);
1470a9ff3522SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_set_pkt_metadata,
1471a9ff3522SLukasz Wojciechowski ret, -EINVAL, "%d");
1472a9ff3522SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_set_pkt_metadata_exp, 0);
1473a9ff3522SLukasz Wojciechowski
1474a9ff3522SLukasz Wojciechowski return TEST_SUCCESS;
1475a9ff3522SLukasz Wojciechowski #else
1476a9ff3522SLukasz Wojciechowski return TEST_SKIPPED;
1477a9ff3522SLukasz Wojciechowski #endif
1478a9ff3522SLukasz Wojciechowski }
1479a9ff3522SLukasz Wojciechowski
1480a9ff3522SLukasz Wojciechowski /**
1481a9ff3522SLukasz Wojciechowski * Test execution of rte_security_set_pkt_metadata when set_pkt_metadata
1482a9ff3522SLukasz Wojciechowski * security operation fails
1483a9ff3522SLukasz Wojciechowski */
1484a9ff3522SLukasz Wojciechowski static int
test_set_pkt_metadata_ops_failure(void)1485a9ff3522SLukasz Wojciechowski test_set_pkt_metadata_ops_failure(void)
1486a9ff3522SLukasz Wojciechowski {
1487a9ff3522SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1488a9ff3522SLukasz Wojciechowski struct rte_mbuf m;
1489a9ff3522SLukasz Wojciechowski int params;
1490a9ff3522SLukasz Wojciechowski
1491a9ff3522SLukasz Wojciechowski mock_set_pkt_metadata_exp.device = NULL;
1492a9ff3522SLukasz Wojciechowski mock_set_pkt_metadata_exp.sess = ut_params->sess;
1493a9ff3522SLukasz Wojciechowski mock_set_pkt_metadata_exp.m = &m;
1494a9ff3522SLukasz Wojciechowski mock_set_pkt_metadata_exp.params = ¶ms;
1495a9ff3522SLukasz Wojciechowski mock_set_pkt_metadata_exp.ret = -1;
1496a9ff3522SLukasz Wojciechowski
1497a9ff3522SLukasz Wojciechowski int ret = rte_security_set_pkt_metadata(&ut_params->ctx,
1498a9ff3522SLukasz Wojciechowski ut_params->sess, &m, ¶ms);
1499a9ff3522SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_set_pkt_metadata,
1500a9ff3522SLukasz Wojciechowski ret, -1, "%d");
1501a9ff3522SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_set_pkt_metadata_exp, 1);
1502a9ff3522SLukasz Wojciechowski
1503a9ff3522SLukasz Wojciechowski return TEST_SUCCESS;
1504a9ff3522SLukasz Wojciechowski }
1505a9ff3522SLukasz Wojciechowski
1506a9ff3522SLukasz Wojciechowski /**
1507a9ff3522SLukasz Wojciechowski * Test execution of rte_security_set_pkt_metadata in successful execution path
1508a9ff3522SLukasz Wojciechowski */
1509a9ff3522SLukasz Wojciechowski static int
test_set_pkt_metadata_success(void)1510a9ff3522SLukasz Wojciechowski test_set_pkt_metadata_success(void)
1511a9ff3522SLukasz Wojciechowski {
1512a9ff3522SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1513a9ff3522SLukasz Wojciechowski struct rte_mbuf m;
1514a9ff3522SLukasz Wojciechowski int params;
1515a9ff3522SLukasz Wojciechowski
1516a9ff3522SLukasz Wojciechowski mock_set_pkt_metadata_exp.device = NULL;
1517a9ff3522SLukasz Wojciechowski mock_set_pkt_metadata_exp.sess = ut_params->sess;
1518a9ff3522SLukasz Wojciechowski mock_set_pkt_metadata_exp.m = &m;
1519a9ff3522SLukasz Wojciechowski mock_set_pkt_metadata_exp.params = ¶ms;
1520a9ff3522SLukasz Wojciechowski mock_set_pkt_metadata_exp.ret = 0;
1521a9ff3522SLukasz Wojciechowski
1522a9ff3522SLukasz Wojciechowski int ret = rte_security_set_pkt_metadata(&ut_params->ctx,
1523a9ff3522SLukasz Wojciechowski ut_params->sess, &m, ¶ms);
1524a9ff3522SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_set_pkt_metadata,
1525a9ff3522SLukasz Wojciechowski ret, 0, "%d");
1526a9ff3522SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_set_pkt_metadata_exp, 1);
1527a9ff3522SLukasz Wojciechowski
1528a9ff3522SLukasz Wojciechowski return TEST_SUCCESS;
1529a9ff3522SLukasz Wojciechowski }
1530a9ff3522SLukasz Wojciechowski
15310cbd6711SLukasz Wojciechowski /**
15322242e701SLukasz Wojciechowski * rte_security_capabilities_get tests
15332242e701SLukasz Wojciechowski */
15342242e701SLukasz Wojciechowski
15352242e701SLukasz Wojciechowski /**
15362242e701SLukasz Wojciechowski * Test execution of rte_security_capabilities_get with NULL instance
15372242e701SLukasz Wojciechowski */
15382242e701SLukasz Wojciechowski static int
test_capabilities_get_inv_context(void)15392242e701SLukasz Wojciechowski test_capabilities_get_inv_context(void)
15402242e701SLukasz Wojciechowski {
15412242e701SLukasz Wojciechowski const struct rte_security_capability *ret;
15422242e701SLukasz Wojciechowski ret = rte_security_capabilities_get(NULL);
15432242e701SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capabilities_get,
15442242e701SLukasz Wojciechowski ret, NULL, "%p");
15452242e701SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 0);
15462242e701SLukasz Wojciechowski
15472242e701SLukasz Wojciechowski return TEST_SUCCESS;
15482242e701SLukasz Wojciechowski }
15492242e701SLukasz Wojciechowski
15502242e701SLukasz Wojciechowski /**
15512242e701SLukasz Wojciechowski * Test execution of rte_security_capabilities_get with invalid
15522242e701SLukasz Wojciechowski * security operations structure (NULL)
15532242e701SLukasz Wojciechowski */
15542242e701SLukasz Wojciechowski static int
test_capabilities_get_inv_context_ops(void)15552242e701SLukasz Wojciechowski test_capabilities_get_inv_context_ops(void)
15562242e701SLukasz Wojciechowski {
15572242e701SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
15582242e701SLukasz Wojciechowski ut_params->ctx.ops = NULL;
15592242e701SLukasz Wojciechowski
15602242e701SLukasz Wojciechowski const struct rte_security_capability *ret;
15612242e701SLukasz Wojciechowski ret = rte_security_capabilities_get(&ut_params->ctx);
15622242e701SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capabilities_get,
15632242e701SLukasz Wojciechowski ret, NULL, "%p");
15642242e701SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 0);
15652242e701SLukasz Wojciechowski
15662242e701SLukasz Wojciechowski return TEST_SUCCESS;
15672242e701SLukasz Wojciechowski }
15682242e701SLukasz Wojciechowski
15692242e701SLukasz Wojciechowski /**
15702242e701SLukasz Wojciechowski * Test execution of rte_security_capabilities_get with empty
15712242e701SLukasz Wojciechowski * security operations
15722242e701SLukasz Wojciechowski */
15732242e701SLukasz Wojciechowski static int
test_capabilities_get_inv_context_ops_fun(void)15742242e701SLukasz Wojciechowski test_capabilities_get_inv_context_ops_fun(void)
15752242e701SLukasz Wojciechowski {
15762242e701SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
15772242e701SLukasz Wojciechowski ut_params->ctx.ops = &empty_ops;
15782242e701SLukasz Wojciechowski
15792242e701SLukasz Wojciechowski const struct rte_security_capability *ret;
15802242e701SLukasz Wojciechowski ret = rte_security_capabilities_get(&ut_params->ctx);
15812242e701SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capabilities_get,
15822242e701SLukasz Wojciechowski ret, NULL, "%p");
15832242e701SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 0);
15842242e701SLukasz Wojciechowski
15852242e701SLukasz Wojciechowski return TEST_SUCCESS;
15862242e701SLukasz Wojciechowski }
15872242e701SLukasz Wojciechowski
15882242e701SLukasz Wojciechowski /**
15892242e701SLukasz Wojciechowski * Test execution of rte_security_capabilities_get when capabilities_get
15902242e701SLukasz Wojciechowski * security operation fails
15912242e701SLukasz Wojciechowski */
15922242e701SLukasz Wojciechowski static int
test_capabilities_get_ops_failure(void)15932242e701SLukasz Wojciechowski test_capabilities_get_ops_failure(void)
15942242e701SLukasz Wojciechowski {
15952242e701SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
15962242e701SLukasz Wojciechowski
15972242e701SLukasz Wojciechowski mock_capabilities_get_exp.device = NULL;
15982242e701SLukasz Wojciechowski mock_capabilities_get_exp.ret = NULL;
15992242e701SLukasz Wojciechowski
16002242e701SLukasz Wojciechowski const struct rte_security_capability *ret;
16012242e701SLukasz Wojciechowski ret = rte_security_capabilities_get(&ut_params->ctx);
16022242e701SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capabilities_get,
16032242e701SLukasz Wojciechowski ret, NULL, "%p");
16042242e701SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
16052242e701SLukasz Wojciechowski
16062242e701SLukasz Wojciechowski return TEST_SUCCESS;
16072242e701SLukasz Wojciechowski }
16082242e701SLukasz Wojciechowski
16092242e701SLukasz Wojciechowski /**
16102242e701SLukasz Wojciechowski * Test execution of rte_security_capabilities_get in successful execution path
16112242e701SLukasz Wojciechowski */
16122242e701SLukasz Wojciechowski static int
test_capabilities_get_success(void)16132242e701SLukasz Wojciechowski test_capabilities_get_success(void)
16142242e701SLukasz Wojciechowski {
16152242e701SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
16162242e701SLukasz Wojciechowski struct rte_security_capability capabilities;
16172242e701SLukasz Wojciechowski
16182242e701SLukasz Wojciechowski mock_capabilities_get_exp.device = NULL;
16192242e701SLukasz Wojciechowski mock_capabilities_get_exp.ret = &capabilities;
16202242e701SLukasz Wojciechowski
16212242e701SLukasz Wojciechowski const struct rte_security_capability *ret;
16222242e701SLukasz Wojciechowski ret = rte_security_capabilities_get(&ut_params->ctx);
16232242e701SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capabilities_get,
16242242e701SLukasz Wojciechowski ret, &capabilities, "%p");
16252242e701SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
16262242e701SLukasz Wojciechowski
16272242e701SLukasz Wojciechowski return TEST_SUCCESS;
16282242e701SLukasz Wojciechowski }
16292242e701SLukasz Wojciechowski
16302242e701SLukasz Wojciechowski
16312242e701SLukasz Wojciechowski /**
1632cca3eda1SLukasz Wojciechowski * rte_security_capability_get tests
1633cca3eda1SLukasz Wojciechowski */
1634cca3eda1SLukasz Wojciechowski
1635cca3eda1SLukasz Wojciechowski /**
1636cca3eda1SLukasz Wojciechowski * Test execution of rte_security_capability_get with NULL instance
1637cca3eda1SLukasz Wojciechowski */
1638cca3eda1SLukasz Wojciechowski static int
test_capability_get_inv_context(void)1639cca3eda1SLukasz Wojciechowski test_capability_get_inv_context(void)
1640cca3eda1SLukasz Wojciechowski {
1641cca3eda1SLukasz Wojciechowski struct rte_security_capability_idx idx;
1642cca3eda1SLukasz Wojciechowski
1643cca3eda1SLukasz Wojciechowski const struct rte_security_capability *ret;
1644cca3eda1SLukasz Wojciechowski ret = rte_security_capability_get(NULL, &idx);
1645cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
1646cca3eda1SLukasz Wojciechowski ret, NULL, "%p");
1647cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 0);
1648cca3eda1SLukasz Wojciechowski
1649cca3eda1SLukasz Wojciechowski return TEST_SUCCESS;
1650cca3eda1SLukasz Wojciechowski }
1651cca3eda1SLukasz Wojciechowski
1652cca3eda1SLukasz Wojciechowski /**
1653cca3eda1SLukasz Wojciechowski * Test execution of rte_security_capability_get with invalid
1654cca3eda1SLukasz Wojciechowski * security operations structure (NULL)
1655cca3eda1SLukasz Wojciechowski */
1656cca3eda1SLukasz Wojciechowski static int
test_capability_get_inv_context_ops(void)1657cca3eda1SLukasz Wojciechowski test_capability_get_inv_context_ops(void)
1658cca3eda1SLukasz Wojciechowski {
1659cca3eda1SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1660cca3eda1SLukasz Wojciechowski struct rte_security_capability_idx idx;
1661cca3eda1SLukasz Wojciechowski ut_params->ctx.ops = NULL;
1662cca3eda1SLukasz Wojciechowski
1663cca3eda1SLukasz Wojciechowski const struct rte_security_capability *ret;
1664cca3eda1SLukasz Wojciechowski ret = rte_security_capability_get(&ut_params->ctx, &idx);
1665cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
1666cca3eda1SLukasz Wojciechowski ret, NULL, "%p");
1667cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 0);
1668cca3eda1SLukasz Wojciechowski
1669cca3eda1SLukasz Wojciechowski return TEST_SUCCESS;
1670cca3eda1SLukasz Wojciechowski }
1671cca3eda1SLukasz Wojciechowski
1672cca3eda1SLukasz Wojciechowski /**
1673cca3eda1SLukasz Wojciechowski * Test execution of rte_security_capability_get with empty
1674cca3eda1SLukasz Wojciechowski * security operations
1675cca3eda1SLukasz Wojciechowski */
1676cca3eda1SLukasz Wojciechowski static int
test_capability_get_inv_context_ops_fun(void)1677cca3eda1SLukasz Wojciechowski test_capability_get_inv_context_ops_fun(void)
1678cca3eda1SLukasz Wojciechowski {
1679cca3eda1SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1680cca3eda1SLukasz Wojciechowski struct rte_security_capability_idx idx;
1681cca3eda1SLukasz Wojciechowski ut_params->ctx.ops = &empty_ops;
1682cca3eda1SLukasz Wojciechowski
1683cca3eda1SLukasz Wojciechowski const struct rte_security_capability *ret;
1684cca3eda1SLukasz Wojciechowski ret = rte_security_capability_get(&ut_params->ctx, &idx);
1685cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
1686cca3eda1SLukasz Wojciechowski ret, NULL, "%p");
1687cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 0);
1688cca3eda1SLukasz Wojciechowski
1689cca3eda1SLukasz Wojciechowski return TEST_SUCCESS;
1690cca3eda1SLukasz Wojciechowski }
1691cca3eda1SLukasz Wojciechowski
1692cca3eda1SLukasz Wojciechowski /**
1693cca3eda1SLukasz Wojciechowski * Test execution of rte_security_capability_get with NULL idx parameter
1694cca3eda1SLukasz Wojciechowski */
1695cca3eda1SLukasz Wojciechowski static int
test_capability_get_inv_idx(void)1696cca3eda1SLukasz Wojciechowski test_capability_get_inv_idx(void)
1697cca3eda1SLukasz Wojciechowski {
1698cca3eda1SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1699cca3eda1SLukasz Wojciechowski
1700cca3eda1SLukasz Wojciechowski const struct rte_security_capability *ret;
1701cca3eda1SLukasz Wojciechowski ret = rte_security_capability_get(&ut_params->ctx, NULL);
1702cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
1703cca3eda1SLukasz Wojciechowski ret, NULL, "%p");
1704cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 0);
1705cca3eda1SLukasz Wojciechowski
1706cca3eda1SLukasz Wojciechowski return TEST_SUCCESS;
1707cca3eda1SLukasz Wojciechowski }
1708cca3eda1SLukasz Wojciechowski
1709cca3eda1SLukasz Wojciechowski /**
1710cca3eda1SLukasz Wojciechowski * Test execution of rte_security_capability_get when capabilities_get
1711cca3eda1SLukasz Wojciechowski * security operation fails
1712cca3eda1SLukasz Wojciechowski */
1713cca3eda1SLukasz Wojciechowski static int
test_capability_get_ops_failure(void)1714cca3eda1SLukasz Wojciechowski test_capability_get_ops_failure(void)
1715cca3eda1SLukasz Wojciechowski {
1716cca3eda1SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1717cca3eda1SLukasz Wojciechowski struct rte_security_capability_idx idx;
1718cca3eda1SLukasz Wojciechowski
1719cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.device = NULL;
1720cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.ret = NULL;
1721cca3eda1SLukasz Wojciechowski
1722cca3eda1SLukasz Wojciechowski const struct rte_security_capability *ret;
1723cca3eda1SLukasz Wojciechowski ret = rte_security_capability_get(&ut_params->ctx, &idx);
1724cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
1725cca3eda1SLukasz Wojciechowski ret, NULL, "%p");
1726cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
1727cca3eda1SLukasz Wojciechowski
1728cca3eda1SLukasz Wojciechowski return TEST_SUCCESS;
1729cca3eda1SLukasz Wojciechowski }
1730cca3eda1SLukasz Wojciechowski
1731cca3eda1SLukasz Wojciechowski /**
1732cca3eda1SLukasz Wojciechowski * Test execution of rte_security_capability_get when capabilities table
1733cca3eda1SLukasz Wojciechowski * is empty (contains only RTE_SECURITY_ACTION_TYPE_NONE ending entry)
1734cca3eda1SLukasz Wojciechowski */
1735cca3eda1SLukasz Wojciechowski static int
test_capability_get_empty_table(void)1736cca3eda1SLukasz Wojciechowski test_capability_get_empty_table(void)
1737cca3eda1SLukasz Wojciechowski {
1738cca3eda1SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1739cca3eda1SLukasz Wojciechowski struct rte_security_capability_idx idx;
1740cca3eda1SLukasz Wojciechowski struct rte_security_capability capabilities[] = {
1741cca3eda1SLukasz Wojciechowski {
1742cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_NONE,
1743cca3eda1SLukasz Wojciechowski },
1744cca3eda1SLukasz Wojciechowski };
1745cca3eda1SLukasz Wojciechowski
1746cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.device = NULL;
1747cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.ret = capabilities;
1748cca3eda1SLukasz Wojciechowski
1749cca3eda1SLukasz Wojciechowski const struct rte_security_capability *ret;
1750cca3eda1SLukasz Wojciechowski ret = rte_security_capability_get(&ut_params->ctx, &idx);
1751cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
1752cca3eda1SLukasz Wojciechowski ret, NULL, "%p");
1753cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
1754cca3eda1SLukasz Wojciechowski
1755cca3eda1SLukasz Wojciechowski return TEST_SUCCESS;
1756cca3eda1SLukasz Wojciechowski }
1757cca3eda1SLukasz Wojciechowski
1758cca3eda1SLukasz Wojciechowski /**
1759cca3eda1SLukasz Wojciechowski * Test execution of rte_security_capability_get when capabilities table
1760cca3eda1SLukasz Wojciechowski * does not contain entry with matching action
1761cca3eda1SLukasz Wojciechowski */
1762cca3eda1SLukasz Wojciechowski static int
test_capability_get_no_matching_action(void)1763cca3eda1SLukasz Wojciechowski test_capability_get_no_matching_action(void)
1764cca3eda1SLukasz Wojciechowski {
1765cca3eda1SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1766cca3eda1SLukasz Wojciechowski struct rte_security_capability_idx idx = {
1767cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1768cca3eda1SLukasz Wojciechowski };
1769cca3eda1SLukasz Wojciechowski struct rte_security_capability capabilities[] = {
1770cca3eda1SLukasz Wojciechowski {
1771cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_INLINE_CRYPTO,
1772cca3eda1SLukasz Wojciechowski },
1773cca3eda1SLukasz Wojciechowski {
1774cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_INLINE_PROTOCOL,
1775cca3eda1SLukasz Wojciechowski },
1776cca3eda1SLukasz Wojciechowski {
1777cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_NONE,
1778cca3eda1SLukasz Wojciechowski },
1779cca3eda1SLukasz Wojciechowski };
1780cca3eda1SLukasz Wojciechowski
1781cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.device = NULL;
1782cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.ret = capabilities;
1783cca3eda1SLukasz Wojciechowski
1784cca3eda1SLukasz Wojciechowski const struct rte_security_capability *ret;
1785cca3eda1SLukasz Wojciechowski ret = rte_security_capability_get(&ut_params->ctx, &idx);
1786cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
1787cca3eda1SLukasz Wojciechowski ret, NULL, "%p");
1788cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
1789cca3eda1SLukasz Wojciechowski
1790cca3eda1SLukasz Wojciechowski return TEST_SUCCESS;
1791cca3eda1SLukasz Wojciechowski }
1792cca3eda1SLukasz Wojciechowski
1793cca3eda1SLukasz Wojciechowski /**
1794cca3eda1SLukasz Wojciechowski * Test execution of rte_security_capability_get when capabilities table
1795cca3eda1SLukasz Wojciechowski * does not contain entry with matching protocol
1796cca3eda1SLukasz Wojciechowski */
1797cca3eda1SLukasz Wojciechowski static int
test_capability_get_no_matching_protocol(void)1798cca3eda1SLukasz Wojciechowski test_capability_get_no_matching_protocol(void)
1799cca3eda1SLukasz Wojciechowski {
1800cca3eda1SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1801cca3eda1SLukasz Wojciechowski struct rte_security_capability_idx idx = {
1802cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1803cca3eda1SLukasz Wojciechowski .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
1804cca3eda1SLukasz Wojciechowski };
1805cca3eda1SLukasz Wojciechowski struct rte_security_capability capabilities[] = {
1806cca3eda1SLukasz Wojciechowski {
1807cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1808cca3eda1SLukasz Wojciechowski .protocol = RTE_SECURITY_PROTOCOL_MACSEC,
1809cca3eda1SLukasz Wojciechowski },
1810cca3eda1SLukasz Wojciechowski {
1811cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1812cca3eda1SLukasz Wojciechowski .protocol = RTE_SECURITY_PROTOCOL_PDCP,
1813cca3eda1SLukasz Wojciechowski },
1814cca3eda1SLukasz Wojciechowski {
1815cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_NONE,
1816cca3eda1SLukasz Wojciechowski },
1817cca3eda1SLukasz Wojciechowski };
1818cca3eda1SLukasz Wojciechowski
1819cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.device = NULL;
1820cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.ret = capabilities;
1821cca3eda1SLukasz Wojciechowski
1822cca3eda1SLukasz Wojciechowski const struct rte_security_capability *ret;
1823cca3eda1SLukasz Wojciechowski ret = rte_security_capability_get(&ut_params->ctx, &idx);
1824cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
1825cca3eda1SLukasz Wojciechowski ret, NULL, "%p");
1826cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
1827cca3eda1SLukasz Wojciechowski
1828cca3eda1SLukasz Wojciechowski return TEST_SUCCESS;
1829cca3eda1SLukasz Wojciechowski }
1830cca3eda1SLukasz Wojciechowski
1831cca3eda1SLukasz Wojciechowski /**
1832cca3eda1SLukasz Wojciechowski * Test execution of rte_security_capability_get when capabilities table
1833cca3eda1SLukasz Wojciechowski * does not contain entry with matching ipsec proto field
1834cca3eda1SLukasz Wojciechowski */
1835cca3eda1SLukasz Wojciechowski static int
test_capability_get_ipsec_mismatch_proto(void)1836cca3eda1SLukasz Wojciechowski test_capability_get_ipsec_mismatch_proto(void)
1837cca3eda1SLukasz Wojciechowski {
1838cca3eda1SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1839cca3eda1SLukasz Wojciechowski struct rte_security_capability_idx idx = {
1840cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1841cca3eda1SLukasz Wojciechowski .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
1842cca3eda1SLukasz Wojciechowski .ipsec = {
1843cca3eda1SLukasz Wojciechowski .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
1844cca3eda1SLukasz Wojciechowski },
1845cca3eda1SLukasz Wojciechowski };
1846cca3eda1SLukasz Wojciechowski struct rte_security_capability capabilities[] = {
1847cca3eda1SLukasz Wojciechowski {
1848cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1849cca3eda1SLukasz Wojciechowski .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
1850cca3eda1SLukasz Wojciechowski .ipsec = {
1851cca3eda1SLukasz Wojciechowski .proto = RTE_SECURITY_IPSEC_SA_PROTO_AH,
1852cca3eda1SLukasz Wojciechowski },
1853cca3eda1SLukasz Wojciechowski },
1854cca3eda1SLukasz Wojciechowski {
1855cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_NONE,
1856cca3eda1SLukasz Wojciechowski },
1857cca3eda1SLukasz Wojciechowski };
1858cca3eda1SLukasz Wojciechowski
1859cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.device = NULL;
1860cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.ret = capabilities;
1861cca3eda1SLukasz Wojciechowski
1862cca3eda1SLukasz Wojciechowski const struct rte_security_capability *ret;
1863cca3eda1SLukasz Wojciechowski ret = rte_security_capability_get(&ut_params->ctx, &idx);
1864cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
1865cca3eda1SLukasz Wojciechowski ret, NULL, "%p");
1866cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
1867cca3eda1SLukasz Wojciechowski
1868cca3eda1SLukasz Wojciechowski return TEST_SUCCESS;
1869cca3eda1SLukasz Wojciechowski }
1870cca3eda1SLukasz Wojciechowski
1871cca3eda1SLukasz Wojciechowski /**
1872cca3eda1SLukasz Wojciechowski * Test execution of rte_security_capability_get when capabilities table
1873cca3eda1SLukasz Wojciechowski * does not contain entry with matching ipsec mode field
1874cca3eda1SLukasz Wojciechowski */
1875cca3eda1SLukasz Wojciechowski static int
test_capability_get_ipsec_mismatch_mode(void)1876cca3eda1SLukasz Wojciechowski test_capability_get_ipsec_mismatch_mode(void)
1877cca3eda1SLukasz Wojciechowski {
1878cca3eda1SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1879cca3eda1SLukasz Wojciechowski struct rte_security_capability_idx idx = {
1880cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1881cca3eda1SLukasz Wojciechowski .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
1882cca3eda1SLukasz Wojciechowski .ipsec = {
1883cca3eda1SLukasz Wojciechowski .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
1884cca3eda1SLukasz Wojciechowski .mode = RTE_SECURITY_IPSEC_SA_MODE_TRANSPORT,
1885cca3eda1SLukasz Wojciechowski },
1886cca3eda1SLukasz Wojciechowski };
1887cca3eda1SLukasz Wojciechowski struct rte_security_capability capabilities[] = {
1888cca3eda1SLukasz Wojciechowski {
1889cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1890cca3eda1SLukasz Wojciechowski .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
1891cca3eda1SLukasz Wojciechowski .ipsec = {
1892cca3eda1SLukasz Wojciechowski .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
1893cca3eda1SLukasz Wojciechowski .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
1894cca3eda1SLukasz Wojciechowski },
1895cca3eda1SLukasz Wojciechowski },
1896cca3eda1SLukasz Wojciechowski {
1897cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_NONE,
1898cca3eda1SLukasz Wojciechowski },
1899cca3eda1SLukasz Wojciechowski };
1900cca3eda1SLukasz Wojciechowski
1901cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.device = NULL;
1902cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.ret = capabilities;
1903cca3eda1SLukasz Wojciechowski
1904cca3eda1SLukasz Wojciechowski const struct rte_security_capability *ret;
1905cca3eda1SLukasz Wojciechowski ret = rte_security_capability_get(&ut_params->ctx, &idx);
1906cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
1907cca3eda1SLukasz Wojciechowski ret, NULL, "%p");
1908cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
1909cca3eda1SLukasz Wojciechowski
1910cca3eda1SLukasz Wojciechowski return TEST_SUCCESS;
1911cca3eda1SLukasz Wojciechowski }
1912cca3eda1SLukasz Wojciechowski
1913cca3eda1SLukasz Wojciechowski /**
1914cca3eda1SLukasz Wojciechowski * Test execution of rte_security_capability_get when capabilities table
1915cca3eda1SLukasz Wojciechowski * does not contain entry with matching ipsec direction field
1916cca3eda1SLukasz Wojciechowski */
1917cca3eda1SLukasz Wojciechowski static int
test_capability_get_ipsec_mismatch_dir(void)1918cca3eda1SLukasz Wojciechowski test_capability_get_ipsec_mismatch_dir(void)
1919cca3eda1SLukasz Wojciechowski {
1920cca3eda1SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1921cca3eda1SLukasz Wojciechowski struct rte_security_capability_idx idx = {
1922cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1923cca3eda1SLukasz Wojciechowski .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
1924cca3eda1SLukasz Wojciechowski .ipsec = {
1925cca3eda1SLukasz Wojciechowski .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
1926cca3eda1SLukasz Wojciechowski .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
1927cca3eda1SLukasz Wojciechowski .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
1928cca3eda1SLukasz Wojciechowski },
1929cca3eda1SLukasz Wojciechowski };
1930cca3eda1SLukasz Wojciechowski struct rte_security_capability capabilities[] = {
1931cca3eda1SLukasz Wojciechowski {
1932cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1933cca3eda1SLukasz Wojciechowski .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
1934cca3eda1SLukasz Wojciechowski .ipsec = {
1935cca3eda1SLukasz Wojciechowski .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
1936cca3eda1SLukasz Wojciechowski .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
1937cca3eda1SLukasz Wojciechowski .direction = RTE_SECURITY_IPSEC_SA_DIR_INGRESS,
1938cca3eda1SLukasz Wojciechowski },
1939cca3eda1SLukasz Wojciechowski },
1940cca3eda1SLukasz Wojciechowski {
1941cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_NONE,
1942cca3eda1SLukasz Wojciechowski },
1943cca3eda1SLukasz Wojciechowski };
1944cca3eda1SLukasz Wojciechowski
1945cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.device = NULL;
1946cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.ret = capabilities;
1947cca3eda1SLukasz Wojciechowski
1948cca3eda1SLukasz Wojciechowski const struct rte_security_capability *ret;
1949cca3eda1SLukasz Wojciechowski ret = rte_security_capability_get(&ut_params->ctx, &idx);
1950cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
1951cca3eda1SLukasz Wojciechowski ret, NULL, "%p");
1952cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
1953cca3eda1SLukasz Wojciechowski
1954cca3eda1SLukasz Wojciechowski return TEST_SUCCESS;
1955cca3eda1SLukasz Wojciechowski }
1956cca3eda1SLukasz Wojciechowski
1957cca3eda1SLukasz Wojciechowski /**
1958cca3eda1SLukasz Wojciechowski * Test execution of rte_security_capability_get when capabilities table
1959cca3eda1SLukasz Wojciechowski * contains matching ipsec entry
1960cca3eda1SLukasz Wojciechowski */
1961cca3eda1SLukasz Wojciechowski static int
test_capability_get_ipsec_match(void)1962cca3eda1SLukasz Wojciechowski test_capability_get_ipsec_match(void)
1963cca3eda1SLukasz Wojciechowski {
1964cca3eda1SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
1965cca3eda1SLukasz Wojciechowski struct rte_security_capability_idx idx = {
1966cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1967cca3eda1SLukasz Wojciechowski .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
1968cca3eda1SLukasz Wojciechowski .ipsec = {
1969cca3eda1SLukasz Wojciechowski .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
1970cca3eda1SLukasz Wojciechowski .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
1971cca3eda1SLukasz Wojciechowski .direction = RTE_SECURITY_IPSEC_SA_DIR_INGRESS,
1972cca3eda1SLukasz Wojciechowski },
1973cca3eda1SLukasz Wojciechowski };
1974cca3eda1SLukasz Wojciechowski struct rte_security_capability capabilities[] = {
1975cca3eda1SLukasz Wojciechowski {
1976cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_INLINE_CRYPTO,
1977cca3eda1SLukasz Wojciechowski },
1978cca3eda1SLukasz Wojciechowski {
1979cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
1980cca3eda1SLukasz Wojciechowski .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
1981cca3eda1SLukasz Wojciechowski .ipsec = {
1982cca3eda1SLukasz Wojciechowski .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
1983cca3eda1SLukasz Wojciechowski .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
1984cca3eda1SLukasz Wojciechowski .direction = RTE_SECURITY_IPSEC_SA_DIR_INGRESS,
1985cca3eda1SLukasz Wojciechowski },
1986cca3eda1SLukasz Wojciechowski },
1987cca3eda1SLukasz Wojciechowski {
1988cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_NONE,
1989cca3eda1SLukasz Wojciechowski },
1990cca3eda1SLukasz Wojciechowski };
1991cca3eda1SLukasz Wojciechowski
1992cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.device = NULL;
1993cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.ret = capabilities;
1994cca3eda1SLukasz Wojciechowski
1995cca3eda1SLukasz Wojciechowski const struct rte_security_capability *ret;
1996cca3eda1SLukasz Wojciechowski ret = rte_security_capability_get(&ut_params->ctx, &idx);
1997cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
1998cca3eda1SLukasz Wojciechowski ret, &capabilities[1], "%p");
1999cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
2000cca3eda1SLukasz Wojciechowski
2001cca3eda1SLukasz Wojciechowski return TEST_SUCCESS;
2002cca3eda1SLukasz Wojciechowski }
2003cca3eda1SLukasz Wojciechowski
2004cca3eda1SLukasz Wojciechowski /**
2005cca3eda1SLukasz Wojciechowski * Test execution of rte_security_capability_get when capabilities table
2006cca3eda1SLukasz Wojciechowski * does not contain entry with matching pdcp domain field
2007cca3eda1SLukasz Wojciechowski */
2008cca3eda1SLukasz Wojciechowski static int
test_capability_get_pdcp_mismatch_domain(void)2009cca3eda1SLukasz Wojciechowski test_capability_get_pdcp_mismatch_domain(void)
2010cca3eda1SLukasz Wojciechowski {
2011cca3eda1SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
2012cca3eda1SLukasz Wojciechowski struct rte_security_capability_idx idx = {
2013cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2014cca3eda1SLukasz Wojciechowski .protocol = RTE_SECURITY_PROTOCOL_PDCP,
2015cca3eda1SLukasz Wojciechowski .pdcp = {
2016cca3eda1SLukasz Wojciechowski .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
2017cca3eda1SLukasz Wojciechowski },
2018cca3eda1SLukasz Wojciechowski };
2019cca3eda1SLukasz Wojciechowski struct rte_security_capability capabilities[] = {
2020cca3eda1SLukasz Wojciechowski {
2021cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2022cca3eda1SLukasz Wojciechowski .protocol = RTE_SECURITY_PROTOCOL_PDCP,
2023cca3eda1SLukasz Wojciechowski .pdcp = {
2024cca3eda1SLukasz Wojciechowski .domain = RTE_SECURITY_PDCP_MODE_DATA,
2025cca3eda1SLukasz Wojciechowski },
2026cca3eda1SLukasz Wojciechowski },
2027cca3eda1SLukasz Wojciechowski {
2028cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_NONE,
2029cca3eda1SLukasz Wojciechowski },
2030cca3eda1SLukasz Wojciechowski };
2031cca3eda1SLukasz Wojciechowski
2032cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.device = NULL;
2033cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.ret = capabilities;
2034cca3eda1SLukasz Wojciechowski
2035cca3eda1SLukasz Wojciechowski const struct rte_security_capability *ret;
2036cca3eda1SLukasz Wojciechowski ret = rte_security_capability_get(&ut_params->ctx, &idx);
2037cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
2038cca3eda1SLukasz Wojciechowski ret, NULL, "%p");
2039cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
2040cca3eda1SLukasz Wojciechowski
2041cca3eda1SLukasz Wojciechowski return TEST_SUCCESS;
2042cca3eda1SLukasz Wojciechowski }
2043cca3eda1SLukasz Wojciechowski
2044cca3eda1SLukasz Wojciechowski /**
2045cca3eda1SLukasz Wojciechowski * Test execution of rte_security_capability_get when capabilities table
2046cca3eda1SLukasz Wojciechowski * contains matching pdcp entry
2047cca3eda1SLukasz Wojciechowski */
2048cca3eda1SLukasz Wojciechowski static int
test_capability_get_pdcp_match(void)2049cca3eda1SLukasz Wojciechowski test_capability_get_pdcp_match(void)
2050cca3eda1SLukasz Wojciechowski {
2051cca3eda1SLukasz Wojciechowski struct security_unittest_params *ut_params = &unittest_params;
2052cca3eda1SLukasz Wojciechowski struct rte_security_capability_idx idx = {
2053cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2054cca3eda1SLukasz Wojciechowski .protocol = RTE_SECURITY_PROTOCOL_PDCP,
2055cca3eda1SLukasz Wojciechowski .pdcp = {
2056cca3eda1SLukasz Wojciechowski .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
2057cca3eda1SLukasz Wojciechowski },
2058cca3eda1SLukasz Wojciechowski };
2059cca3eda1SLukasz Wojciechowski struct rte_security_capability capabilities[] = {
2060cca3eda1SLukasz Wojciechowski {
2061cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_INLINE_CRYPTO,
2062cca3eda1SLukasz Wojciechowski },
2063cca3eda1SLukasz Wojciechowski {
2064cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2065cca3eda1SLukasz Wojciechowski .protocol = RTE_SECURITY_PROTOCOL_PDCP,
2066cca3eda1SLukasz Wojciechowski .pdcp = {
2067cca3eda1SLukasz Wojciechowski .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
2068cca3eda1SLukasz Wojciechowski },
2069cca3eda1SLukasz Wojciechowski },
2070cca3eda1SLukasz Wojciechowski {
2071cca3eda1SLukasz Wojciechowski .action = RTE_SECURITY_ACTION_TYPE_NONE,
2072cca3eda1SLukasz Wojciechowski },
2073cca3eda1SLukasz Wojciechowski };
2074cca3eda1SLukasz Wojciechowski
2075cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.device = NULL;
2076cca3eda1SLukasz Wojciechowski mock_capabilities_get_exp.ret = capabilities;
2077cca3eda1SLukasz Wojciechowski
2078cca3eda1SLukasz Wojciechowski const struct rte_security_capability *ret;
2079cca3eda1SLukasz Wojciechowski ret = rte_security_capability_get(&ut_params->ctx, &idx);
2080cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
2081cca3eda1SLukasz Wojciechowski ret, &capabilities[1], "%p");
2082cca3eda1SLukasz Wojciechowski TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
2083cca3eda1SLukasz Wojciechowski
2084cca3eda1SLukasz Wojciechowski return TEST_SUCCESS;
2085cca3eda1SLukasz Wojciechowski }
2086cca3eda1SLukasz Wojciechowski
2087cca3eda1SLukasz Wojciechowski /**
2088c6478fd5SDavid Coyle * Test execution of rte_security_capability_get when capabilities table
2089c6478fd5SDavid Coyle * does not contain entry with matching DOCSIS direction field
2090c6478fd5SDavid Coyle */
2091c6478fd5SDavid Coyle static int
test_capability_get_docsis_mismatch_direction(void)2092c6478fd5SDavid Coyle test_capability_get_docsis_mismatch_direction(void)
2093c6478fd5SDavid Coyle {
2094c6478fd5SDavid Coyle struct security_unittest_params *ut_params = &unittest_params;
2095c6478fd5SDavid Coyle struct rte_security_capability_idx idx = {
2096c6478fd5SDavid Coyle .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2097c6478fd5SDavid Coyle .protocol = RTE_SECURITY_PROTOCOL_DOCSIS,
2098c6478fd5SDavid Coyle .docsis = {
2099c6478fd5SDavid Coyle .direction = RTE_SECURITY_DOCSIS_DOWNLINK
2100c6478fd5SDavid Coyle },
2101c6478fd5SDavid Coyle };
2102c6478fd5SDavid Coyle struct rte_security_capability capabilities[] = {
2103c6478fd5SDavid Coyle {
2104c6478fd5SDavid Coyle .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2105c6478fd5SDavid Coyle .protocol = RTE_SECURITY_PROTOCOL_DOCSIS,
2106c6478fd5SDavid Coyle .docsis = {
2107c6478fd5SDavid Coyle .direction = RTE_SECURITY_DOCSIS_UPLINK
2108c6478fd5SDavid Coyle },
2109c6478fd5SDavid Coyle },
2110c6478fd5SDavid Coyle {
2111c6478fd5SDavid Coyle .action = RTE_SECURITY_ACTION_TYPE_NONE,
2112c6478fd5SDavid Coyle },
2113c6478fd5SDavid Coyle };
2114c6478fd5SDavid Coyle
2115c6478fd5SDavid Coyle mock_capabilities_get_exp.device = NULL;
2116c6478fd5SDavid Coyle mock_capabilities_get_exp.ret = capabilities;
2117c6478fd5SDavid Coyle
2118c6478fd5SDavid Coyle const struct rte_security_capability *ret;
2119c6478fd5SDavid Coyle ret = rte_security_capability_get(&ut_params->ctx, &idx);
2120c6478fd5SDavid Coyle TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
2121c6478fd5SDavid Coyle ret, NULL, "%p");
2122c6478fd5SDavid Coyle TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
2123c6478fd5SDavid Coyle
2124c6478fd5SDavid Coyle return TEST_SUCCESS;
2125c6478fd5SDavid Coyle }
2126c6478fd5SDavid Coyle
2127c6478fd5SDavid Coyle /**
2128c6478fd5SDavid Coyle * Test execution of rte_security_capability_get when capabilities table
2129c6478fd5SDavid Coyle * contains matching DOCSIS entry
2130c6478fd5SDavid Coyle */
2131c6478fd5SDavid Coyle static int
test_capability_get_docsis_match(void)2132c6478fd5SDavid Coyle test_capability_get_docsis_match(void)
2133c6478fd5SDavid Coyle {
2134c6478fd5SDavid Coyle struct security_unittest_params *ut_params = &unittest_params;
2135c6478fd5SDavid Coyle struct rte_security_capability_idx idx = {
2136c6478fd5SDavid Coyle .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2137c6478fd5SDavid Coyle .protocol = RTE_SECURITY_PROTOCOL_DOCSIS,
2138c6478fd5SDavid Coyle .docsis = {
2139c6478fd5SDavid Coyle .direction = RTE_SECURITY_DOCSIS_UPLINK
2140c6478fd5SDavid Coyle },
2141c6478fd5SDavid Coyle };
2142c6478fd5SDavid Coyle struct rte_security_capability capabilities[] = {
2143c6478fd5SDavid Coyle {
2144c6478fd5SDavid Coyle .action = RTE_SECURITY_ACTION_TYPE_INLINE_CRYPTO,
2145c6478fd5SDavid Coyle },
2146c6478fd5SDavid Coyle {
2147c6478fd5SDavid Coyle .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2148c6478fd5SDavid Coyle .protocol = RTE_SECURITY_PROTOCOL_DOCSIS,
2149c6478fd5SDavid Coyle .docsis = {
2150c6478fd5SDavid Coyle .direction = RTE_SECURITY_DOCSIS_UPLINK
2151c6478fd5SDavid Coyle },
2152c6478fd5SDavid Coyle },
2153c6478fd5SDavid Coyle {
2154c6478fd5SDavid Coyle .action = RTE_SECURITY_ACTION_TYPE_NONE,
2155c6478fd5SDavid Coyle },
2156c6478fd5SDavid Coyle };
2157c6478fd5SDavid Coyle
2158c6478fd5SDavid Coyle mock_capabilities_get_exp.device = NULL;
2159c6478fd5SDavid Coyle mock_capabilities_get_exp.ret = capabilities;
2160c6478fd5SDavid Coyle
2161c6478fd5SDavid Coyle const struct rte_security_capability *ret;
2162c6478fd5SDavid Coyle ret = rte_security_capability_get(&ut_params->ctx, &idx);
2163c6478fd5SDavid Coyle TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
2164c6478fd5SDavid Coyle ret, &capabilities[1], "%p");
2165c6478fd5SDavid Coyle TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
2166c6478fd5SDavid Coyle
2167c6478fd5SDavid Coyle return TEST_SUCCESS;
2168c6478fd5SDavid Coyle }
2169c6478fd5SDavid Coyle
2170c6478fd5SDavid Coyle /**
21714849e8e4SLukasz Wojciechowski * Declaration of testcases
21724849e8e4SLukasz Wojciechowski */
21734849e8e4SLukasz Wojciechowski static struct unit_test_suite security_testsuite = {
21744849e8e4SLukasz Wojciechowski .suite_name = "generic security",
21754849e8e4SLukasz Wojciechowski .setup = testsuite_setup,
21764849e8e4SLukasz Wojciechowski .teardown = testsuite_teardown,
21774849e8e4SLukasz Wojciechowski .unit_test_cases = {
21784849e8e4SLukasz Wojciechowski TEST_CASE_ST(ut_setup, ut_teardown,
21794849e8e4SLukasz Wojciechowski test_session_create_inv_context),
21804849e8e4SLukasz Wojciechowski TEST_CASE_ST(ut_setup, ut_teardown,
21814849e8e4SLukasz Wojciechowski test_session_create_inv_context_ops),
21824849e8e4SLukasz Wojciechowski TEST_CASE_ST(ut_setup, ut_teardown,
21834849e8e4SLukasz Wojciechowski test_session_create_inv_context_ops_fun),
21844849e8e4SLukasz Wojciechowski TEST_CASE_ST(ut_setup, ut_teardown,
21854849e8e4SLukasz Wojciechowski test_session_create_inv_configuration),
21864849e8e4SLukasz Wojciechowski TEST_CASE_ST(ut_setup, ut_teardown,
21874849e8e4SLukasz Wojciechowski test_session_create_inv_mempool),
21884849e8e4SLukasz Wojciechowski TEST_CASE_ST(ut_setup, ut_teardown,
21894849e8e4SLukasz Wojciechowski test_session_create_mempool_empty),
21904849e8e4SLukasz Wojciechowski TEST_CASE_ST(ut_setup, ut_teardown,
21914849e8e4SLukasz Wojciechowski test_session_create_ops_failure),
21924849e8e4SLukasz Wojciechowski TEST_CASE_ST(ut_setup, ut_teardown,
21934849e8e4SLukasz Wojciechowski test_session_create_success),
21944849e8e4SLukasz Wojciechowski
21950b124e04SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
21960b124e04SLukasz Wojciechowski test_session_update_inv_context),
21970b124e04SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
21980b124e04SLukasz Wojciechowski test_session_update_inv_context_ops),
21990b124e04SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
22000b124e04SLukasz Wojciechowski test_session_update_inv_context_ops_fun),
22010b124e04SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
22020b124e04SLukasz Wojciechowski test_session_update_inv_configuration),
22030b124e04SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
22040b124e04SLukasz Wojciechowski test_session_update_inv_session),
22050b124e04SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
22060b124e04SLukasz Wojciechowski test_session_update_ops_failure),
22070b124e04SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
22080b124e04SLukasz Wojciechowski test_session_update_success),
22090b124e04SLukasz Wojciechowski
2210226430f4SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2211226430f4SLukasz Wojciechowski test_session_get_size_inv_context),
2212226430f4SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2213226430f4SLukasz Wojciechowski test_session_get_size_inv_context_ops),
2214226430f4SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2215226430f4SLukasz Wojciechowski test_session_get_size_inv_context_ops_fun),
2216226430f4SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2217226430f4SLukasz Wojciechowski test_session_get_size_ops_failure),
2218226430f4SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2219226430f4SLukasz Wojciechowski test_session_get_size_success),
2220226430f4SLukasz Wojciechowski
22211e1a0e49SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
22221e1a0e49SLukasz Wojciechowski test_session_stats_get_inv_context),
22231e1a0e49SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
22241e1a0e49SLukasz Wojciechowski test_session_stats_get_inv_context_ops),
22251e1a0e49SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
22261e1a0e49SLukasz Wojciechowski test_session_stats_get_inv_context_ops_fun),
22271e1a0e49SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
22281e1a0e49SLukasz Wojciechowski test_session_stats_get_inv_stats),
22291e1a0e49SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
22301e1a0e49SLukasz Wojciechowski test_session_stats_get_ops_failure),
22311e1a0e49SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
22321e1a0e49SLukasz Wojciechowski test_session_stats_get_success),
22331e1a0e49SLukasz Wojciechowski
223404631dafSLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
223504631dafSLukasz Wojciechowski test_session_destroy_inv_context),
223604631dafSLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
223704631dafSLukasz Wojciechowski test_session_destroy_inv_context_ops),
223804631dafSLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
223904631dafSLukasz Wojciechowski test_session_destroy_inv_context_ops_fun),
224004631dafSLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
224104631dafSLukasz Wojciechowski test_session_destroy_inv_session),
224204631dafSLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
224304631dafSLukasz Wojciechowski test_session_destroy_ops_failure),
224404631dafSLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
224504631dafSLukasz Wojciechowski test_session_destroy_success),
224604631dafSLukasz Wojciechowski
2247a9ff3522SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2248a9ff3522SLukasz Wojciechowski test_set_pkt_metadata_inv_context),
2249a9ff3522SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2250a9ff3522SLukasz Wojciechowski test_set_pkt_metadata_inv_context_ops),
2251a9ff3522SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2252a9ff3522SLukasz Wojciechowski test_set_pkt_metadata_inv_context_ops_fun),
2253a9ff3522SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2254a9ff3522SLukasz Wojciechowski test_set_pkt_metadata_inv_session),
2255a9ff3522SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2256a9ff3522SLukasz Wojciechowski test_set_pkt_metadata_ops_failure),
2257a9ff3522SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2258a9ff3522SLukasz Wojciechowski test_set_pkt_metadata_success),
2259a9ff3522SLukasz Wojciechowski
22600cbd6711SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
22612242e701SLukasz Wojciechowski test_capabilities_get_inv_context),
22622242e701SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
22632242e701SLukasz Wojciechowski test_capabilities_get_inv_context_ops),
22642242e701SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
22652242e701SLukasz Wojciechowski test_capabilities_get_inv_context_ops_fun),
22662242e701SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
22672242e701SLukasz Wojciechowski test_capabilities_get_ops_failure),
22682242e701SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
22692242e701SLukasz Wojciechowski test_capabilities_get_success),
22702242e701SLukasz Wojciechowski
2271cca3eda1SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2272cca3eda1SLukasz Wojciechowski test_capability_get_inv_context),
2273cca3eda1SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2274cca3eda1SLukasz Wojciechowski test_capability_get_inv_context_ops),
2275cca3eda1SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2276cca3eda1SLukasz Wojciechowski test_capability_get_inv_context_ops_fun),
2277cca3eda1SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2278cca3eda1SLukasz Wojciechowski test_capability_get_inv_idx),
2279cca3eda1SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2280cca3eda1SLukasz Wojciechowski test_capability_get_ops_failure),
2281cca3eda1SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2282cca3eda1SLukasz Wojciechowski test_capability_get_empty_table),
2283cca3eda1SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2284cca3eda1SLukasz Wojciechowski test_capability_get_no_matching_action),
2285cca3eda1SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2286cca3eda1SLukasz Wojciechowski test_capability_get_no_matching_protocol),
2287cca3eda1SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2288cca3eda1SLukasz Wojciechowski test_capability_get_ipsec_mismatch_proto),
2289cca3eda1SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2290cca3eda1SLukasz Wojciechowski test_capability_get_ipsec_mismatch_mode),
2291cca3eda1SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2292cca3eda1SLukasz Wojciechowski test_capability_get_ipsec_mismatch_dir),
2293cca3eda1SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2294cca3eda1SLukasz Wojciechowski test_capability_get_ipsec_match),
2295cca3eda1SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2296cca3eda1SLukasz Wojciechowski test_capability_get_pdcp_mismatch_domain),
2297cca3eda1SLukasz Wojciechowski TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2298cca3eda1SLukasz Wojciechowski test_capability_get_pdcp_match),
2299c6478fd5SDavid Coyle TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2300c6478fd5SDavid Coyle test_capability_get_docsis_mismatch_direction),
2301c6478fd5SDavid Coyle TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2302c6478fd5SDavid Coyle test_capability_get_docsis_match),
2303cca3eda1SLukasz Wojciechowski
23044849e8e4SLukasz Wojciechowski TEST_CASES_END() /**< NULL terminate unit test array */
23054849e8e4SLukasz Wojciechowski }
23064849e8e4SLukasz Wojciechowski };
23074849e8e4SLukasz Wojciechowski
23084849e8e4SLukasz Wojciechowski static int
test_security(void)23094849e8e4SLukasz Wojciechowski test_security(void)
23104849e8e4SLukasz Wojciechowski {
23114849e8e4SLukasz Wojciechowski rte_log_set_global_level(RTE_LOG_DEBUG);
23124849e8e4SLukasz Wojciechowski rte_log_set_level(RTE_LOGTYPE_EAL, RTE_LOG_DEBUG);
23134849e8e4SLukasz Wojciechowski
23144849e8e4SLukasz Wojciechowski return unit_test_suite_runner(&security_testsuite);
23154849e8e4SLukasz Wojciechowski }
23164849e8e4SLukasz Wojciechowski
2317*e0a8442cSBruce Richardson REGISTER_FAST_TEST(security_autotest, false, true, test_security);
2318