1*2d9fd380Sjfb8856606 /* SPDX-License-Identifier: BSD-3-Clause
2*2d9fd380Sjfb8856606 * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
3*2d9fd380Sjfb8856606 */
4*2d9fd380Sjfb8856606
5*2d9fd380Sjfb8856606 #include <rte_errno.h>
6*2d9fd380Sjfb8856606 #include <rte_log.h>
7*2d9fd380Sjfb8856606 #include <rte_memory.h>
8*2d9fd380Sjfb8856606 #include <rte_mempool.h>
9*2d9fd380Sjfb8856606 #include <rte_ether.h>
10*2d9fd380Sjfb8856606 #include <rte_security.h>
11*2d9fd380Sjfb8856606 #include <rte_security_driver.h>
12*2d9fd380Sjfb8856606
13*2d9fd380Sjfb8856606 /* Before including rte_test.h file you can define
14*2d9fd380Sjfb8856606 * RTE_TEST_TRACE_FAILURE(_file, _line, _func) macro to better trace/debug test
15*2d9fd380Sjfb8856606 * failures. Mostly useful in development phase.
16*2d9fd380Sjfb8856606 */
17*2d9fd380Sjfb8856606 #ifndef RTE_TEST_TRACE_FAILURE
18*2d9fd380Sjfb8856606 #define RTE_TEST_TRACE_FAILURE(_file, _line, _func) \
19*2d9fd380Sjfb8856606 RTE_LOG(DEBUG, EAL, "in %s:%d %s\n", _file, _line, _func)
20*2d9fd380Sjfb8856606 #endif
21*2d9fd380Sjfb8856606
22*2d9fd380Sjfb8856606 #include <rte_test.h>
23*2d9fd380Sjfb8856606 #include "test.h"
24*2d9fd380Sjfb8856606
25*2d9fd380Sjfb8856606 /**
26*2d9fd380Sjfb8856606 * Security
27*2d9fd380Sjfb8856606 * =======
28*2d9fd380Sjfb8856606 *
29*2d9fd380Sjfb8856606 * Basic unit tests of the librte_security API.
30*2d9fd380Sjfb8856606 *
31*2d9fd380Sjfb8856606 * Structure of the file:
32*2d9fd380Sjfb8856606 * - macros for making tests more readable;
33*2d9fd380Sjfb8856606 * - mockup structures and functions for rte_security_ops;
34*2d9fd380Sjfb8856606 * - test suite and test cases setup and teardown functions;
35*2d9fd380Sjfb8856606 * - tests functions;
36*2d9fd380Sjfb8856606 * - declaration of testcases.
37*2d9fd380Sjfb8856606 */
38*2d9fd380Sjfb8856606
39*2d9fd380Sjfb8856606
40*2d9fd380Sjfb8856606 /**
41*2d9fd380Sjfb8856606 * Macros
42*2d9fd380Sjfb8856606 *
43*2d9fd380Sjfb8856606 * Set of macros for making tests easier to read.
44*2d9fd380Sjfb8856606 */
45*2d9fd380Sjfb8856606
46*2d9fd380Sjfb8856606 /**
47*2d9fd380Sjfb8856606 * Verify condition inside mocked up function.
48*2d9fd380Sjfb8856606 * Mockup function cannot return a test error, so the failure
49*2d9fd380Sjfb8856606 * of assertion increases counter and print logs.
50*2d9fd380Sjfb8856606 * The counter can be verified later to check if test case should fail.
51*2d9fd380Sjfb8856606 *
52*2d9fd380Sjfb8856606 * @param fail_counter fail counter
53*2d9fd380Sjfb8856606 * @param cond condition expected to be true
54*2d9fd380Sjfb8856606 * @param msg printf style formatting string for custom message
55*2d9fd380Sjfb8856606 */
56*2d9fd380Sjfb8856606 #define MOCK_TEST_ASSERT(fail_counter, cond, msg, ...) do { \
57*2d9fd380Sjfb8856606 if (!(cond)) { \
58*2d9fd380Sjfb8856606 fail_counter++; \
59*2d9fd380Sjfb8856606 RTE_LOG(DEBUG, EAL, "Test assert %s line %d failed: " \
60*2d9fd380Sjfb8856606 msg "\n", __func__, __LINE__, \
61*2d9fd380Sjfb8856606 ##__VA_ARGS__); \
62*2d9fd380Sjfb8856606 RTE_TEST_TRACE_FAILURE(__FILE__, __LINE__, __func__); \
63*2d9fd380Sjfb8856606 } \
64*2d9fd380Sjfb8856606 } while (0)
65*2d9fd380Sjfb8856606
66*2d9fd380Sjfb8856606 /**
67*2d9fd380Sjfb8856606 * Verify equality condition inside mocked up function.
68*2d9fd380Sjfb8856606 * Mockup function cannot return a test error, so the failure
69*2d9fd380Sjfb8856606 * of assertion increases counter and print logs.
70*2d9fd380Sjfb8856606 * The counter can be verified later to check if test case should fail.
71*2d9fd380Sjfb8856606 *
72*2d9fd380Sjfb8856606 * @param fail_counter fail counter
73*2d9fd380Sjfb8856606 * @param a first value of comparison
74*2d9fd380Sjfb8856606 * @param b second value of comparison
75*2d9fd380Sjfb8856606 * @param msg printf style formatting string for custom message
76*2d9fd380Sjfb8856606 */
77*2d9fd380Sjfb8856606 #define MOCK_TEST_ASSERT_EQUAL(fail_counter, a, b, msg, ...) \
78*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT(fail_counter, (a) == (b), msg, ##__VA_ARGS__)
79*2d9fd380Sjfb8856606
80*2d9fd380Sjfb8856606 /**
81*2d9fd380Sjfb8856606 * Verify not null condition inside mocked up function.
82*2d9fd380Sjfb8856606 * Mockup function cannot return a test error, so the failure
83*2d9fd380Sjfb8856606 * of assertion increases counter and print logs.
84*2d9fd380Sjfb8856606 * The counter can be verified later to check if test case should fail.
85*2d9fd380Sjfb8856606 *
86*2d9fd380Sjfb8856606 * @param fail_counter fail counter
87*2d9fd380Sjfb8856606 * @param val value expected not to be NULL
88*2d9fd380Sjfb8856606 * @param msg printf style formatting string for custom message
89*2d9fd380Sjfb8856606 */
90*2d9fd380Sjfb8856606 #define MOCK_TEST_ASSERT_NOT_NULL(fail_counter, val, msg, ...) \
91*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT(fail_counter, (val) != NULL, msg, ##__VA_ARGS__)
92*2d9fd380Sjfb8856606
93*2d9fd380Sjfb8856606
94*2d9fd380Sjfb8856606 /**
95*2d9fd380Sjfb8856606 * Verify if parameter of the mocked up function matches expected value.
96*2d9fd380Sjfb8856606 * The expected value is stored in data structure in the field matching
97*2d9fd380Sjfb8856606 * parameter name.
98*2d9fd380Sjfb8856606 *
99*2d9fd380Sjfb8856606 * @param data structure with expected values
100*2d9fd380Sjfb8856606 * @param parameter name of the parameter (both field and parameter name)
101*2d9fd380Sjfb8856606 * @param spec printf style spec for parameter
102*2d9fd380Sjfb8856606 */
103*2d9fd380Sjfb8856606 #define MOCK_TEST_ASSERT_PARAMETER(data, parameter, spec) \
104*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_EQUAL(data.failed, data.parameter, parameter, \
105*2d9fd380Sjfb8856606 "Expecting parameter %s to be " spec \
106*2d9fd380Sjfb8856606 " but it's " spec, RTE_STR(parameter), \
107*2d9fd380Sjfb8856606 data.parameter, parameter)
108*2d9fd380Sjfb8856606
109*2d9fd380Sjfb8856606 /**
110*2d9fd380Sjfb8856606 * Wrap for MOCK_TEST_ASSERT_PARAMETER macro for pointer type parameters.
111*2d9fd380Sjfb8856606 *
112*2d9fd380Sjfb8856606 * @param data structure with expected values
113*2d9fd380Sjfb8856606 * @param parameter name of the parameter (both field and parameter name)
114*2d9fd380Sjfb8856606 */
115*2d9fd380Sjfb8856606 #define MOCK_TEST_ASSERT_POINTER_PARAMETER(data, parameter) \
116*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_PARAMETER(data, parameter, "%p")
117*2d9fd380Sjfb8856606
118*2d9fd380Sjfb8856606 /**
119*2d9fd380Sjfb8856606 * Wrap for MOCK_TEST_ASSERT_PARAMETER macro for uint64_t type parameters.
120*2d9fd380Sjfb8856606 *
121*2d9fd380Sjfb8856606 * @param data structure with expected values
122*2d9fd380Sjfb8856606 * @param parameter name of the parameter (both field and parameter name)
123*2d9fd380Sjfb8856606 */
124*2d9fd380Sjfb8856606 #define MOCK_TEST_ASSERT_U64_PARAMETER(data, parameter) \
125*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_PARAMETER(data, parameter, "%" PRIu64)
126*2d9fd380Sjfb8856606
127*2d9fd380Sjfb8856606 /**
128*2d9fd380Sjfb8856606 * Verify number of calls of the mocked up function
129*2d9fd380Sjfb8856606 * and check if there were any fails during execution.
130*2d9fd380Sjfb8856606 * The fails statistics inside mocked up functions are collected
131*2d9fd380Sjfb8856606 * as "failed" field in mockup structures.
132*2d9fd380Sjfb8856606 *
133*2d9fd380Sjfb8856606 * @param mock_data structure with statistics (called, failed)
134*2d9fd380Sjfb8856606 * @param exp_calls expected number of mockup function calls
135*2d9fd380Sjfb8856606 */
136*2d9fd380Sjfb8856606 #define TEST_ASSERT_MOCK_CALLS(mock_data, exp_calls) do { \
137*2d9fd380Sjfb8856606 TEST_ASSERT_EQUAL(exp_calls, mock_data.called, \
138*2d9fd380Sjfb8856606 "Expecting sub op to be called %d times, " \
139*2d9fd380Sjfb8856606 "but it's called %d times", \
140*2d9fd380Sjfb8856606 exp_calls, mock_data.called); \
141*2d9fd380Sjfb8856606 TEST_ASSERT_EQUAL(0, mock_data.failed, \
142*2d9fd380Sjfb8856606 "Expecting sub op asserts not to fail, " \
143*2d9fd380Sjfb8856606 "but they're failed %d times", \
144*2d9fd380Sjfb8856606 mock_data.failed); \
145*2d9fd380Sjfb8856606 } while (0)
146*2d9fd380Sjfb8856606
147*2d9fd380Sjfb8856606 /**
148*2d9fd380Sjfb8856606 * Assert tested function result match expected value
149*2d9fd380Sjfb8856606 *
150*2d9fd380Sjfb8856606 * @param f_name name of tested function
151*2d9fd380Sjfb8856606 * @param f_ret value returned by the function
152*2d9fd380Sjfb8856606 * @param exp_ret expected returned value
153*2d9fd380Sjfb8856606 * @param fmt printf style format for returned value
154*2d9fd380Sjfb8856606 */
155*2d9fd380Sjfb8856606 #define TEST_ASSERT_MOCK_FUNCTION_CALL_RET(f_name, f_ret, exp_ret, fmt) \
156*2d9fd380Sjfb8856606 TEST_ASSERT_EQUAL(exp_ret, f_ret, "Expecting " RTE_STR(f_name) \
157*2d9fd380Sjfb8856606 " to return " fmt ", but it returned " fmt \
158*2d9fd380Sjfb8856606 "\n", exp_ret, f_ret)
159*2d9fd380Sjfb8856606
160*2d9fd380Sjfb8856606 /**
161*2d9fd380Sjfb8856606 * Assert tested function result is not NULL
162*2d9fd380Sjfb8856606 *
163*2d9fd380Sjfb8856606 * @param f_name name of tested function
164*2d9fd380Sjfb8856606 * @param f_ret value returned by the function
165*2d9fd380Sjfb8856606 */
166*2d9fd380Sjfb8856606 #define TEST_ASSERT_MOCK_FUNCTION_CALL_NOT_NULL(f_name, f_ret) \
167*2d9fd380Sjfb8856606 TEST_ASSERT_NOT_NULL(f_ret, "Expecting " RTE_STR(f_name) \
168*2d9fd380Sjfb8856606 " to return not NULL\n")
169*2d9fd380Sjfb8856606
170*2d9fd380Sjfb8856606 /**
171*2d9fd380Sjfb8856606 * Verify that sess_cnt counter value matches expected
172*2d9fd380Sjfb8856606 *
173*2d9fd380Sjfb8856606 * @param expected_sessions_count expected counter value
174*2d9fd380Sjfb8856606 */
175*2d9fd380Sjfb8856606 #define TEST_ASSERT_SESSION_COUNT(expected_sessions_count) do { \
176*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params; \
177*2d9fd380Sjfb8856606 TEST_ASSERT_EQUAL(expected_sessions_count, \
178*2d9fd380Sjfb8856606 ut_params->ctx.sess_cnt, \
179*2d9fd380Sjfb8856606 "Expecting session counter to be %u," \
180*2d9fd380Sjfb8856606 " but it's %u", expected_sessions_count, \
181*2d9fd380Sjfb8856606 ut_params->ctx.sess_cnt); \
182*2d9fd380Sjfb8856606 } while (0)
183*2d9fd380Sjfb8856606
184*2d9fd380Sjfb8856606 /**
185*2d9fd380Sjfb8856606 * Verify usage of mempool by checking if number of allocated objects matches
186*2d9fd380Sjfb8856606 * expectations. The mempool is used to manage objects for sessions data.
187*2d9fd380Sjfb8856606 * A single object is acquired from mempool during session_create
188*2d9fd380Sjfb8856606 * and put back in session_destroy.
189*2d9fd380Sjfb8856606 *
190*2d9fd380Sjfb8856606 * @param expected_mempool_usage expected number of used mempool objects
191*2d9fd380Sjfb8856606 */
192*2d9fd380Sjfb8856606 #define TEST_ASSERT_MEMPOOL_USAGE(expected_mempool_usage) do { \
193*2d9fd380Sjfb8856606 struct security_testsuite_params *ts_params = &testsuite_params;\
194*2d9fd380Sjfb8856606 unsigned int mempool_usage; \
195*2d9fd380Sjfb8856606 mempool_usage = rte_mempool_in_use_count( \
196*2d9fd380Sjfb8856606 ts_params->session_mpool); \
197*2d9fd380Sjfb8856606 TEST_ASSERT_EQUAL(expected_mempool_usage, mempool_usage, \
198*2d9fd380Sjfb8856606 "Expecting %u mempool allocations, " \
199*2d9fd380Sjfb8856606 "but there are %u allocated objects", \
200*2d9fd380Sjfb8856606 expected_mempool_usage, mempool_usage); \
201*2d9fd380Sjfb8856606 } while (0)
202*2d9fd380Sjfb8856606
203*2d9fd380Sjfb8856606 /**
204*2d9fd380Sjfb8856606 * Verify usage of mempool by checking if number of allocated objects matches
205*2d9fd380Sjfb8856606 * expectations. The mempool is used to manage objects for sessions priv data.
206*2d9fd380Sjfb8856606 * A single object is acquired from mempool during session_create
207*2d9fd380Sjfb8856606 * and put back in session_destroy.
208*2d9fd380Sjfb8856606 *
209*2d9fd380Sjfb8856606 * @param expected_priv_mp_usage expected number of used priv mp objects
210*2d9fd380Sjfb8856606 */
211*2d9fd380Sjfb8856606 #define TEST_ASSERT_PRIV_MP_USAGE(expected_priv_mp_usage) do { \
212*2d9fd380Sjfb8856606 struct security_testsuite_params *ts_params = &testsuite_params;\
213*2d9fd380Sjfb8856606 unsigned int priv_mp_usage; \
214*2d9fd380Sjfb8856606 priv_mp_usage = rte_mempool_in_use_count( \
215*2d9fd380Sjfb8856606 ts_params->session_priv_mpool); \
216*2d9fd380Sjfb8856606 TEST_ASSERT_EQUAL(expected_priv_mp_usage, priv_mp_usage, \
217*2d9fd380Sjfb8856606 "Expecting %u priv mempool allocations, " \
218*2d9fd380Sjfb8856606 "but there are %u allocated objects", \
219*2d9fd380Sjfb8856606 expected_priv_mp_usage, priv_mp_usage); \
220*2d9fd380Sjfb8856606 } while (0)
221*2d9fd380Sjfb8856606
222*2d9fd380Sjfb8856606 /**
223*2d9fd380Sjfb8856606 * Mockup structures and functions for rte_security_ops;
224*2d9fd380Sjfb8856606 *
225*2d9fd380Sjfb8856606 * Set of structures for controlling mockup functions calls.
226*2d9fd380Sjfb8856606 * Every mockup function X has its corresponding X_data structure
227*2d9fd380Sjfb8856606 * and an instance of that structure X_exp.
228*2d9fd380Sjfb8856606 * Structure contains parameters that a mockup function is expected
229*2d9fd380Sjfb8856606 * to be called with, a value to return (.ret) and 2 statistics:
230*2d9fd380Sjfb8856606 * .called (number of times the mockup function was called)
231*2d9fd380Sjfb8856606 * and .failed (number of assertion fails during mockup function call).
232*2d9fd380Sjfb8856606 *
233*2d9fd380Sjfb8856606 * Mockup functions verify that the parameters they are called with match
234*2d9fd380Sjfb8856606 * expected values. The expected values should be stored in corresponding
235*2d9fd380Sjfb8856606 * structures prior to mockup functions call. Every failure of such
236*2d9fd380Sjfb8856606 * verification increases .failed counter. Every call of mockup function
237*2d9fd380Sjfb8856606 * increases .called counter. Function returns value stored in .ret field
238*2d9fd380Sjfb8856606 * of the structure.
239*2d9fd380Sjfb8856606 * In case of some parameters in some functions the expected value is unknown
240*2d9fd380Sjfb8856606 * and cannot be detrmined prior to call. Such parameters are stored
241*2d9fd380Sjfb8856606 * in structure and can be compared or analyzed later in test case code.
242*2d9fd380Sjfb8856606 *
243*2d9fd380Sjfb8856606 * Below structures and functions follow the rules just described.
244*2d9fd380Sjfb8856606 * Additional remarks and exceptions are added in comments.
245*2d9fd380Sjfb8856606 */
246*2d9fd380Sjfb8856606
247*2d9fd380Sjfb8856606 /**
248*2d9fd380Sjfb8856606 * session_create mockup
249*2d9fd380Sjfb8856606 *
250*2d9fd380Sjfb8856606 * Verified parameters: device, conf, mp.
251*2d9fd380Sjfb8856606 * Saved, not verified parameters: sess.
252*2d9fd380Sjfb8856606 */
253*2d9fd380Sjfb8856606 static struct mock_session_create_data {
254*2d9fd380Sjfb8856606 void *device;
255*2d9fd380Sjfb8856606 struct rte_security_session_conf *conf;
256*2d9fd380Sjfb8856606 struct rte_security_session *sess;
257*2d9fd380Sjfb8856606 struct rte_mempool *mp;
258*2d9fd380Sjfb8856606 struct rte_mempool *priv_mp;
259*2d9fd380Sjfb8856606
260*2d9fd380Sjfb8856606 int ret;
261*2d9fd380Sjfb8856606
262*2d9fd380Sjfb8856606 int called;
263*2d9fd380Sjfb8856606 int failed;
264*2d9fd380Sjfb8856606 } mock_session_create_exp = {NULL, NULL, NULL, NULL, NULL, 0, 0, 0};
265*2d9fd380Sjfb8856606
266*2d9fd380Sjfb8856606 static int
mock_session_create(void * device,struct rte_security_session_conf * conf,struct rte_security_session * sess,struct rte_mempool * priv_mp)267*2d9fd380Sjfb8856606 mock_session_create(void *device,
268*2d9fd380Sjfb8856606 struct rte_security_session_conf *conf,
269*2d9fd380Sjfb8856606 struct rte_security_session *sess,
270*2d9fd380Sjfb8856606 struct rte_mempool *priv_mp)
271*2d9fd380Sjfb8856606 {
272*2d9fd380Sjfb8856606 void *sess_priv;
273*2d9fd380Sjfb8856606 int ret;
274*2d9fd380Sjfb8856606
275*2d9fd380Sjfb8856606 mock_session_create_exp.called++;
276*2d9fd380Sjfb8856606
277*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_create_exp, device);
278*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_create_exp, conf);
279*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_create_exp, priv_mp);
280*2d9fd380Sjfb8856606
281*2d9fd380Sjfb8856606 if (mock_session_create_exp.ret == 0) {
282*2d9fd380Sjfb8856606 ret = rte_mempool_get(priv_mp, &sess_priv);
283*2d9fd380Sjfb8856606 TEST_ASSERT_EQUAL(0, ret,
284*2d9fd380Sjfb8856606 "priv mempool does not have enough objects");
285*2d9fd380Sjfb8856606
286*2d9fd380Sjfb8856606 set_sec_session_private_data(sess, sess_priv);
287*2d9fd380Sjfb8856606 mock_session_create_exp.sess = sess;
288*2d9fd380Sjfb8856606 }
289*2d9fd380Sjfb8856606
290*2d9fd380Sjfb8856606 return mock_session_create_exp.ret;
291*2d9fd380Sjfb8856606 }
292*2d9fd380Sjfb8856606
293*2d9fd380Sjfb8856606 /**
294*2d9fd380Sjfb8856606 * session_update mockup
295*2d9fd380Sjfb8856606 *
296*2d9fd380Sjfb8856606 * Verified parameters: device, sess, conf.
297*2d9fd380Sjfb8856606 */
298*2d9fd380Sjfb8856606 static struct mock_session_update_data {
299*2d9fd380Sjfb8856606 void *device;
300*2d9fd380Sjfb8856606 struct rte_security_session *sess;
301*2d9fd380Sjfb8856606 struct rte_security_session_conf *conf;
302*2d9fd380Sjfb8856606
303*2d9fd380Sjfb8856606 int ret;
304*2d9fd380Sjfb8856606
305*2d9fd380Sjfb8856606 int called;
306*2d9fd380Sjfb8856606 int failed;
307*2d9fd380Sjfb8856606 } mock_session_update_exp = {NULL, NULL, NULL, 0, 0, 0};
308*2d9fd380Sjfb8856606
309*2d9fd380Sjfb8856606 static int
mock_session_update(void * device,struct rte_security_session * sess,struct rte_security_session_conf * conf)310*2d9fd380Sjfb8856606 mock_session_update(void *device,
311*2d9fd380Sjfb8856606 struct rte_security_session *sess,
312*2d9fd380Sjfb8856606 struct rte_security_session_conf *conf)
313*2d9fd380Sjfb8856606 {
314*2d9fd380Sjfb8856606 mock_session_update_exp.called++;
315*2d9fd380Sjfb8856606
316*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_update_exp, device);
317*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_update_exp, sess);
318*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_update_exp, conf);
319*2d9fd380Sjfb8856606
320*2d9fd380Sjfb8856606 return mock_session_update_exp.ret;
321*2d9fd380Sjfb8856606 }
322*2d9fd380Sjfb8856606
323*2d9fd380Sjfb8856606 /**
324*2d9fd380Sjfb8856606 * session_get_size mockup
325*2d9fd380Sjfb8856606 *
326*2d9fd380Sjfb8856606 * Verified parameters: device.
327*2d9fd380Sjfb8856606 */
328*2d9fd380Sjfb8856606 static struct mock_session_get_size_data {
329*2d9fd380Sjfb8856606 void *device;
330*2d9fd380Sjfb8856606
331*2d9fd380Sjfb8856606 unsigned int ret;
332*2d9fd380Sjfb8856606
333*2d9fd380Sjfb8856606 int called;
334*2d9fd380Sjfb8856606 int failed;
335*2d9fd380Sjfb8856606 } mock_session_get_size_exp = {NULL, 0U, 0, 0};
336*2d9fd380Sjfb8856606
337*2d9fd380Sjfb8856606 static unsigned int
mock_session_get_size(void * device)338*2d9fd380Sjfb8856606 mock_session_get_size(void *device)
339*2d9fd380Sjfb8856606 {
340*2d9fd380Sjfb8856606 mock_session_get_size_exp.called++;
341*2d9fd380Sjfb8856606
342*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_get_size_exp, device);
343*2d9fd380Sjfb8856606
344*2d9fd380Sjfb8856606 return mock_session_get_size_exp.ret;
345*2d9fd380Sjfb8856606 }
346*2d9fd380Sjfb8856606
347*2d9fd380Sjfb8856606 /**
348*2d9fd380Sjfb8856606 * session_stats_get mockup
349*2d9fd380Sjfb8856606 *
350*2d9fd380Sjfb8856606 * Verified parameters: device, sess, stats.
351*2d9fd380Sjfb8856606 */
352*2d9fd380Sjfb8856606 static struct mock_session_stats_get_data {
353*2d9fd380Sjfb8856606 void *device;
354*2d9fd380Sjfb8856606 struct rte_security_session *sess;
355*2d9fd380Sjfb8856606 struct rte_security_stats *stats;
356*2d9fd380Sjfb8856606
357*2d9fd380Sjfb8856606 int ret;
358*2d9fd380Sjfb8856606
359*2d9fd380Sjfb8856606 int called;
360*2d9fd380Sjfb8856606 int failed;
361*2d9fd380Sjfb8856606 } mock_session_stats_get_exp = {NULL, NULL, NULL, 0, 0, 0};
362*2d9fd380Sjfb8856606
363*2d9fd380Sjfb8856606 static int
mock_session_stats_get(void * device,struct rte_security_session * sess,struct rte_security_stats * stats)364*2d9fd380Sjfb8856606 mock_session_stats_get(void *device,
365*2d9fd380Sjfb8856606 struct rte_security_session *sess,
366*2d9fd380Sjfb8856606 struct rte_security_stats *stats)
367*2d9fd380Sjfb8856606 {
368*2d9fd380Sjfb8856606 mock_session_stats_get_exp.called++;
369*2d9fd380Sjfb8856606
370*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_stats_get_exp, device);
371*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_stats_get_exp, sess);
372*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_stats_get_exp, stats);
373*2d9fd380Sjfb8856606
374*2d9fd380Sjfb8856606 return mock_session_stats_get_exp.ret;
375*2d9fd380Sjfb8856606 }
376*2d9fd380Sjfb8856606
377*2d9fd380Sjfb8856606 /**
378*2d9fd380Sjfb8856606 * session_destroy mockup
379*2d9fd380Sjfb8856606 *
380*2d9fd380Sjfb8856606 * Verified parameters: device, sess.
381*2d9fd380Sjfb8856606 */
382*2d9fd380Sjfb8856606 static struct mock_session_destroy_data {
383*2d9fd380Sjfb8856606 void *device;
384*2d9fd380Sjfb8856606 struct rte_security_session *sess;
385*2d9fd380Sjfb8856606
386*2d9fd380Sjfb8856606 int ret;
387*2d9fd380Sjfb8856606
388*2d9fd380Sjfb8856606 int called;
389*2d9fd380Sjfb8856606 int failed;
390*2d9fd380Sjfb8856606 } mock_session_destroy_exp = {NULL, NULL, 0, 0, 0};
391*2d9fd380Sjfb8856606
392*2d9fd380Sjfb8856606 static int
mock_session_destroy(void * device,struct rte_security_session * sess)393*2d9fd380Sjfb8856606 mock_session_destroy(void *device, struct rte_security_session *sess)
394*2d9fd380Sjfb8856606 {
395*2d9fd380Sjfb8856606 void *sess_priv = get_sec_session_private_data(sess);
396*2d9fd380Sjfb8856606
397*2d9fd380Sjfb8856606 mock_session_destroy_exp.called++;
398*2d9fd380Sjfb8856606 if ((mock_session_destroy_exp.ret == 0) && (sess_priv != NULL)) {
399*2d9fd380Sjfb8856606 rte_mempool_put(rte_mempool_from_obj(sess_priv), sess_priv);
400*2d9fd380Sjfb8856606 set_sec_session_private_data(sess, NULL);
401*2d9fd380Sjfb8856606 }
402*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_destroy_exp, device);
403*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_session_destroy_exp, sess);
404*2d9fd380Sjfb8856606
405*2d9fd380Sjfb8856606 return mock_session_destroy_exp.ret;
406*2d9fd380Sjfb8856606 }
407*2d9fd380Sjfb8856606
408*2d9fd380Sjfb8856606 /**
409*2d9fd380Sjfb8856606 * set_pkt_metadata mockup
410*2d9fd380Sjfb8856606 *
411*2d9fd380Sjfb8856606 * Verified parameters: device, sess, m, params.
412*2d9fd380Sjfb8856606 */
413*2d9fd380Sjfb8856606 static struct mock_set_pkt_metadata_data {
414*2d9fd380Sjfb8856606 void *device;
415*2d9fd380Sjfb8856606 struct rte_security_session *sess;
416*2d9fd380Sjfb8856606 struct rte_mbuf *m;
417*2d9fd380Sjfb8856606 void *params;
418*2d9fd380Sjfb8856606
419*2d9fd380Sjfb8856606 int ret;
420*2d9fd380Sjfb8856606
421*2d9fd380Sjfb8856606 int called;
422*2d9fd380Sjfb8856606 int failed;
423*2d9fd380Sjfb8856606 } mock_set_pkt_metadata_exp = {NULL, NULL, NULL, NULL, 0, 0, 0};
424*2d9fd380Sjfb8856606
425*2d9fd380Sjfb8856606 static int
mock_set_pkt_metadata(void * device,struct rte_security_session * sess,struct rte_mbuf * m,void * params)426*2d9fd380Sjfb8856606 mock_set_pkt_metadata(void *device,
427*2d9fd380Sjfb8856606 struct rte_security_session *sess,
428*2d9fd380Sjfb8856606 struct rte_mbuf *m,
429*2d9fd380Sjfb8856606 void *params)
430*2d9fd380Sjfb8856606 {
431*2d9fd380Sjfb8856606 mock_set_pkt_metadata_exp.called++;
432*2d9fd380Sjfb8856606
433*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_set_pkt_metadata_exp, device);
434*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_set_pkt_metadata_exp, sess);
435*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_set_pkt_metadata_exp, m);
436*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_set_pkt_metadata_exp, params);
437*2d9fd380Sjfb8856606
438*2d9fd380Sjfb8856606 return mock_set_pkt_metadata_exp.ret;
439*2d9fd380Sjfb8856606 }
440*2d9fd380Sjfb8856606
441*2d9fd380Sjfb8856606 /**
442*2d9fd380Sjfb8856606 * get_userdata mockup
443*2d9fd380Sjfb8856606 *
444*2d9fd380Sjfb8856606 * Verified parameters: device, md.
445*2d9fd380Sjfb8856606 * The userdata parameter works as an output parameter, so a passed address
446*2d9fd380Sjfb8856606 * is verified not to be NULL and filled with userdata stored in structure.
447*2d9fd380Sjfb8856606 */
448*2d9fd380Sjfb8856606 static struct mock_get_userdata_data {
449*2d9fd380Sjfb8856606 void *device;
450*2d9fd380Sjfb8856606 uint64_t md;
451*2d9fd380Sjfb8856606 void *userdata;
452*2d9fd380Sjfb8856606
453*2d9fd380Sjfb8856606 int ret;
454*2d9fd380Sjfb8856606
455*2d9fd380Sjfb8856606 int called;
456*2d9fd380Sjfb8856606 int failed;
457*2d9fd380Sjfb8856606 } mock_get_userdata_exp = {NULL, 0UL, NULL, 0, 0, 0};
458*2d9fd380Sjfb8856606
459*2d9fd380Sjfb8856606 static int
mock_get_userdata(void * device,uint64_t md,void ** userdata)460*2d9fd380Sjfb8856606 mock_get_userdata(void *device,
461*2d9fd380Sjfb8856606 uint64_t md,
462*2d9fd380Sjfb8856606 void **userdata)
463*2d9fd380Sjfb8856606 {
464*2d9fd380Sjfb8856606 mock_get_userdata_exp.called++;
465*2d9fd380Sjfb8856606
466*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_get_userdata_exp, device);
467*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_U64_PARAMETER(mock_get_userdata_exp, md);
468*2d9fd380Sjfb8856606
469*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_NOT_NULL(mock_get_userdata_exp.failed,
470*2d9fd380Sjfb8856606 userdata,
471*2d9fd380Sjfb8856606 "Expecting parameter userdata not to be NULL but it's %p",
472*2d9fd380Sjfb8856606 userdata);
473*2d9fd380Sjfb8856606 *userdata = mock_get_userdata_exp.userdata;
474*2d9fd380Sjfb8856606
475*2d9fd380Sjfb8856606 return mock_get_userdata_exp.ret;
476*2d9fd380Sjfb8856606 }
477*2d9fd380Sjfb8856606
478*2d9fd380Sjfb8856606 /**
479*2d9fd380Sjfb8856606 * capabilities_get mockup
480*2d9fd380Sjfb8856606 *
481*2d9fd380Sjfb8856606 * Verified parameters: device.
482*2d9fd380Sjfb8856606 */
483*2d9fd380Sjfb8856606 static struct mock_capabilities_get_data {
484*2d9fd380Sjfb8856606 void *device;
485*2d9fd380Sjfb8856606
486*2d9fd380Sjfb8856606 struct rte_security_capability *ret;
487*2d9fd380Sjfb8856606
488*2d9fd380Sjfb8856606 int called;
489*2d9fd380Sjfb8856606 int failed;
490*2d9fd380Sjfb8856606 } mock_capabilities_get_exp = {NULL, NULL, 0, 0};
491*2d9fd380Sjfb8856606
492*2d9fd380Sjfb8856606 static const struct rte_security_capability *
mock_capabilities_get(void * device)493*2d9fd380Sjfb8856606 mock_capabilities_get(void *device)
494*2d9fd380Sjfb8856606 {
495*2d9fd380Sjfb8856606 mock_capabilities_get_exp.called++;
496*2d9fd380Sjfb8856606
497*2d9fd380Sjfb8856606 MOCK_TEST_ASSERT_POINTER_PARAMETER(mock_capabilities_get_exp, device);
498*2d9fd380Sjfb8856606
499*2d9fd380Sjfb8856606 return mock_capabilities_get_exp.ret;
500*2d9fd380Sjfb8856606 }
501*2d9fd380Sjfb8856606
502*2d9fd380Sjfb8856606 /**
503*2d9fd380Sjfb8856606 * empty_ops
504*2d9fd380Sjfb8856606 *
505*2d9fd380Sjfb8856606 * is an empty security operations set (all function pointers set to NULL)
506*2d9fd380Sjfb8856606 */
507*2d9fd380Sjfb8856606 struct rte_security_ops empty_ops = { NULL };
508*2d9fd380Sjfb8856606
509*2d9fd380Sjfb8856606 /**
510*2d9fd380Sjfb8856606 * mock_ops
511*2d9fd380Sjfb8856606 *
512*2d9fd380Sjfb8856606 * is a security operations set using mockup functions
513*2d9fd380Sjfb8856606 */
514*2d9fd380Sjfb8856606 struct rte_security_ops mock_ops = {
515*2d9fd380Sjfb8856606 .session_create = mock_session_create,
516*2d9fd380Sjfb8856606 .session_update = mock_session_update,
517*2d9fd380Sjfb8856606 .session_get_size = mock_session_get_size,
518*2d9fd380Sjfb8856606 .session_stats_get = mock_session_stats_get,
519*2d9fd380Sjfb8856606 .session_destroy = mock_session_destroy,
520*2d9fd380Sjfb8856606 .set_pkt_metadata = mock_set_pkt_metadata,
521*2d9fd380Sjfb8856606 .get_userdata = mock_get_userdata,
522*2d9fd380Sjfb8856606 .capabilities_get = mock_capabilities_get,
523*2d9fd380Sjfb8856606 };
524*2d9fd380Sjfb8856606
525*2d9fd380Sjfb8856606
526*2d9fd380Sjfb8856606 /**
527*2d9fd380Sjfb8856606 * Test suite and test cases setup and teardown functions.
528*2d9fd380Sjfb8856606 */
529*2d9fd380Sjfb8856606
530*2d9fd380Sjfb8856606 /**
531*2d9fd380Sjfb8856606 * struct security_testsuite_params defines parameters initialized once
532*2d9fd380Sjfb8856606 * for whole tests suite.
533*2d9fd380Sjfb8856606 * Currently the only stored parameter is session_mpool a mempool created
534*2d9fd380Sjfb8856606 * once in testsuite_setup and released in testsuite_teardown.
535*2d9fd380Sjfb8856606 * The instance of this structure is stored in testsuite_params variable.
536*2d9fd380Sjfb8856606 */
537*2d9fd380Sjfb8856606 static struct security_testsuite_params {
538*2d9fd380Sjfb8856606 struct rte_mempool *session_mpool;
539*2d9fd380Sjfb8856606 struct rte_mempool *session_priv_mpool;
540*2d9fd380Sjfb8856606 } testsuite_params = { NULL };
541*2d9fd380Sjfb8856606
542*2d9fd380Sjfb8856606 /**
543*2d9fd380Sjfb8856606 * struct security_unittest_params defines parameters initialized
544*2d9fd380Sjfb8856606 * for every test case. The parameters are initialized in ut_setup
545*2d9fd380Sjfb8856606 * or ut_setup_with_session (depending on the testcase)
546*2d9fd380Sjfb8856606 * and released in ut_teardown.
547*2d9fd380Sjfb8856606 * The instance of this structure is stored in unittest_params variable.
548*2d9fd380Sjfb8856606 */
549*2d9fd380Sjfb8856606 static struct security_unittest_params {
550*2d9fd380Sjfb8856606 struct rte_security_ctx ctx;
551*2d9fd380Sjfb8856606 struct rte_security_session_conf conf;
552*2d9fd380Sjfb8856606 struct rte_security_session *sess;
553*2d9fd380Sjfb8856606 } unittest_params = {
554*2d9fd380Sjfb8856606 .ctx = {
555*2d9fd380Sjfb8856606 .device = NULL,
556*2d9fd380Sjfb8856606 .ops = &mock_ops,
557*2d9fd380Sjfb8856606 .sess_cnt = 0,
558*2d9fd380Sjfb8856606 },
559*2d9fd380Sjfb8856606 .sess = NULL,
560*2d9fd380Sjfb8856606 };
561*2d9fd380Sjfb8856606
562*2d9fd380Sjfb8856606 #define SECURITY_TEST_MEMPOOL_NAME "SecurityTestMp"
563*2d9fd380Sjfb8856606 #define SECURITY_TEST_PRIV_MEMPOOL_NAME "SecurityTestPrivMp"
564*2d9fd380Sjfb8856606 #define SECURITY_TEST_MEMPOOL_SIZE 15
565*2d9fd380Sjfb8856606 #define SECURITY_TEST_SESSION_OBJ_SZ sizeof(struct rte_security_session)
566*2d9fd380Sjfb8856606 #define SECURITY_TEST_SESSION_PRIV_OBJ_SZ 64
567*2d9fd380Sjfb8856606
568*2d9fd380Sjfb8856606 /**
569*2d9fd380Sjfb8856606 * testsuite_setup initializes whole test suite parameters.
570*2d9fd380Sjfb8856606 * It creates a new mempool used in all test cases
571*2d9fd380Sjfb8856606 * and verifies if it properly created.
572*2d9fd380Sjfb8856606 */
573*2d9fd380Sjfb8856606 static int
testsuite_setup(void)574*2d9fd380Sjfb8856606 testsuite_setup(void)
575*2d9fd380Sjfb8856606 {
576*2d9fd380Sjfb8856606 struct security_testsuite_params *ts_params = &testsuite_params;
577*2d9fd380Sjfb8856606 ts_params->session_mpool = rte_mempool_create(
578*2d9fd380Sjfb8856606 SECURITY_TEST_MEMPOOL_NAME,
579*2d9fd380Sjfb8856606 SECURITY_TEST_MEMPOOL_SIZE,
580*2d9fd380Sjfb8856606 SECURITY_TEST_SESSION_OBJ_SZ,
581*2d9fd380Sjfb8856606 0, 0, NULL, NULL, NULL, NULL,
582*2d9fd380Sjfb8856606 SOCKET_ID_ANY, 0);
583*2d9fd380Sjfb8856606 TEST_ASSERT_NOT_NULL(ts_params->session_mpool,
584*2d9fd380Sjfb8856606 "Cannot create mempool %s\n", rte_strerror(rte_errno));
585*2d9fd380Sjfb8856606
586*2d9fd380Sjfb8856606 ts_params->session_priv_mpool = rte_mempool_create(
587*2d9fd380Sjfb8856606 SECURITY_TEST_PRIV_MEMPOOL_NAME,
588*2d9fd380Sjfb8856606 SECURITY_TEST_MEMPOOL_SIZE,
589*2d9fd380Sjfb8856606 SECURITY_TEST_SESSION_PRIV_OBJ_SZ,
590*2d9fd380Sjfb8856606 0, 0, NULL, NULL, NULL, NULL,
591*2d9fd380Sjfb8856606 SOCKET_ID_ANY, 0);
592*2d9fd380Sjfb8856606 if (ts_params->session_priv_mpool == NULL) {
593*2d9fd380Sjfb8856606 RTE_LOG(ERR, USER1, "TestCase %s() line %d failed (null): "
594*2d9fd380Sjfb8856606 "Cannot create priv mempool %s\n",
595*2d9fd380Sjfb8856606 __func__, __LINE__, rte_strerror(rte_errno));
596*2d9fd380Sjfb8856606 rte_mempool_free(ts_params->session_mpool);
597*2d9fd380Sjfb8856606 ts_params->session_mpool = NULL;
598*2d9fd380Sjfb8856606 return TEST_FAILED;
599*2d9fd380Sjfb8856606 }
600*2d9fd380Sjfb8856606
601*2d9fd380Sjfb8856606 return TEST_SUCCESS;
602*2d9fd380Sjfb8856606 }
603*2d9fd380Sjfb8856606
604*2d9fd380Sjfb8856606 /**
605*2d9fd380Sjfb8856606 * testsuite_teardown releases test suite wide parameters.
606*2d9fd380Sjfb8856606 */
607*2d9fd380Sjfb8856606 static void
testsuite_teardown(void)608*2d9fd380Sjfb8856606 testsuite_teardown(void)
609*2d9fd380Sjfb8856606 {
610*2d9fd380Sjfb8856606 struct security_testsuite_params *ts_params = &testsuite_params;
611*2d9fd380Sjfb8856606 if (ts_params->session_mpool) {
612*2d9fd380Sjfb8856606 rte_mempool_free(ts_params->session_mpool);
613*2d9fd380Sjfb8856606 ts_params->session_mpool = NULL;
614*2d9fd380Sjfb8856606 }
615*2d9fd380Sjfb8856606 if (ts_params->session_priv_mpool) {
616*2d9fd380Sjfb8856606 rte_mempool_free(ts_params->session_priv_mpool);
617*2d9fd380Sjfb8856606 ts_params->session_priv_mpool = NULL;
618*2d9fd380Sjfb8856606 }
619*2d9fd380Sjfb8856606 }
620*2d9fd380Sjfb8856606
621*2d9fd380Sjfb8856606 /**
622*2d9fd380Sjfb8856606 * ut_setup initializes test case parameters to default values.
623*2d9fd380Sjfb8856606 * It resets also any .called and .failed statistics of mockup functions
624*2d9fd380Sjfb8856606 * usage.
625*2d9fd380Sjfb8856606 */
626*2d9fd380Sjfb8856606 static int
ut_setup(void)627*2d9fd380Sjfb8856606 ut_setup(void)
628*2d9fd380Sjfb8856606 {
629*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
630*2d9fd380Sjfb8856606 ut_params->ctx.device = NULL;
631*2d9fd380Sjfb8856606 ut_params->ctx.ops = &mock_ops;
632*2d9fd380Sjfb8856606 ut_params->ctx.sess_cnt = 0;
633*2d9fd380Sjfb8856606 ut_params->sess = NULL;
634*2d9fd380Sjfb8856606
635*2d9fd380Sjfb8856606 mock_session_create_exp.called = 0;
636*2d9fd380Sjfb8856606 mock_session_update_exp.called = 0;
637*2d9fd380Sjfb8856606 mock_session_get_size_exp.called = 0;
638*2d9fd380Sjfb8856606 mock_session_stats_get_exp.called = 0;
639*2d9fd380Sjfb8856606 mock_session_destroy_exp.called = 0;
640*2d9fd380Sjfb8856606 mock_set_pkt_metadata_exp.called = 0;
641*2d9fd380Sjfb8856606 mock_get_userdata_exp.called = 0;
642*2d9fd380Sjfb8856606 mock_capabilities_get_exp.called = 0;
643*2d9fd380Sjfb8856606
644*2d9fd380Sjfb8856606 mock_session_create_exp.failed = 0;
645*2d9fd380Sjfb8856606 mock_session_update_exp.failed = 0;
646*2d9fd380Sjfb8856606 mock_session_get_size_exp.failed = 0;
647*2d9fd380Sjfb8856606 mock_session_stats_get_exp.failed = 0;
648*2d9fd380Sjfb8856606 mock_session_destroy_exp.failed = 0;
649*2d9fd380Sjfb8856606 mock_set_pkt_metadata_exp.failed = 0;
650*2d9fd380Sjfb8856606 mock_get_userdata_exp.failed = 0;
651*2d9fd380Sjfb8856606 mock_capabilities_get_exp.failed = 0;
652*2d9fd380Sjfb8856606
653*2d9fd380Sjfb8856606 return TEST_SUCCESS;
654*2d9fd380Sjfb8856606 }
655*2d9fd380Sjfb8856606
656*2d9fd380Sjfb8856606 /**
657*2d9fd380Sjfb8856606 * destroy_session_with_check is a helper function releasing session
658*2d9fd380Sjfb8856606 * created with rte_security_session_create and stored in test case parameters.
659*2d9fd380Sjfb8856606 * It's used both to release sessions created in test cases' bodies
660*2d9fd380Sjfb8856606 * which are assigned to ut_params->sess
661*2d9fd380Sjfb8856606 * as well as sessions created in ut_setup_with_session.
662*2d9fd380Sjfb8856606 */
663*2d9fd380Sjfb8856606 static int
destroy_session_with_check(void)664*2d9fd380Sjfb8856606 destroy_session_with_check(void)
665*2d9fd380Sjfb8856606 {
666*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
667*2d9fd380Sjfb8856606 if (ut_params->sess != NULL) {
668*2d9fd380Sjfb8856606 /* Assure that mockup function for destroy operation is set. */
669*2d9fd380Sjfb8856606 ut_params->ctx.ops = &mock_ops;
670*2d9fd380Sjfb8856606
671*2d9fd380Sjfb8856606 mock_session_destroy_exp.device = NULL;
672*2d9fd380Sjfb8856606 mock_session_destroy_exp.sess = ut_params->sess;
673*2d9fd380Sjfb8856606 mock_session_destroy_exp.ret = 0;
674*2d9fd380Sjfb8856606 mock_session_destroy_exp.called = 0;
675*2d9fd380Sjfb8856606 mock_session_destroy_exp.failed = 0;
676*2d9fd380Sjfb8856606
677*2d9fd380Sjfb8856606 int ret = rte_security_session_destroy(&ut_params->ctx,
678*2d9fd380Sjfb8856606 ut_params->sess);
679*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_destroy,
680*2d9fd380Sjfb8856606 ret, 0, "%d");
681*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_destroy_exp, 1);
682*2d9fd380Sjfb8856606
683*2d9fd380Sjfb8856606 ut_params->sess = NULL;
684*2d9fd380Sjfb8856606 }
685*2d9fd380Sjfb8856606 return TEST_SUCCESS;
686*2d9fd380Sjfb8856606 }
687*2d9fd380Sjfb8856606
688*2d9fd380Sjfb8856606 /**
689*2d9fd380Sjfb8856606 * ut_teardown releases test case parameters.
690*2d9fd380Sjfb8856606 */
691*2d9fd380Sjfb8856606 static void
ut_teardown(void)692*2d9fd380Sjfb8856606 ut_teardown(void)
693*2d9fd380Sjfb8856606 {
694*2d9fd380Sjfb8856606 destroy_session_with_check();
695*2d9fd380Sjfb8856606 }
696*2d9fd380Sjfb8856606
697*2d9fd380Sjfb8856606 /**
698*2d9fd380Sjfb8856606 * ut_setup_with_session initializes test case parameters by
699*2d9fd380Sjfb8856606 * - calling standard ut_setup,
700*2d9fd380Sjfb8856606 * - creating a session that can be used in test case.
701*2d9fd380Sjfb8856606 */
702*2d9fd380Sjfb8856606 static int
ut_setup_with_session(void)703*2d9fd380Sjfb8856606 ut_setup_with_session(void)
704*2d9fd380Sjfb8856606 {
705*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
706*2d9fd380Sjfb8856606 struct security_testsuite_params *ts_params = &testsuite_params;
707*2d9fd380Sjfb8856606 struct rte_security_session *sess;
708*2d9fd380Sjfb8856606
709*2d9fd380Sjfb8856606 int ret = ut_setup();
710*2d9fd380Sjfb8856606 if (ret != TEST_SUCCESS)
711*2d9fd380Sjfb8856606 return ret;
712*2d9fd380Sjfb8856606
713*2d9fd380Sjfb8856606 mock_session_create_exp.device = NULL;
714*2d9fd380Sjfb8856606 mock_session_create_exp.conf = &ut_params->conf;
715*2d9fd380Sjfb8856606 mock_session_create_exp.mp = ts_params->session_mpool;
716*2d9fd380Sjfb8856606 mock_session_create_exp.priv_mp = ts_params->session_priv_mpool;
717*2d9fd380Sjfb8856606 mock_session_create_exp.ret = 0;
718*2d9fd380Sjfb8856606
719*2d9fd380Sjfb8856606 sess = rte_security_session_create(&ut_params->ctx, &ut_params->conf,
720*2d9fd380Sjfb8856606 ts_params->session_mpool,
721*2d9fd380Sjfb8856606 ts_params->session_priv_mpool);
722*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_NOT_NULL(rte_security_session_create,
723*2d9fd380Sjfb8856606 sess);
724*2d9fd380Sjfb8856606 TEST_ASSERT_EQUAL(sess, mock_session_create_exp.sess,
725*2d9fd380Sjfb8856606 "Expecting session_create to be called with %p sess"
726*2d9fd380Sjfb8856606 " parameter, but it's called %p sess parameter",
727*2d9fd380Sjfb8856606 sess, mock_session_create_exp.sess);
728*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_create_exp, 1);
729*2d9fd380Sjfb8856606
730*2d9fd380Sjfb8856606 /*
731*2d9fd380Sjfb8856606 * Store created session in test case parameters, so it can be released
732*2d9fd380Sjfb8856606 * after test case in ut_teardown by destroy_session_with_check.
733*2d9fd380Sjfb8856606 */
734*2d9fd380Sjfb8856606 ut_params->sess = sess;
735*2d9fd380Sjfb8856606
736*2d9fd380Sjfb8856606 return TEST_SUCCESS;
737*2d9fd380Sjfb8856606 }
738*2d9fd380Sjfb8856606
739*2d9fd380Sjfb8856606
740*2d9fd380Sjfb8856606 /**
741*2d9fd380Sjfb8856606 * Test functions
742*2d9fd380Sjfb8856606 *
743*2d9fd380Sjfb8856606 * Each test function is related to a single test case.
744*2d9fd380Sjfb8856606 * They are arranged by tested rte_security API function
745*2d9fd380Sjfb8856606 * and by rte_security execution paths sequence in code.
746*2d9fd380Sjfb8856606 */
747*2d9fd380Sjfb8856606
748*2d9fd380Sjfb8856606 /**
749*2d9fd380Sjfb8856606 * rte_security_session_create tests
750*2d9fd380Sjfb8856606 */
751*2d9fd380Sjfb8856606
752*2d9fd380Sjfb8856606 /**
753*2d9fd380Sjfb8856606 * Test execution of rte_security_session_create with NULL instance
754*2d9fd380Sjfb8856606 */
755*2d9fd380Sjfb8856606 static int
test_session_create_inv_context(void)756*2d9fd380Sjfb8856606 test_session_create_inv_context(void)
757*2d9fd380Sjfb8856606 {
758*2d9fd380Sjfb8856606 struct security_testsuite_params *ts_params = &testsuite_params;
759*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
760*2d9fd380Sjfb8856606 struct rte_security_session *sess;
761*2d9fd380Sjfb8856606
762*2d9fd380Sjfb8856606 sess = rte_security_session_create(NULL, &ut_params->conf,
763*2d9fd380Sjfb8856606 ts_params->session_mpool,
764*2d9fd380Sjfb8856606 ts_params->session_priv_mpool);
765*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_create,
766*2d9fd380Sjfb8856606 sess, NULL, "%p");
767*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_create_exp, 0);
768*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(0);
769*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(0);
770*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(0);
771*2d9fd380Sjfb8856606
772*2d9fd380Sjfb8856606 return TEST_SUCCESS;
773*2d9fd380Sjfb8856606 }
774*2d9fd380Sjfb8856606
775*2d9fd380Sjfb8856606 /**
776*2d9fd380Sjfb8856606 * Test execution of rte_security_session_create with invalid
777*2d9fd380Sjfb8856606 * security operations structure (NULL)
778*2d9fd380Sjfb8856606 */
779*2d9fd380Sjfb8856606 static int
test_session_create_inv_context_ops(void)780*2d9fd380Sjfb8856606 test_session_create_inv_context_ops(void)
781*2d9fd380Sjfb8856606 {
782*2d9fd380Sjfb8856606 struct security_testsuite_params *ts_params = &testsuite_params;
783*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
784*2d9fd380Sjfb8856606 struct rte_security_session *sess;
785*2d9fd380Sjfb8856606
786*2d9fd380Sjfb8856606 ut_params->ctx.ops = NULL;
787*2d9fd380Sjfb8856606
788*2d9fd380Sjfb8856606 sess = rte_security_session_create(&ut_params->ctx, &ut_params->conf,
789*2d9fd380Sjfb8856606 ts_params->session_mpool,
790*2d9fd380Sjfb8856606 ts_params->session_priv_mpool);
791*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_create,
792*2d9fd380Sjfb8856606 sess, NULL, "%p");
793*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_create_exp, 0);
794*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(0);
795*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(0);
796*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(0);
797*2d9fd380Sjfb8856606
798*2d9fd380Sjfb8856606 return TEST_SUCCESS;
799*2d9fd380Sjfb8856606 }
800*2d9fd380Sjfb8856606
801*2d9fd380Sjfb8856606 /**
802*2d9fd380Sjfb8856606 * Test execution of rte_security_session_create with empty
803*2d9fd380Sjfb8856606 * security operations
804*2d9fd380Sjfb8856606 */
805*2d9fd380Sjfb8856606 static int
test_session_create_inv_context_ops_fun(void)806*2d9fd380Sjfb8856606 test_session_create_inv_context_ops_fun(void)
807*2d9fd380Sjfb8856606 {
808*2d9fd380Sjfb8856606 struct security_testsuite_params *ts_params = &testsuite_params;
809*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
810*2d9fd380Sjfb8856606 struct rte_security_session *sess;
811*2d9fd380Sjfb8856606
812*2d9fd380Sjfb8856606 ut_params->ctx.ops = &empty_ops;
813*2d9fd380Sjfb8856606
814*2d9fd380Sjfb8856606 sess = rte_security_session_create(&ut_params->ctx, &ut_params->conf,
815*2d9fd380Sjfb8856606 ts_params->session_mpool,
816*2d9fd380Sjfb8856606 ts_params->session_priv_mpool);
817*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_create,
818*2d9fd380Sjfb8856606 sess, NULL, "%p");
819*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_create_exp, 0);
820*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(0);
821*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(0);
822*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(0);
823*2d9fd380Sjfb8856606
824*2d9fd380Sjfb8856606 return TEST_SUCCESS;
825*2d9fd380Sjfb8856606 }
826*2d9fd380Sjfb8856606
827*2d9fd380Sjfb8856606 /**
828*2d9fd380Sjfb8856606 * Test execution of rte_security_session_create with NULL conf parameter
829*2d9fd380Sjfb8856606 */
830*2d9fd380Sjfb8856606 static int
test_session_create_inv_configuration(void)831*2d9fd380Sjfb8856606 test_session_create_inv_configuration(void)
832*2d9fd380Sjfb8856606 {
833*2d9fd380Sjfb8856606 struct security_testsuite_params *ts_params = &testsuite_params;
834*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
835*2d9fd380Sjfb8856606 struct rte_security_session *sess;
836*2d9fd380Sjfb8856606
837*2d9fd380Sjfb8856606 sess = rte_security_session_create(&ut_params->ctx, NULL,
838*2d9fd380Sjfb8856606 ts_params->session_mpool,
839*2d9fd380Sjfb8856606 ts_params->session_priv_mpool);
840*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_create,
841*2d9fd380Sjfb8856606 sess, NULL, "%p");
842*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_create_exp, 0);
843*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(0);
844*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(0);
845*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(0);
846*2d9fd380Sjfb8856606
847*2d9fd380Sjfb8856606 return TEST_SUCCESS;
848*2d9fd380Sjfb8856606 }
849*2d9fd380Sjfb8856606
850*2d9fd380Sjfb8856606 /**
851*2d9fd380Sjfb8856606 * Test execution of rte_security_session_create with NULL session
852*2d9fd380Sjfb8856606 * mempool
853*2d9fd380Sjfb8856606 */
854*2d9fd380Sjfb8856606 static int
test_session_create_inv_mempool(void)855*2d9fd380Sjfb8856606 test_session_create_inv_mempool(void)
856*2d9fd380Sjfb8856606 {
857*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
858*2d9fd380Sjfb8856606 struct security_testsuite_params *ts_params = &testsuite_params;
859*2d9fd380Sjfb8856606 struct rte_security_session *sess;
860*2d9fd380Sjfb8856606
861*2d9fd380Sjfb8856606 sess = rte_security_session_create(&ut_params->ctx, &ut_params->conf,
862*2d9fd380Sjfb8856606 NULL, ts_params->session_priv_mpool);
863*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_create,
864*2d9fd380Sjfb8856606 sess, NULL, "%p");
865*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_create_exp, 0);
866*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(0);
867*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(0);
868*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(0);
869*2d9fd380Sjfb8856606
870*2d9fd380Sjfb8856606 return TEST_SUCCESS;
871*2d9fd380Sjfb8856606 }
872*2d9fd380Sjfb8856606
873*2d9fd380Sjfb8856606 /**
874*2d9fd380Sjfb8856606 * Test execution of rte_security_session_create with NULL session
875*2d9fd380Sjfb8856606 * priv mempool
876*2d9fd380Sjfb8856606 */
877*2d9fd380Sjfb8856606 static int
test_session_create_inv_sess_priv_mempool(void)878*2d9fd380Sjfb8856606 test_session_create_inv_sess_priv_mempool(void)
879*2d9fd380Sjfb8856606 {
880*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
881*2d9fd380Sjfb8856606 struct security_testsuite_params *ts_params = &testsuite_params;
882*2d9fd380Sjfb8856606 struct rte_security_session *sess;
883*2d9fd380Sjfb8856606
884*2d9fd380Sjfb8856606 sess = rte_security_session_create(&ut_params->ctx, &ut_params->conf,
885*2d9fd380Sjfb8856606 ts_params->session_mpool, NULL);
886*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_create,
887*2d9fd380Sjfb8856606 sess, NULL, "%p");
888*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_create_exp, 0);
889*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(0);
890*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(0);
891*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(0);
892*2d9fd380Sjfb8856606
893*2d9fd380Sjfb8856606 return TEST_SUCCESS;
894*2d9fd380Sjfb8856606 }
895*2d9fd380Sjfb8856606
896*2d9fd380Sjfb8856606 /**
897*2d9fd380Sjfb8856606 * Test execution of rte_security_session_create in case when mempool
898*2d9fd380Sjfb8856606 * is fully used and no object can be got from it
899*2d9fd380Sjfb8856606 */
900*2d9fd380Sjfb8856606 static int
test_session_create_mempool_empty(void)901*2d9fd380Sjfb8856606 test_session_create_mempool_empty(void)
902*2d9fd380Sjfb8856606 {
903*2d9fd380Sjfb8856606 struct security_testsuite_params *ts_params = &testsuite_params;
904*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
905*2d9fd380Sjfb8856606 struct rte_security_session *tmp[SECURITY_TEST_MEMPOOL_SIZE];
906*2d9fd380Sjfb8856606 void *tmp1[SECURITY_TEST_MEMPOOL_SIZE];
907*2d9fd380Sjfb8856606 struct rte_security_session *sess;
908*2d9fd380Sjfb8856606
909*2d9fd380Sjfb8856606 /* Get all available objects from mempool. */
910*2d9fd380Sjfb8856606 int i, ret;
911*2d9fd380Sjfb8856606 for (i = 0; i < SECURITY_TEST_MEMPOOL_SIZE; ++i) {
912*2d9fd380Sjfb8856606 ret = rte_mempool_get(ts_params->session_mpool,
913*2d9fd380Sjfb8856606 (void **)(&tmp[i]));
914*2d9fd380Sjfb8856606 TEST_ASSERT_EQUAL(0, ret,
915*2d9fd380Sjfb8856606 "Expect getting %d object from mempool"
916*2d9fd380Sjfb8856606 " to succeed", i);
917*2d9fd380Sjfb8856606 ret = rte_mempool_get(ts_params->session_priv_mpool,
918*2d9fd380Sjfb8856606 (void **)(&tmp1[i]));
919*2d9fd380Sjfb8856606 TEST_ASSERT_EQUAL(0, ret,
920*2d9fd380Sjfb8856606 "Expect getting %d object from priv mempool"
921*2d9fd380Sjfb8856606 " to succeed", i);
922*2d9fd380Sjfb8856606 }
923*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(SECURITY_TEST_MEMPOOL_SIZE);
924*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(SECURITY_TEST_MEMPOOL_SIZE);
925*2d9fd380Sjfb8856606
926*2d9fd380Sjfb8856606 sess = rte_security_session_create(&ut_params->ctx, &ut_params->conf,
927*2d9fd380Sjfb8856606 ts_params->session_mpool,
928*2d9fd380Sjfb8856606 ts_params->session_priv_mpool);
929*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_create,
930*2d9fd380Sjfb8856606 sess, NULL, "%p");
931*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_create_exp, 0);
932*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(SECURITY_TEST_MEMPOOL_SIZE);
933*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(SECURITY_TEST_MEMPOOL_SIZE);
934*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(0);
935*2d9fd380Sjfb8856606
936*2d9fd380Sjfb8856606 /* Put objects back to the pool. */
937*2d9fd380Sjfb8856606 for (i = 0; i < SECURITY_TEST_MEMPOOL_SIZE; ++i) {
938*2d9fd380Sjfb8856606 rte_mempool_put(ts_params->session_mpool,
939*2d9fd380Sjfb8856606 (void *)(tmp[i]));
940*2d9fd380Sjfb8856606 rte_mempool_put(ts_params->session_priv_mpool,
941*2d9fd380Sjfb8856606 (tmp1[i]));
942*2d9fd380Sjfb8856606 }
943*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(0);
944*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(0);
945*2d9fd380Sjfb8856606
946*2d9fd380Sjfb8856606 return TEST_SUCCESS;
947*2d9fd380Sjfb8856606 }
948*2d9fd380Sjfb8856606
949*2d9fd380Sjfb8856606 /**
950*2d9fd380Sjfb8856606 * Test execution of rte_security_session_create when session_create
951*2d9fd380Sjfb8856606 * security operation fails
952*2d9fd380Sjfb8856606 */
953*2d9fd380Sjfb8856606 static int
test_session_create_ops_failure(void)954*2d9fd380Sjfb8856606 test_session_create_ops_failure(void)
955*2d9fd380Sjfb8856606 {
956*2d9fd380Sjfb8856606 struct security_testsuite_params *ts_params = &testsuite_params;
957*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
958*2d9fd380Sjfb8856606 struct rte_security_session *sess;
959*2d9fd380Sjfb8856606
960*2d9fd380Sjfb8856606 mock_session_create_exp.device = NULL;
961*2d9fd380Sjfb8856606 mock_session_create_exp.conf = &ut_params->conf;
962*2d9fd380Sjfb8856606 mock_session_create_exp.mp = ts_params->session_mpool;
963*2d9fd380Sjfb8856606 mock_session_create_exp.priv_mp = ts_params->session_priv_mpool;
964*2d9fd380Sjfb8856606 mock_session_create_exp.ret = -1; /* Return failure status. */
965*2d9fd380Sjfb8856606
966*2d9fd380Sjfb8856606 sess = rte_security_session_create(&ut_params->ctx, &ut_params->conf,
967*2d9fd380Sjfb8856606 ts_params->session_mpool,
968*2d9fd380Sjfb8856606 ts_params->session_priv_mpool);
969*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_create,
970*2d9fd380Sjfb8856606 sess, NULL, "%p");
971*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_create_exp, 1);
972*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(0);
973*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(0);
974*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(0);
975*2d9fd380Sjfb8856606
976*2d9fd380Sjfb8856606 return TEST_SUCCESS;
977*2d9fd380Sjfb8856606 }
978*2d9fd380Sjfb8856606
979*2d9fd380Sjfb8856606 /**
980*2d9fd380Sjfb8856606 * Test execution of rte_security_session_create in successful execution path
981*2d9fd380Sjfb8856606 */
982*2d9fd380Sjfb8856606 static int
test_session_create_success(void)983*2d9fd380Sjfb8856606 test_session_create_success(void)
984*2d9fd380Sjfb8856606 {
985*2d9fd380Sjfb8856606 struct security_testsuite_params *ts_params = &testsuite_params;
986*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
987*2d9fd380Sjfb8856606 struct rte_security_session *sess;
988*2d9fd380Sjfb8856606
989*2d9fd380Sjfb8856606 mock_session_create_exp.device = NULL;
990*2d9fd380Sjfb8856606 mock_session_create_exp.conf = &ut_params->conf;
991*2d9fd380Sjfb8856606 mock_session_create_exp.mp = ts_params->session_mpool;
992*2d9fd380Sjfb8856606 mock_session_create_exp.priv_mp = ts_params->session_priv_mpool;
993*2d9fd380Sjfb8856606 mock_session_create_exp.ret = 0; /* Return success status. */
994*2d9fd380Sjfb8856606
995*2d9fd380Sjfb8856606 sess = rte_security_session_create(&ut_params->ctx, &ut_params->conf,
996*2d9fd380Sjfb8856606 ts_params->session_mpool,
997*2d9fd380Sjfb8856606 ts_params->session_priv_mpool);
998*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_NOT_NULL(rte_security_session_create,
999*2d9fd380Sjfb8856606 sess);
1000*2d9fd380Sjfb8856606 TEST_ASSERT_EQUAL(sess, mock_session_create_exp.sess,
1001*2d9fd380Sjfb8856606 "Expecting session_create to be called with %p sess"
1002*2d9fd380Sjfb8856606 " parameter, but it's called %p sess parameter",
1003*2d9fd380Sjfb8856606 sess, mock_session_create_exp.sess);
1004*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_create_exp, 1);
1005*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(1);
1006*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(1);
1007*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(1);
1008*2d9fd380Sjfb8856606
1009*2d9fd380Sjfb8856606 /*
1010*2d9fd380Sjfb8856606 * Store created session in test case parameters, so it can be released
1011*2d9fd380Sjfb8856606 * after test case in ut_teardown by destroy_session_with_check.
1012*2d9fd380Sjfb8856606 */
1013*2d9fd380Sjfb8856606 ut_params->sess = sess;
1014*2d9fd380Sjfb8856606
1015*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1016*2d9fd380Sjfb8856606 }
1017*2d9fd380Sjfb8856606
1018*2d9fd380Sjfb8856606
1019*2d9fd380Sjfb8856606 /**
1020*2d9fd380Sjfb8856606 * rte_security_session_update tests
1021*2d9fd380Sjfb8856606 */
1022*2d9fd380Sjfb8856606
1023*2d9fd380Sjfb8856606 /**
1024*2d9fd380Sjfb8856606 * Test execution of rte_security_session_update with NULL instance
1025*2d9fd380Sjfb8856606 */
1026*2d9fd380Sjfb8856606 static int
test_session_update_inv_context(void)1027*2d9fd380Sjfb8856606 test_session_update_inv_context(void)
1028*2d9fd380Sjfb8856606 {
1029*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1030*2d9fd380Sjfb8856606
1031*2d9fd380Sjfb8856606 int ret = rte_security_session_update(NULL, ut_params->sess,
1032*2d9fd380Sjfb8856606 &ut_params->conf);
1033*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_update,
1034*2d9fd380Sjfb8856606 ret, -EINVAL, "%d");
1035*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_update_exp, 0);
1036*2d9fd380Sjfb8856606
1037*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1038*2d9fd380Sjfb8856606 }
1039*2d9fd380Sjfb8856606
1040*2d9fd380Sjfb8856606 /**
1041*2d9fd380Sjfb8856606 * Test execution of rte_security_session_update with invalid
1042*2d9fd380Sjfb8856606 * security operations structure (NULL)
1043*2d9fd380Sjfb8856606 */
1044*2d9fd380Sjfb8856606 static int
test_session_update_inv_context_ops(void)1045*2d9fd380Sjfb8856606 test_session_update_inv_context_ops(void)
1046*2d9fd380Sjfb8856606 {
1047*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1048*2d9fd380Sjfb8856606 ut_params->ctx.ops = NULL;
1049*2d9fd380Sjfb8856606
1050*2d9fd380Sjfb8856606 int ret = rte_security_session_update(&ut_params->ctx, ut_params->sess,
1051*2d9fd380Sjfb8856606 &ut_params->conf);
1052*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_update,
1053*2d9fd380Sjfb8856606 ret, -EINVAL, "%d");
1054*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_update_exp, 0);
1055*2d9fd380Sjfb8856606
1056*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1057*2d9fd380Sjfb8856606 }
1058*2d9fd380Sjfb8856606
1059*2d9fd380Sjfb8856606 /**
1060*2d9fd380Sjfb8856606 * Test execution of rte_security_session_update with empty
1061*2d9fd380Sjfb8856606 * security operations
1062*2d9fd380Sjfb8856606 */
1063*2d9fd380Sjfb8856606 static int
test_session_update_inv_context_ops_fun(void)1064*2d9fd380Sjfb8856606 test_session_update_inv_context_ops_fun(void)
1065*2d9fd380Sjfb8856606 {
1066*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1067*2d9fd380Sjfb8856606 ut_params->ctx.ops = &empty_ops;
1068*2d9fd380Sjfb8856606
1069*2d9fd380Sjfb8856606 int ret = rte_security_session_update(&ut_params->ctx, ut_params->sess,
1070*2d9fd380Sjfb8856606 &ut_params->conf);
1071*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_update,
1072*2d9fd380Sjfb8856606 ret, -ENOTSUP, "%d");
1073*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_update_exp, 0);
1074*2d9fd380Sjfb8856606
1075*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1076*2d9fd380Sjfb8856606 }
1077*2d9fd380Sjfb8856606
1078*2d9fd380Sjfb8856606 /**
1079*2d9fd380Sjfb8856606 * Test execution of rte_security_session_update with NULL conf parameter
1080*2d9fd380Sjfb8856606 */
1081*2d9fd380Sjfb8856606 static int
test_session_update_inv_configuration(void)1082*2d9fd380Sjfb8856606 test_session_update_inv_configuration(void)
1083*2d9fd380Sjfb8856606 {
1084*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1085*2d9fd380Sjfb8856606
1086*2d9fd380Sjfb8856606 int ret = rte_security_session_update(&ut_params->ctx, ut_params->sess,
1087*2d9fd380Sjfb8856606 NULL);
1088*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_update,
1089*2d9fd380Sjfb8856606 ret, -EINVAL, "%d");
1090*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_update_exp, 0);
1091*2d9fd380Sjfb8856606
1092*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1093*2d9fd380Sjfb8856606 }
1094*2d9fd380Sjfb8856606
1095*2d9fd380Sjfb8856606 /**
1096*2d9fd380Sjfb8856606 * Test execution of rte_security_session_update with NULL sess parameter
1097*2d9fd380Sjfb8856606 */
1098*2d9fd380Sjfb8856606 static int
test_session_update_inv_session(void)1099*2d9fd380Sjfb8856606 test_session_update_inv_session(void)
1100*2d9fd380Sjfb8856606 {
1101*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1102*2d9fd380Sjfb8856606
1103*2d9fd380Sjfb8856606 int ret = rte_security_session_update(&ut_params->ctx, NULL,
1104*2d9fd380Sjfb8856606 &ut_params->conf);
1105*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_update,
1106*2d9fd380Sjfb8856606 ret, -EINVAL, "%d");
1107*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_update_exp, 0);
1108*2d9fd380Sjfb8856606
1109*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1110*2d9fd380Sjfb8856606 }
1111*2d9fd380Sjfb8856606
1112*2d9fd380Sjfb8856606 /**
1113*2d9fd380Sjfb8856606 * Test execution of rte_security_session_update when session_update
1114*2d9fd380Sjfb8856606 * security operation fails
1115*2d9fd380Sjfb8856606 */
1116*2d9fd380Sjfb8856606 static int
test_session_update_ops_failure(void)1117*2d9fd380Sjfb8856606 test_session_update_ops_failure(void)
1118*2d9fd380Sjfb8856606 {
1119*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1120*2d9fd380Sjfb8856606
1121*2d9fd380Sjfb8856606 mock_session_update_exp.device = NULL;
1122*2d9fd380Sjfb8856606 mock_session_update_exp.sess = ut_params->sess;
1123*2d9fd380Sjfb8856606 mock_session_update_exp.conf = &ut_params->conf;
1124*2d9fd380Sjfb8856606 mock_session_update_exp.ret = -1; /* Return failure status. */
1125*2d9fd380Sjfb8856606
1126*2d9fd380Sjfb8856606 int ret = rte_security_session_update(&ut_params->ctx, ut_params->sess,
1127*2d9fd380Sjfb8856606 &ut_params->conf);
1128*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_update,
1129*2d9fd380Sjfb8856606 ret, -1, "%d");
1130*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_update_exp, 1);
1131*2d9fd380Sjfb8856606
1132*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1133*2d9fd380Sjfb8856606 }
1134*2d9fd380Sjfb8856606
1135*2d9fd380Sjfb8856606 /**
1136*2d9fd380Sjfb8856606 * Test execution of rte_security_session_update in successful execution path
1137*2d9fd380Sjfb8856606 */
1138*2d9fd380Sjfb8856606 static int
test_session_update_success(void)1139*2d9fd380Sjfb8856606 test_session_update_success(void)
1140*2d9fd380Sjfb8856606 {
1141*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1142*2d9fd380Sjfb8856606
1143*2d9fd380Sjfb8856606 mock_session_update_exp.device = NULL;
1144*2d9fd380Sjfb8856606 mock_session_update_exp.sess = ut_params->sess;
1145*2d9fd380Sjfb8856606 mock_session_update_exp.conf = &ut_params->conf;
1146*2d9fd380Sjfb8856606 mock_session_update_exp.ret = 0; /* Return success status. */
1147*2d9fd380Sjfb8856606
1148*2d9fd380Sjfb8856606 int ret = rte_security_session_update(&ut_params->ctx, ut_params->sess,
1149*2d9fd380Sjfb8856606 &ut_params->conf);
1150*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_update,
1151*2d9fd380Sjfb8856606 ret, 0, "%d");
1152*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_update_exp, 1);
1153*2d9fd380Sjfb8856606
1154*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1155*2d9fd380Sjfb8856606 }
1156*2d9fd380Sjfb8856606
1157*2d9fd380Sjfb8856606
1158*2d9fd380Sjfb8856606 /**
1159*2d9fd380Sjfb8856606 * rte_security_session_get_size tests
1160*2d9fd380Sjfb8856606 */
1161*2d9fd380Sjfb8856606
1162*2d9fd380Sjfb8856606 /**
1163*2d9fd380Sjfb8856606 * Test execution of rte_security_session_get_size with NULL instance
1164*2d9fd380Sjfb8856606 */
1165*2d9fd380Sjfb8856606 static int
test_session_get_size_inv_context(void)1166*2d9fd380Sjfb8856606 test_session_get_size_inv_context(void)
1167*2d9fd380Sjfb8856606 {
1168*2d9fd380Sjfb8856606 unsigned int ret = rte_security_session_get_size(NULL);
1169*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_get_size,
1170*2d9fd380Sjfb8856606 ret, 0, "%u");
1171*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_get_size_exp, 0);
1172*2d9fd380Sjfb8856606
1173*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1174*2d9fd380Sjfb8856606 }
1175*2d9fd380Sjfb8856606
1176*2d9fd380Sjfb8856606 /**
1177*2d9fd380Sjfb8856606 * Test execution of rte_security_session_get_size with invalid
1178*2d9fd380Sjfb8856606 * security operations structure (NULL)
1179*2d9fd380Sjfb8856606 */
1180*2d9fd380Sjfb8856606 static int
test_session_get_size_inv_context_ops(void)1181*2d9fd380Sjfb8856606 test_session_get_size_inv_context_ops(void)
1182*2d9fd380Sjfb8856606 {
1183*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1184*2d9fd380Sjfb8856606 ut_params->ctx.ops = NULL;
1185*2d9fd380Sjfb8856606
1186*2d9fd380Sjfb8856606 unsigned int ret = rte_security_session_get_size(&ut_params->ctx);
1187*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_get_size,
1188*2d9fd380Sjfb8856606 ret, 0, "%u");
1189*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_get_size_exp, 0);
1190*2d9fd380Sjfb8856606
1191*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1192*2d9fd380Sjfb8856606 }
1193*2d9fd380Sjfb8856606
1194*2d9fd380Sjfb8856606 /**
1195*2d9fd380Sjfb8856606 * Test execution of rte_security_session_get_size with empty
1196*2d9fd380Sjfb8856606 * security operations
1197*2d9fd380Sjfb8856606 */
1198*2d9fd380Sjfb8856606 static int
test_session_get_size_inv_context_ops_fun(void)1199*2d9fd380Sjfb8856606 test_session_get_size_inv_context_ops_fun(void)
1200*2d9fd380Sjfb8856606 {
1201*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1202*2d9fd380Sjfb8856606 ut_params->ctx.ops = &empty_ops;
1203*2d9fd380Sjfb8856606
1204*2d9fd380Sjfb8856606 unsigned int ret = rte_security_session_get_size(&ut_params->ctx);
1205*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_get_size,
1206*2d9fd380Sjfb8856606 ret, 0, "%u");
1207*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_get_size_exp, 0);
1208*2d9fd380Sjfb8856606
1209*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1210*2d9fd380Sjfb8856606 }
1211*2d9fd380Sjfb8856606
1212*2d9fd380Sjfb8856606 /**
1213*2d9fd380Sjfb8856606 * Test execution of rte_security_session_get_size when session_get_size
1214*2d9fd380Sjfb8856606 * security operation fails
1215*2d9fd380Sjfb8856606 */
1216*2d9fd380Sjfb8856606 static int
test_session_get_size_ops_failure(void)1217*2d9fd380Sjfb8856606 test_session_get_size_ops_failure(void)
1218*2d9fd380Sjfb8856606 {
1219*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1220*2d9fd380Sjfb8856606
1221*2d9fd380Sjfb8856606 mock_session_get_size_exp.device = NULL;
1222*2d9fd380Sjfb8856606 mock_session_get_size_exp.ret = 0;
1223*2d9fd380Sjfb8856606
1224*2d9fd380Sjfb8856606 unsigned int ret = rte_security_session_get_size(&ut_params->ctx);
1225*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_get_size,
1226*2d9fd380Sjfb8856606 ret, 0, "%u");
1227*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_get_size_exp, 1);
1228*2d9fd380Sjfb8856606
1229*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1230*2d9fd380Sjfb8856606 }
1231*2d9fd380Sjfb8856606
1232*2d9fd380Sjfb8856606 /**
1233*2d9fd380Sjfb8856606 * Test execution of rte_security_session_get_size in successful execution path
1234*2d9fd380Sjfb8856606 */
1235*2d9fd380Sjfb8856606 static int
test_session_get_size_success(void)1236*2d9fd380Sjfb8856606 test_session_get_size_success(void)
1237*2d9fd380Sjfb8856606 {
1238*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1239*2d9fd380Sjfb8856606
1240*2d9fd380Sjfb8856606 mock_session_get_size_exp.device = NULL;
1241*2d9fd380Sjfb8856606 mock_session_get_size_exp.ret = 1024;
1242*2d9fd380Sjfb8856606
1243*2d9fd380Sjfb8856606 unsigned int ret = rte_security_session_get_size(&ut_params->ctx);
1244*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_get_size,
1245*2d9fd380Sjfb8856606 ret, 1024U, "%u");
1246*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_get_size_exp, 1);
1247*2d9fd380Sjfb8856606
1248*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1249*2d9fd380Sjfb8856606 }
1250*2d9fd380Sjfb8856606
1251*2d9fd380Sjfb8856606
1252*2d9fd380Sjfb8856606 /**
1253*2d9fd380Sjfb8856606 * rte_security_session_stats_get tests
1254*2d9fd380Sjfb8856606 */
1255*2d9fd380Sjfb8856606
1256*2d9fd380Sjfb8856606 /**
1257*2d9fd380Sjfb8856606 * Test execution of rte_security_session_stats_get with NULL instance
1258*2d9fd380Sjfb8856606 */
1259*2d9fd380Sjfb8856606 static int
test_session_stats_get_inv_context(void)1260*2d9fd380Sjfb8856606 test_session_stats_get_inv_context(void)
1261*2d9fd380Sjfb8856606 {
1262*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1263*2d9fd380Sjfb8856606 struct rte_security_stats stats;
1264*2d9fd380Sjfb8856606
1265*2d9fd380Sjfb8856606 int ret = rte_security_session_stats_get(NULL, ut_params->sess, &stats);
1266*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_stats_get,
1267*2d9fd380Sjfb8856606 ret, -EINVAL, "%d");
1268*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_stats_get_exp, 0);
1269*2d9fd380Sjfb8856606
1270*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1271*2d9fd380Sjfb8856606 }
1272*2d9fd380Sjfb8856606
1273*2d9fd380Sjfb8856606 /**
1274*2d9fd380Sjfb8856606 * Test execution of rte_security_session_stats_get with invalid
1275*2d9fd380Sjfb8856606 * security operations structure (NULL)
1276*2d9fd380Sjfb8856606 */
1277*2d9fd380Sjfb8856606 static int
test_session_stats_get_inv_context_ops(void)1278*2d9fd380Sjfb8856606 test_session_stats_get_inv_context_ops(void)
1279*2d9fd380Sjfb8856606 {
1280*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1281*2d9fd380Sjfb8856606 struct rte_security_stats stats;
1282*2d9fd380Sjfb8856606 ut_params->ctx.ops = NULL;
1283*2d9fd380Sjfb8856606
1284*2d9fd380Sjfb8856606 int ret = rte_security_session_stats_get(&ut_params->ctx,
1285*2d9fd380Sjfb8856606 ut_params->sess, &stats);
1286*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_stats_get,
1287*2d9fd380Sjfb8856606 ret, -EINVAL, "%d");
1288*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_stats_get_exp, 0);
1289*2d9fd380Sjfb8856606
1290*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1291*2d9fd380Sjfb8856606 }
1292*2d9fd380Sjfb8856606
1293*2d9fd380Sjfb8856606 /**
1294*2d9fd380Sjfb8856606 * Test execution of rte_security_session_stats_get with empty
1295*2d9fd380Sjfb8856606 * security operations
1296*2d9fd380Sjfb8856606 */
1297*2d9fd380Sjfb8856606 static int
test_session_stats_get_inv_context_ops_fun(void)1298*2d9fd380Sjfb8856606 test_session_stats_get_inv_context_ops_fun(void)
1299*2d9fd380Sjfb8856606 {
1300*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1301*2d9fd380Sjfb8856606 struct rte_security_stats stats;
1302*2d9fd380Sjfb8856606 ut_params->ctx.ops = &empty_ops;
1303*2d9fd380Sjfb8856606
1304*2d9fd380Sjfb8856606 int ret = rte_security_session_stats_get(&ut_params->ctx,
1305*2d9fd380Sjfb8856606 ut_params->sess, &stats);
1306*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_stats_get,
1307*2d9fd380Sjfb8856606 ret, -ENOTSUP, "%d");
1308*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_stats_get_exp, 0);
1309*2d9fd380Sjfb8856606
1310*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1311*2d9fd380Sjfb8856606 }
1312*2d9fd380Sjfb8856606
1313*2d9fd380Sjfb8856606 /**
1314*2d9fd380Sjfb8856606 * Test execution of rte_security_session_stats_get with NULL stats parameter
1315*2d9fd380Sjfb8856606 */
1316*2d9fd380Sjfb8856606 static int
test_session_stats_get_inv_stats(void)1317*2d9fd380Sjfb8856606 test_session_stats_get_inv_stats(void)
1318*2d9fd380Sjfb8856606 {
1319*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1320*2d9fd380Sjfb8856606
1321*2d9fd380Sjfb8856606 int ret = rte_security_session_stats_get(&ut_params->ctx,
1322*2d9fd380Sjfb8856606 ut_params->sess, NULL);
1323*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_stats_get,
1324*2d9fd380Sjfb8856606 ret, -EINVAL, "%d");
1325*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_stats_get_exp, 0);
1326*2d9fd380Sjfb8856606
1327*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1328*2d9fd380Sjfb8856606 }
1329*2d9fd380Sjfb8856606
1330*2d9fd380Sjfb8856606 /**
1331*2d9fd380Sjfb8856606 * Test execution of rte_security_session_stats_get when session_stats_get
1332*2d9fd380Sjfb8856606 * security operation fails
1333*2d9fd380Sjfb8856606 */
1334*2d9fd380Sjfb8856606 static int
test_session_stats_get_ops_failure(void)1335*2d9fd380Sjfb8856606 test_session_stats_get_ops_failure(void)
1336*2d9fd380Sjfb8856606 {
1337*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1338*2d9fd380Sjfb8856606 struct rte_security_stats stats;
1339*2d9fd380Sjfb8856606
1340*2d9fd380Sjfb8856606 mock_session_stats_get_exp.device = NULL;
1341*2d9fd380Sjfb8856606 mock_session_stats_get_exp.sess = ut_params->sess;
1342*2d9fd380Sjfb8856606 mock_session_stats_get_exp.stats = &stats;
1343*2d9fd380Sjfb8856606 mock_session_stats_get_exp.ret = -1;
1344*2d9fd380Sjfb8856606
1345*2d9fd380Sjfb8856606 int ret = rte_security_session_stats_get(&ut_params->ctx,
1346*2d9fd380Sjfb8856606 ut_params->sess, &stats);
1347*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_stats_get,
1348*2d9fd380Sjfb8856606 ret, -1, "%d");
1349*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_stats_get_exp, 1);
1350*2d9fd380Sjfb8856606
1351*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1352*2d9fd380Sjfb8856606 }
1353*2d9fd380Sjfb8856606
1354*2d9fd380Sjfb8856606 /**
1355*2d9fd380Sjfb8856606 * Test execution of rte_security_session_stats_get in successful execution
1356*2d9fd380Sjfb8856606 * path
1357*2d9fd380Sjfb8856606 */
1358*2d9fd380Sjfb8856606 static int
test_session_stats_get_success(void)1359*2d9fd380Sjfb8856606 test_session_stats_get_success(void)
1360*2d9fd380Sjfb8856606 {
1361*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1362*2d9fd380Sjfb8856606 struct rte_security_stats stats;
1363*2d9fd380Sjfb8856606
1364*2d9fd380Sjfb8856606 mock_session_stats_get_exp.device = NULL;
1365*2d9fd380Sjfb8856606 mock_session_stats_get_exp.sess = ut_params->sess;
1366*2d9fd380Sjfb8856606 mock_session_stats_get_exp.stats = &stats;
1367*2d9fd380Sjfb8856606 mock_session_stats_get_exp.ret = 0;
1368*2d9fd380Sjfb8856606
1369*2d9fd380Sjfb8856606 int ret = rte_security_session_stats_get(&ut_params->ctx,
1370*2d9fd380Sjfb8856606 ut_params->sess, &stats);
1371*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_stats_get,
1372*2d9fd380Sjfb8856606 ret, 0, "%d");
1373*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_stats_get_exp, 1);
1374*2d9fd380Sjfb8856606
1375*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1376*2d9fd380Sjfb8856606 }
1377*2d9fd380Sjfb8856606
1378*2d9fd380Sjfb8856606
1379*2d9fd380Sjfb8856606 /**
1380*2d9fd380Sjfb8856606 * rte_security_session_destroy tests
1381*2d9fd380Sjfb8856606 */
1382*2d9fd380Sjfb8856606
1383*2d9fd380Sjfb8856606 /**
1384*2d9fd380Sjfb8856606 * Test execution of rte_security_session_destroy with NULL instance
1385*2d9fd380Sjfb8856606 */
1386*2d9fd380Sjfb8856606 static int
test_session_destroy_inv_context(void)1387*2d9fd380Sjfb8856606 test_session_destroy_inv_context(void)
1388*2d9fd380Sjfb8856606 {
1389*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1390*2d9fd380Sjfb8856606
1391*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(1);
1392*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(1);
1393*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(1);
1394*2d9fd380Sjfb8856606
1395*2d9fd380Sjfb8856606 int ret = rte_security_session_destroy(NULL, ut_params->sess);
1396*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_destroy,
1397*2d9fd380Sjfb8856606 ret, -EINVAL, "%d");
1398*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_destroy_exp, 0);
1399*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(1);
1400*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(1);
1401*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(1);
1402*2d9fd380Sjfb8856606
1403*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1404*2d9fd380Sjfb8856606 }
1405*2d9fd380Sjfb8856606
1406*2d9fd380Sjfb8856606 /**
1407*2d9fd380Sjfb8856606 * Test execution of rte_security_session_destroy with invalid
1408*2d9fd380Sjfb8856606 * security operations structure (NULL)
1409*2d9fd380Sjfb8856606 */
1410*2d9fd380Sjfb8856606 static int
test_session_destroy_inv_context_ops(void)1411*2d9fd380Sjfb8856606 test_session_destroy_inv_context_ops(void)
1412*2d9fd380Sjfb8856606 {
1413*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1414*2d9fd380Sjfb8856606 ut_params->ctx.ops = NULL;
1415*2d9fd380Sjfb8856606
1416*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(1);
1417*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(1);
1418*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(1);
1419*2d9fd380Sjfb8856606
1420*2d9fd380Sjfb8856606 int ret = rte_security_session_destroy(&ut_params->ctx,
1421*2d9fd380Sjfb8856606 ut_params->sess);
1422*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_destroy,
1423*2d9fd380Sjfb8856606 ret, -EINVAL, "%d");
1424*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_destroy_exp, 0);
1425*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(1);
1426*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(1);
1427*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(1);
1428*2d9fd380Sjfb8856606
1429*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1430*2d9fd380Sjfb8856606 }
1431*2d9fd380Sjfb8856606
1432*2d9fd380Sjfb8856606 /**
1433*2d9fd380Sjfb8856606 * Test execution of rte_security_session_destroy with empty
1434*2d9fd380Sjfb8856606 * security operations
1435*2d9fd380Sjfb8856606 */
1436*2d9fd380Sjfb8856606 static int
test_session_destroy_inv_context_ops_fun(void)1437*2d9fd380Sjfb8856606 test_session_destroy_inv_context_ops_fun(void)
1438*2d9fd380Sjfb8856606 {
1439*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1440*2d9fd380Sjfb8856606 ut_params->ctx.ops = &empty_ops;
1441*2d9fd380Sjfb8856606
1442*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(1);
1443*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(1);
1444*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(1);
1445*2d9fd380Sjfb8856606
1446*2d9fd380Sjfb8856606 int ret = rte_security_session_destroy(&ut_params->ctx,
1447*2d9fd380Sjfb8856606 ut_params->sess);
1448*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_destroy,
1449*2d9fd380Sjfb8856606 ret, -ENOTSUP, "%d");
1450*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_destroy_exp, 0);
1451*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(1);
1452*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(1);
1453*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(1);
1454*2d9fd380Sjfb8856606
1455*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1456*2d9fd380Sjfb8856606 }
1457*2d9fd380Sjfb8856606
1458*2d9fd380Sjfb8856606 /**
1459*2d9fd380Sjfb8856606 * Test execution of rte_security_session_destroy with NULL sess parameter
1460*2d9fd380Sjfb8856606 */
1461*2d9fd380Sjfb8856606 static int
test_session_destroy_inv_session(void)1462*2d9fd380Sjfb8856606 test_session_destroy_inv_session(void)
1463*2d9fd380Sjfb8856606 {
1464*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1465*2d9fd380Sjfb8856606
1466*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(1);
1467*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(1);
1468*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(1);
1469*2d9fd380Sjfb8856606
1470*2d9fd380Sjfb8856606 int ret = rte_security_session_destroy(&ut_params->ctx, NULL);
1471*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_destroy,
1472*2d9fd380Sjfb8856606 ret, -EINVAL, "%d");
1473*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_destroy_exp, 0);
1474*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(1);
1475*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(1);
1476*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(1);
1477*2d9fd380Sjfb8856606
1478*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1479*2d9fd380Sjfb8856606 }
1480*2d9fd380Sjfb8856606
1481*2d9fd380Sjfb8856606 /**
1482*2d9fd380Sjfb8856606 * Test execution of rte_security_session_destroy when session_destroy
1483*2d9fd380Sjfb8856606 * security operation fails
1484*2d9fd380Sjfb8856606 */
1485*2d9fd380Sjfb8856606 static int
test_session_destroy_ops_failure(void)1486*2d9fd380Sjfb8856606 test_session_destroy_ops_failure(void)
1487*2d9fd380Sjfb8856606 {
1488*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1489*2d9fd380Sjfb8856606
1490*2d9fd380Sjfb8856606 mock_session_destroy_exp.device = NULL;
1491*2d9fd380Sjfb8856606 mock_session_destroy_exp.sess = ut_params->sess;
1492*2d9fd380Sjfb8856606 mock_session_destroy_exp.ret = -1;
1493*2d9fd380Sjfb8856606
1494*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(1);
1495*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(1);
1496*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(1);
1497*2d9fd380Sjfb8856606
1498*2d9fd380Sjfb8856606 int ret = rte_security_session_destroy(&ut_params->ctx,
1499*2d9fd380Sjfb8856606 ut_params->sess);
1500*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_destroy,
1501*2d9fd380Sjfb8856606 ret, -1, "%d");
1502*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_destroy_exp, 1);
1503*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(1);
1504*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(1);
1505*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(1);
1506*2d9fd380Sjfb8856606
1507*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1508*2d9fd380Sjfb8856606 }
1509*2d9fd380Sjfb8856606
1510*2d9fd380Sjfb8856606 /**
1511*2d9fd380Sjfb8856606 * Test execution of rte_security_session_destroy in successful execution path
1512*2d9fd380Sjfb8856606 */
1513*2d9fd380Sjfb8856606 static int
test_session_destroy_success(void)1514*2d9fd380Sjfb8856606 test_session_destroy_success(void)
1515*2d9fd380Sjfb8856606 {
1516*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1517*2d9fd380Sjfb8856606
1518*2d9fd380Sjfb8856606 mock_session_destroy_exp.device = NULL;
1519*2d9fd380Sjfb8856606 mock_session_destroy_exp.sess = ut_params->sess;
1520*2d9fd380Sjfb8856606 mock_session_destroy_exp.ret = 0;
1521*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(1);
1522*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(1);
1523*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(1);
1524*2d9fd380Sjfb8856606
1525*2d9fd380Sjfb8856606 int ret = rte_security_session_destroy(&ut_params->ctx,
1526*2d9fd380Sjfb8856606 ut_params->sess);
1527*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_session_destroy,
1528*2d9fd380Sjfb8856606 ret, 0, "%d");
1529*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_session_destroy_exp, 1);
1530*2d9fd380Sjfb8856606 TEST_ASSERT_MEMPOOL_USAGE(0);
1531*2d9fd380Sjfb8856606 TEST_ASSERT_PRIV_MP_USAGE(0);
1532*2d9fd380Sjfb8856606 TEST_ASSERT_SESSION_COUNT(0);
1533*2d9fd380Sjfb8856606
1534*2d9fd380Sjfb8856606 /*
1535*2d9fd380Sjfb8856606 * Remove session from test case parameters, so it won't be destroyed
1536*2d9fd380Sjfb8856606 * during test case teardown.
1537*2d9fd380Sjfb8856606 */
1538*2d9fd380Sjfb8856606 ut_params->sess = NULL;
1539*2d9fd380Sjfb8856606
1540*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1541*2d9fd380Sjfb8856606 }
1542*2d9fd380Sjfb8856606
1543*2d9fd380Sjfb8856606
1544*2d9fd380Sjfb8856606 /**
1545*2d9fd380Sjfb8856606 * rte_security_set_pkt_metadata tests
1546*2d9fd380Sjfb8856606 */
1547*2d9fd380Sjfb8856606
1548*2d9fd380Sjfb8856606 /**
1549*2d9fd380Sjfb8856606 * Test execution of rte_security_set_pkt_metadata with NULL instance
1550*2d9fd380Sjfb8856606 */
1551*2d9fd380Sjfb8856606 static int
test_set_pkt_metadata_inv_context(void)1552*2d9fd380Sjfb8856606 test_set_pkt_metadata_inv_context(void)
1553*2d9fd380Sjfb8856606 {
1554*2d9fd380Sjfb8856606 #ifdef RTE_DEBUG
1555*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1556*2d9fd380Sjfb8856606 struct rte_mbuf m;
1557*2d9fd380Sjfb8856606 int params;
1558*2d9fd380Sjfb8856606
1559*2d9fd380Sjfb8856606 int ret = rte_security_set_pkt_metadata(NULL, ut_params->sess, &m,
1560*2d9fd380Sjfb8856606 ¶ms);
1561*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_set_pkt_metadata,
1562*2d9fd380Sjfb8856606 ret, -EINVAL, "%d");
1563*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_set_pkt_metadata_exp, 0);
1564*2d9fd380Sjfb8856606
1565*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1566*2d9fd380Sjfb8856606 #else
1567*2d9fd380Sjfb8856606 return TEST_SKIPPED;
1568*2d9fd380Sjfb8856606 #endif
1569*2d9fd380Sjfb8856606 }
1570*2d9fd380Sjfb8856606
1571*2d9fd380Sjfb8856606 /**
1572*2d9fd380Sjfb8856606 * Test execution of rte_security_set_pkt_metadata with invalid
1573*2d9fd380Sjfb8856606 * security operations structure (NULL)
1574*2d9fd380Sjfb8856606 */
1575*2d9fd380Sjfb8856606 static int
test_set_pkt_metadata_inv_context_ops(void)1576*2d9fd380Sjfb8856606 test_set_pkt_metadata_inv_context_ops(void)
1577*2d9fd380Sjfb8856606 {
1578*2d9fd380Sjfb8856606 #ifdef RTE_DEBUG
1579*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1580*2d9fd380Sjfb8856606 struct rte_mbuf m;
1581*2d9fd380Sjfb8856606 int params;
1582*2d9fd380Sjfb8856606 ut_params->ctx.ops = NULL;
1583*2d9fd380Sjfb8856606
1584*2d9fd380Sjfb8856606 int ret = rte_security_set_pkt_metadata(&ut_params->ctx,
1585*2d9fd380Sjfb8856606 ut_params->sess, &m, ¶ms);
1586*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_set_pkt_metadata,
1587*2d9fd380Sjfb8856606 ret, -EINVAL, "%d");
1588*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_set_pkt_metadata_exp, 0);
1589*2d9fd380Sjfb8856606
1590*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1591*2d9fd380Sjfb8856606 #else
1592*2d9fd380Sjfb8856606 return TEST_SKIPPED;
1593*2d9fd380Sjfb8856606 #endif
1594*2d9fd380Sjfb8856606 }
1595*2d9fd380Sjfb8856606
1596*2d9fd380Sjfb8856606 /**
1597*2d9fd380Sjfb8856606 * Test execution of rte_security_set_pkt_metadata with empty
1598*2d9fd380Sjfb8856606 * security operations
1599*2d9fd380Sjfb8856606 */
1600*2d9fd380Sjfb8856606 static int
test_set_pkt_metadata_inv_context_ops_fun(void)1601*2d9fd380Sjfb8856606 test_set_pkt_metadata_inv_context_ops_fun(void)
1602*2d9fd380Sjfb8856606 {
1603*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1604*2d9fd380Sjfb8856606 struct rte_mbuf m;
1605*2d9fd380Sjfb8856606 int params;
1606*2d9fd380Sjfb8856606 ut_params->ctx.ops = &empty_ops;
1607*2d9fd380Sjfb8856606
1608*2d9fd380Sjfb8856606 int ret = rte_security_set_pkt_metadata(&ut_params->ctx,
1609*2d9fd380Sjfb8856606 ut_params->sess, &m, ¶ms);
1610*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_set_pkt_metadata,
1611*2d9fd380Sjfb8856606 ret, -ENOTSUP, "%d");
1612*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_set_pkt_metadata_exp, 0);
1613*2d9fd380Sjfb8856606
1614*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1615*2d9fd380Sjfb8856606 }
1616*2d9fd380Sjfb8856606
1617*2d9fd380Sjfb8856606 /**
1618*2d9fd380Sjfb8856606 * Test execution of rte_security_set_pkt_metadata with NULL sess parameter
1619*2d9fd380Sjfb8856606 */
1620*2d9fd380Sjfb8856606 static int
test_set_pkt_metadata_inv_session(void)1621*2d9fd380Sjfb8856606 test_set_pkt_metadata_inv_session(void)
1622*2d9fd380Sjfb8856606 {
1623*2d9fd380Sjfb8856606 #ifdef RTE_DEBUG
1624*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1625*2d9fd380Sjfb8856606 struct rte_mbuf m;
1626*2d9fd380Sjfb8856606 int params;
1627*2d9fd380Sjfb8856606
1628*2d9fd380Sjfb8856606 int ret = rte_security_set_pkt_metadata(&ut_params->ctx, NULL,
1629*2d9fd380Sjfb8856606 &m, ¶ms);
1630*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_set_pkt_metadata,
1631*2d9fd380Sjfb8856606 ret, -EINVAL, "%d");
1632*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_set_pkt_metadata_exp, 0);
1633*2d9fd380Sjfb8856606
1634*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1635*2d9fd380Sjfb8856606 #else
1636*2d9fd380Sjfb8856606 return TEST_SKIPPED;
1637*2d9fd380Sjfb8856606 #endif
1638*2d9fd380Sjfb8856606 }
1639*2d9fd380Sjfb8856606
1640*2d9fd380Sjfb8856606 /**
1641*2d9fd380Sjfb8856606 * Test execution of rte_security_set_pkt_metadata when set_pkt_metadata
1642*2d9fd380Sjfb8856606 * security operation fails
1643*2d9fd380Sjfb8856606 */
1644*2d9fd380Sjfb8856606 static int
test_set_pkt_metadata_ops_failure(void)1645*2d9fd380Sjfb8856606 test_set_pkt_metadata_ops_failure(void)
1646*2d9fd380Sjfb8856606 {
1647*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1648*2d9fd380Sjfb8856606 struct rte_mbuf m;
1649*2d9fd380Sjfb8856606 int params;
1650*2d9fd380Sjfb8856606
1651*2d9fd380Sjfb8856606 mock_set_pkt_metadata_exp.device = NULL;
1652*2d9fd380Sjfb8856606 mock_set_pkt_metadata_exp.sess = ut_params->sess;
1653*2d9fd380Sjfb8856606 mock_set_pkt_metadata_exp.m = &m;
1654*2d9fd380Sjfb8856606 mock_set_pkt_metadata_exp.params = ¶ms;
1655*2d9fd380Sjfb8856606 mock_set_pkt_metadata_exp.ret = -1;
1656*2d9fd380Sjfb8856606
1657*2d9fd380Sjfb8856606 int ret = rte_security_set_pkt_metadata(&ut_params->ctx,
1658*2d9fd380Sjfb8856606 ut_params->sess, &m, ¶ms);
1659*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_set_pkt_metadata,
1660*2d9fd380Sjfb8856606 ret, -1, "%d");
1661*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_set_pkt_metadata_exp, 1);
1662*2d9fd380Sjfb8856606
1663*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1664*2d9fd380Sjfb8856606 }
1665*2d9fd380Sjfb8856606
1666*2d9fd380Sjfb8856606 /**
1667*2d9fd380Sjfb8856606 * Test execution of rte_security_set_pkt_metadata in successful execution path
1668*2d9fd380Sjfb8856606 */
1669*2d9fd380Sjfb8856606 static int
test_set_pkt_metadata_success(void)1670*2d9fd380Sjfb8856606 test_set_pkt_metadata_success(void)
1671*2d9fd380Sjfb8856606 {
1672*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1673*2d9fd380Sjfb8856606 struct rte_mbuf m;
1674*2d9fd380Sjfb8856606 int params;
1675*2d9fd380Sjfb8856606
1676*2d9fd380Sjfb8856606 mock_set_pkt_metadata_exp.device = NULL;
1677*2d9fd380Sjfb8856606 mock_set_pkt_metadata_exp.sess = ut_params->sess;
1678*2d9fd380Sjfb8856606 mock_set_pkt_metadata_exp.m = &m;
1679*2d9fd380Sjfb8856606 mock_set_pkt_metadata_exp.params = ¶ms;
1680*2d9fd380Sjfb8856606 mock_set_pkt_metadata_exp.ret = 0;
1681*2d9fd380Sjfb8856606
1682*2d9fd380Sjfb8856606 int ret = rte_security_set_pkt_metadata(&ut_params->ctx,
1683*2d9fd380Sjfb8856606 ut_params->sess, &m, ¶ms);
1684*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_set_pkt_metadata,
1685*2d9fd380Sjfb8856606 ret, 0, "%d");
1686*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_set_pkt_metadata_exp, 1);
1687*2d9fd380Sjfb8856606
1688*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1689*2d9fd380Sjfb8856606 }
1690*2d9fd380Sjfb8856606
1691*2d9fd380Sjfb8856606
1692*2d9fd380Sjfb8856606 /**
1693*2d9fd380Sjfb8856606 * rte_security_get_userdata tests
1694*2d9fd380Sjfb8856606 */
1695*2d9fd380Sjfb8856606
1696*2d9fd380Sjfb8856606 /**
1697*2d9fd380Sjfb8856606 * Test execution of rte_security_get_userdata with NULL instance
1698*2d9fd380Sjfb8856606 */
1699*2d9fd380Sjfb8856606 static int
test_get_userdata_inv_context(void)1700*2d9fd380Sjfb8856606 test_get_userdata_inv_context(void)
1701*2d9fd380Sjfb8856606 {
1702*2d9fd380Sjfb8856606 #ifdef RTE_DEBUG
1703*2d9fd380Sjfb8856606 uint64_t md = 0xDEADBEEF;
1704*2d9fd380Sjfb8856606
1705*2d9fd380Sjfb8856606 void *ret = rte_security_get_userdata(NULL, md);
1706*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_get_userdata,
1707*2d9fd380Sjfb8856606 ret, NULL, "%p");
1708*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_get_userdata_exp, 0);
1709*2d9fd380Sjfb8856606
1710*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1711*2d9fd380Sjfb8856606 #else
1712*2d9fd380Sjfb8856606 return TEST_SKIPPED;
1713*2d9fd380Sjfb8856606 #endif
1714*2d9fd380Sjfb8856606 }
1715*2d9fd380Sjfb8856606
1716*2d9fd380Sjfb8856606 /**
1717*2d9fd380Sjfb8856606 * Test execution of rte_security_get_userdata with invalid
1718*2d9fd380Sjfb8856606 * security operations structure (NULL)
1719*2d9fd380Sjfb8856606 */
1720*2d9fd380Sjfb8856606 static int
test_get_userdata_inv_context_ops(void)1721*2d9fd380Sjfb8856606 test_get_userdata_inv_context_ops(void)
1722*2d9fd380Sjfb8856606 {
1723*2d9fd380Sjfb8856606 #ifdef RTE_DEBUG
1724*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1725*2d9fd380Sjfb8856606 uint64_t md = 0xDEADBEEF;
1726*2d9fd380Sjfb8856606 ut_params->ctx.ops = NULL;
1727*2d9fd380Sjfb8856606
1728*2d9fd380Sjfb8856606 void *ret = rte_security_get_userdata(&ut_params->ctx, md);
1729*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_get_userdata,
1730*2d9fd380Sjfb8856606 ret, NULL, "%p");
1731*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_get_userdata_exp, 0);
1732*2d9fd380Sjfb8856606
1733*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1734*2d9fd380Sjfb8856606 #else
1735*2d9fd380Sjfb8856606 return TEST_SKIPPED;
1736*2d9fd380Sjfb8856606 #endif
1737*2d9fd380Sjfb8856606 }
1738*2d9fd380Sjfb8856606
1739*2d9fd380Sjfb8856606 /**
1740*2d9fd380Sjfb8856606 * Test execution of rte_security_get_userdata with empty
1741*2d9fd380Sjfb8856606 * security operations
1742*2d9fd380Sjfb8856606 */
1743*2d9fd380Sjfb8856606 static int
test_get_userdata_inv_context_ops_fun(void)1744*2d9fd380Sjfb8856606 test_get_userdata_inv_context_ops_fun(void)
1745*2d9fd380Sjfb8856606 {
1746*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1747*2d9fd380Sjfb8856606 uint64_t md = 0xDEADBEEF;
1748*2d9fd380Sjfb8856606 ut_params->ctx.ops = &empty_ops;
1749*2d9fd380Sjfb8856606
1750*2d9fd380Sjfb8856606 void *ret = rte_security_get_userdata(&ut_params->ctx, md);
1751*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_get_userdata,
1752*2d9fd380Sjfb8856606 ret, NULL, "%p");
1753*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_get_userdata_exp, 0);
1754*2d9fd380Sjfb8856606
1755*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1756*2d9fd380Sjfb8856606 }
1757*2d9fd380Sjfb8856606
1758*2d9fd380Sjfb8856606 /**
1759*2d9fd380Sjfb8856606 * Test execution of rte_security_get_userdata when get_userdata
1760*2d9fd380Sjfb8856606 * security operation fails
1761*2d9fd380Sjfb8856606 */
1762*2d9fd380Sjfb8856606 static int
test_get_userdata_ops_failure(void)1763*2d9fd380Sjfb8856606 test_get_userdata_ops_failure(void)
1764*2d9fd380Sjfb8856606 {
1765*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1766*2d9fd380Sjfb8856606 uint64_t md = 0xDEADBEEF;
1767*2d9fd380Sjfb8856606 void *userdata = (void *)0x7E577E57;
1768*2d9fd380Sjfb8856606
1769*2d9fd380Sjfb8856606 mock_get_userdata_exp.device = NULL;
1770*2d9fd380Sjfb8856606 mock_get_userdata_exp.md = md;
1771*2d9fd380Sjfb8856606 mock_get_userdata_exp.userdata = userdata;
1772*2d9fd380Sjfb8856606 mock_get_userdata_exp.ret = -1;
1773*2d9fd380Sjfb8856606
1774*2d9fd380Sjfb8856606 void *ret = rte_security_get_userdata(&ut_params->ctx, md);
1775*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_get_userdata,
1776*2d9fd380Sjfb8856606 ret, NULL, "%p");
1777*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_get_userdata_exp, 1);
1778*2d9fd380Sjfb8856606
1779*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1780*2d9fd380Sjfb8856606 }
1781*2d9fd380Sjfb8856606
1782*2d9fd380Sjfb8856606 /**
1783*2d9fd380Sjfb8856606 * Test execution of rte_security_get_userdata in successful execution path
1784*2d9fd380Sjfb8856606 */
1785*2d9fd380Sjfb8856606 static int
test_get_userdata_success(void)1786*2d9fd380Sjfb8856606 test_get_userdata_success(void)
1787*2d9fd380Sjfb8856606 {
1788*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1789*2d9fd380Sjfb8856606 uint64_t md = 0xDEADBEEF;
1790*2d9fd380Sjfb8856606 void *userdata = (void *)0x7E577E57;
1791*2d9fd380Sjfb8856606
1792*2d9fd380Sjfb8856606 mock_get_userdata_exp.device = NULL;
1793*2d9fd380Sjfb8856606 mock_get_userdata_exp.md = md;
1794*2d9fd380Sjfb8856606 mock_get_userdata_exp.userdata = userdata;
1795*2d9fd380Sjfb8856606 mock_get_userdata_exp.ret = 0;
1796*2d9fd380Sjfb8856606
1797*2d9fd380Sjfb8856606 void *ret = rte_security_get_userdata(&ut_params->ctx, md);
1798*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_get_userdata,
1799*2d9fd380Sjfb8856606 ret, userdata, "%p");
1800*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_get_userdata_exp, 1);
1801*2d9fd380Sjfb8856606
1802*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1803*2d9fd380Sjfb8856606 }
1804*2d9fd380Sjfb8856606
1805*2d9fd380Sjfb8856606
1806*2d9fd380Sjfb8856606 /**
1807*2d9fd380Sjfb8856606 * rte_security_capabilities_get tests
1808*2d9fd380Sjfb8856606 */
1809*2d9fd380Sjfb8856606
1810*2d9fd380Sjfb8856606 /**
1811*2d9fd380Sjfb8856606 * Test execution of rte_security_capabilities_get with NULL instance
1812*2d9fd380Sjfb8856606 */
1813*2d9fd380Sjfb8856606 static int
test_capabilities_get_inv_context(void)1814*2d9fd380Sjfb8856606 test_capabilities_get_inv_context(void)
1815*2d9fd380Sjfb8856606 {
1816*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
1817*2d9fd380Sjfb8856606 ret = rte_security_capabilities_get(NULL);
1818*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capabilities_get,
1819*2d9fd380Sjfb8856606 ret, NULL, "%p");
1820*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 0);
1821*2d9fd380Sjfb8856606
1822*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1823*2d9fd380Sjfb8856606 }
1824*2d9fd380Sjfb8856606
1825*2d9fd380Sjfb8856606 /**
1826*2d9fd380Sjfb8856606 * Test execution of rte_security_capabilities_get with invalid
1827*2d9fd380Sjfb8856606 * security operations structure (NULL)
1828*2d9fd380Sjfb8856606 */
1829*2d9fd380Sjfb8856606 static int
test_capabilities_get_inv_context_ops(void)1830*2d9fd380Sjfb8856606 test_capabilities_get_inv_context_ops(void)
1831*2d9fd380Sjfb8856606 {
1832*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1833*2d9fd380Sjfb8856606 ut_params->ctx.ops = NULL;
1834*2d9fd380Sjfb8856606
1835*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
1836*2d9fd380Sjfb8856606 ret = rte_security_capabilities_get(&ut_params->ctx);
1837*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capabilities_get,
1838*2d9fd380Sjfb8856606 ret, NULL, "%p");
1839*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 0);
1840*2d9fd380Sjfb8856606
1841*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1842*2d9fd380Sjfb8856606 }
1843*2d9fd380Sjfb8856606
1844*2d9fd380Sjfb8856606 /**
1845*2d9fd380Sjfb8856606 * Test execution of rte_security_capabilities_get with empty
1846*2d9fd380Sjfb8856606 * security operations
1847*2d9fd380Sjfb8856606 */
1848*2d9fd380Sjfb8856606 static int
test_capabilities_get_inv_context_ops_fun(void)1849*2d9fd380Sjfb8856606 test_capabilities_get_inv_context_ops_fun(void)
1850*2d9fd380Sjfb8856606 {
1851*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1852*2d9fd380Sjfb8856606 ut_params->ctx.ops = &empty_ops;
1853*2d9fd380Sjfb8856606
1854*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
1855*2d9fd380Sjfb8856606 ret = rte_security_capabilities_get(&ut_params->ctx);
1856*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capabilities_get,
1857*2d9fd380Sjfb8856606 ret, NULL, "%p");
1858*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 0);
1859*2d9fd380Sjfb8856606
1860*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1861*2d9fd380Sjfb8856606 }
1862*2d9fd380Sjfb8856606
1863*2d9fd380Sjfb8856606 /**
1864*2d9fd380Sjfb8856606 * Test execution of rte_security_capabilities_get when capabilities_get
1865*2d9fd380Sjfb8856606 * security operation fails
1866*2d9fd380Sjfb8856606 */
1867*2d9fd380Sjfb8856606 static int
test_capabilities_get_ops_failure(void)1868*2d9fd380Sjfb8856606 test_capabilities_get_ops_failure(void)
1869*2d9fd380Sjfb8856606 {
1870*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1871*2d9fd380Sjfb8856606
1872*2d9fd380Sjfb8856606 mock_capabilities_get_exp.device = NULL;
1873*2d9fd380Sjfb8856606 mock_capabilities_get_exp.ret = NULL;
1874*2d9fd380Sjfb8856606
1875*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
1876*2d9fd380Sjfb8856606 ret = rte_security_capabilities_get(&ut_params->ctx);
1877*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capabilities_get,
1878*2d9fd380Sjfb8856606 ret, NULL, "%p");
1879*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
1880*2d9fd380Sjfb8856606
1881*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1882*2d9fd380Sjfb8856606 }
1883*2d9fd380Sjfb8856606
1884*2d9fd380Sjfb8856606 /**
1885*2d9fd380Sjfb8856606 * Test execution of rte_security_capabilities_get in successful execution path
1886*2d9fd380Sjfb8856606 */
1887*2d9fd380Sjfb8856606 static int
test_capabilities_get_success(void)1888*2d9fd380Sjfb8856606 test_capabilities_get_success(void)
1889*2d9fd380Sjfb8856606 {
1890*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1891*2d9fd380Sjfb8856606 struct rte_security_capability capabilities;
1892*2d9fd380Sjfb8856606
1893*2d9fd380Sjfb8856606 mock_capabilities_get_exp.device = NULL;
1894*2d9fd380Sjfb8856606 mock_capabilities_get_exp.ret = &capabilities;
1895*2d9fd380Sjfb8856606
1896*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
1897*2d9fd380Sjfb8856606 ret = rte_security_capabilities_get(&ut_params->ctx);
1898*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capabilities_get,
1899*2d9fd380Sjfb8856606 ret, &capabilities, "%p");
1900*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
1901*2d9fd380Sjfb8856606
1902*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1903*2d9fd380Sjfb8856606 }
1904*2d9fd380Sjfb8856606
1905*2d9fd380Sjfb8856606
1906*2d9fd380Sjfb8856606 /**
1907*2d9fd380Sjfb8856606 * rte_security_capability_get tests
1908*2d9fd380Sjfb8856606 */
1909*2d9fd380Sjfb8856606
1910*2d9fd380Sjfb8856606 /**
1911*2d9fd380Sjfb8856606 * Test execution of rte_security_capability_get with NULL instance
1912*2d9fd380Sjfb8856606 */
1913*2d9fd380Sjfb8856606 static int
test_capability_get_inv_context(void)1914*2d9fd380Sjfb8856606 test_capability_get_inv_context(void)
1915*2d9fd380Sjfb8856606 {
1916*2d9fd380Sjfb8856606 struct rte_security_capability_idx idx;
1917*2d9fd380Sjfb8856606
1918*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
1919*2d9fd380Sjfb8856606 ret = rte_security_capability_get(NULL, &idx);
1920*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
1921*2d9fd380Sjfb8856606 ret, NULL, "%p");
1922*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 0);
1923*2d9fd380Sjfb8856606
1924*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1925*2d9fd380Sjfb8856606 }
1926*2d9fd380Sjfb8856606
1927*2d9fd380Sjfb8856606 /**
1928*2d9fd380Sjfb8856606 * Test execution of rte_security_capability_get with invalid
1929*2d9fd380Sjfb8856606 * security operations structure (NULL)
1930*2d9fd380Sjfb8856606 */
1931*2d9fd380Sjfb8856606 static int
test_capability_get_inv_context_ops(void)1932*2d9fd380Sjfb8856606 test_capability_get_inv_context_ops(void)
1933*2d9fd380Sjfb8856606 {
1934*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1935*2d9fd380Sjfb8856606 struct rte_security_capability_idx idx;
1936*2d9fd380Sjfb8856606 ut_params->ctx.ops = NULL;
1937*2d9fd380Sjfb8856606
1938*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
1939*2d9fd380Sjfb8856606 ret = rte_security_capability_get(&ut_params->ctx, &idx);
1940*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
1941*2d9fd380Sjfb8856606 ret, NULL, "%p");
1942*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 0);
1943*2d9fd380Sjfb8856606
1944*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1945*2d9fd380Sjfb8856606 }
1946*2d9fd380Sjfb8856606
1947*2d9fd380Sjfb8856606 /**
1948*2d9fd380Sjfb8856606 * Test execution of rte_security_capability_get with empty
1949*2d9fd380Sjfb8856606 * security operations
1950*2d9fd380Sjfb8856606 */
1951*2d9fd380Sjfb8856606 static int
test_capability_get_inv_context_ops_fun(void)1952*2d9fd380Sjfb8856606 test_capability_get_inv_context_ops_fun(void)
1953*2d9fd380Sjfb8856606 {
1954*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1955*2d9fd380Sjfb8856606 struct rte_security_capability_idx idx;
1956*2d9fd380Sjfb8856606 ut_params->ctx.ops = &empty_ops;
1957*2d9fd380Sjfb8856606
1958*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
1959*2d9fd380Sjfb8856606 ret = rte_security_capability_get(&ut_params->ctx, &idx);
1960*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
1961*2d9fd380Sjfb8856606 ret, NULL, "%p");
1962*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 0);
1963*2d9fd380Sjfb8856606
1964*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1965*2d9fd380Sjfb8856606 }
1966*2d9fd380Sjfb8856606
1967*2d9fd380Sjfb8856606 /**
1968*2d9fd380Sjfb8856606 * Test execution of rte_security_capability_get with NULL idx parameter
1969*2d9fd380Sjfb8856606 */
1970*2d9fd380Sjfb8856606 static int
test_capability_get_inv_idx(void)1971*2d9fd380Sjfb8856606 test_capability_get_inv_idx(void)
1972*2d9fd380Sjfb8856606 {
1973*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1974*2d9fd380Sjfb8856606
1975*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
1976*2d9fd380Sjfb8856606 ret = rte_security_capability_get(&ut_params->ctx, NULL);
1977*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
1978*2d9fd380Sjfb8856606 ret, NULL, "%p");
1979*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 0);
1980*2d9fd380Sjfb8856606
1981*2d9fd380Sjfb8856606 return TEST_SUCCESS;
1982*2d9fd380Sjfb8856606 }
1983*2d9fd380Sjfb8856606
1984*2d9fd380Sjfb8856606 /**
1985*2d9fd380Sjfb8856606 * Test execution of rte_security_capability_get when capabilities_get
1986*2d9fd380Sjfb8856606 * security operation fails
1987*2d9fd380Sjfb8856606 */
1988*2d9fd380Sjfb8856606 static int
test_capability_get_ops_failure(void)1989*2d9fd380Sjfb8856606 test_capability_get_ops_failure(void)
1990*2d9fd380Sjfb8856606 {
1991*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
1992*2d9fd380Sjfb8856606 struct rte_security_capability_idx idx;
1993*2d9fd380Sjfb8856606
1994*2d9fd380Sjfb8856606 mock_capabilities_get_exp.device = NULL;
1995*2d9fd380Sjfb8856606 mock_capabilities_get_exp.ret = NULL;
1996*2d9fd380Sjfb8856606
1997*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
1998*2d9fd380Sjfb8856606 ret = rte_security_capability_get(&ut_params->ctx, &idx);
1999*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
2000*2d9fd380Sjfb8856606 ret, NULL, "%p");
2001*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
2002*2d9fd380Sjfb8856606
2003*2d9fd380Sjfb8856606 return TEST_SUCCESS;
2004*2d9fd380Sjfb8856606 }
2005*2d9fd380Sjfb8856606
2006*2d9fd380Sjfb8856606 /**
2007*2d9fd380Sjfb8856606 * Test execution of rte_security_capability_get when capabilities table
2008*2d9fd380Sjfb8856606 * is empty (contains only RTE_SECURITY_ACTION_TYPE_NONE ending entry)
2009*2d9fd380Sjfb8856606 */
2010*2d9fd380Sjfb8856606 static int
test_capability_get_empty_table(void)2011*2d9fd380Sjfb8856606 test_capability_get_empty_table(void)
2012*2d9fd380Sjfb8856606 {
2013*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
2014*2d9fd380Sjfb8856606 struct rte_security_capability_idx idx;
2015*2d9fd380Sjfb8856606 struct rte_security_capability capabilities[] = {
2016*2d9fd380Sjfb8856606 {
2017*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_NONE,
2018*2d9fd380Sjfb8856606 },
2019*2d9fd380Sjfb8856606 };
2020*2d9fd380Sjfb8856606
2021*2d9fd380Sjfb8856606 mock_capabilities_get_exp.device = NULL;
2022*2d9fd380Sjfb8856606 mock_capabilities_get_exp.ret = capabilities;
2023*2d9fd380Sjfb8856606
2024*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
2025*2d9fd380Sjfb8856606 ret = rte_security_capability_get(&ut_params->ctx, &idx);
2026*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
2027*2d9fd380Sjfb8856606 ret, NULL, "%p");
2028*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
2029*2d9fd380Sjfb8856606
2030*2d9fd380Sjfb8856606 return TEST_SUCCESS;
2031*2d9fd380Sjfb8856606 }
2032*2d9fd380Sjfb8856606
2033*2d9fd380Sjfb8856606 /**
2034*2d9fd380Sjfb8856606 * Test execution of rte_security_capability_get when capabilities table
2035*2d9fd380Sjfb8856606 * does not contain entry with matching action
2036*2d9fd380Sjfb8856606 */
2037*2d9fd380Sjfb8856606 static int
test_capability_get_no_matching_action(void)2038*2d9fd380Sjfb8856606 test_capability_get_no_matching_action(void)
2039*2d9fd380Sjfb8856606 {
2040*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
2041*2d9fd380Sjfb8856606 struct rte_security_capability_idx idx = {
2042*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2043*2d9fd380Sjfb8856606 };
2044*2d9fd380Sjfb8856606 struct rte_security_capability capabilities[] = {
2045*2d9fd380Sjfb8856606 {
2046*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_INLINE_CRYPTO,
2047*2d9fd380Sjfb8856606 },
2048*2d9fd380Sjfb8856606 {
2049*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_INLINE_PROTOCOL,
2050*2d9fd380Sjfb8856606 },
2051*2d9fd380Sjfb8856606 {
2052*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_NONE,
2053*2d9fd380Sjfb8856606 },
2054*2d9fd380Sjfb8856606 };
2055*2d9fd380Sjfb8856606
2056*2d9fd380Sjfb8856606 mock_capabilities_get_exp.device = NULL;
2057*2d9fd380Sjfb8856606 mock_capabilities_get_exp.ret = capabilities;
2058*2d9fd380Sjfb8856606
2059*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
2060*2d9fd380Sjfb8856606 ret = rte_security_capability_get(&ut_params->ctx, &idx);
2061*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
2062*2d9fd380Sjfb8856606 ret, NULL, "%p");
2063*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
2064*2d9fd380Sjfb8856606
2065*2d9fd380Sjfb8856606 return TEST_SUCCESS;
2066*2d9fd380Sjfb8856606 }
2067*2d9fd380Sjfb8856606
2068*2d9fd380Sjfb8856606 /**
2069*2d9fd380Sjfb8856606 * Test execution of rte_security_capability_get when capabilities table
2070*2d9fd380Sjfb8856606 * does not contain entry with matching protocol
2071*2d9fd380Sjfb8856606 */
2072*2d9fd380Sjfb8856606 static int
test_capability_get_no_matching_protocol(void)2073*2d9fd380Sjfb8856606 test_capability_get_no_matching_protocol(void)
2074*2d9fd380Sjfb8856606 {
2075*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
2076*2d9fd380Sjfb8856606 struct rte_security_capability_idx idx = {
2077*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2078*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
2079*2d9fd380Sjfb8856606 };
2080*2d9fd380Sjfb8856606 struct rte_security_capability capabilities[] = {
2081*2d9fd380Sjfb8856606 {
2082*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2083*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_MACSEC,
2084*2d9fd380Sjfb8856606 },
2085*2d9fd380Sjfb8856606 {
2086*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2087*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_PDCP,
2088*2d9fd380Sjfb8856606 },
2089*2d9fd380Sjfb8856606 {
2090*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_NONE,
2091*2d9fd380Sjfb8856606 },
2092*2d9fd380Sjfb8856606 };
2093*2d9fd380Sjfb8856606
2094*2d9fd380Sjfb8856606 mock_capabilities_get_exp.device = NULL;
2095*2d9fd380Sjfb8856606 mock_capabilities_get_exp.ret = capabilities;
2096*2d9fd380Sjfb8856606
2097*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
2098*2d9fd380Sjfb8856606 ret = rte_security_capability_get(&ut_params->ctx, &idx);
2099*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
2100*2d9fd380Sjfb8856606 ret, NULL, "%p");
2101*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
2102*2d9fd380Sjfb8856606
2103*2d9fd380Sjfb8856606 return TEST_SUCCESS;
2104*2d9fd380Sjfb8856606 }
2105*2d9fd380Sjfb8856606
2106*2d9fd380Sjfb8856606 /**
2107*2d9fd380Sjfb8856606 * Test execution of rte_security_capability_get when macsec protocol
2108*2d9fd380Sjfb8856606 * is searched and capabilities table contain proper entry.
2109*2d9fd380Sjfb8856606 * However macsec records search is not supported in rte_security.
2110*2d9fd380Sjfb8856606 */
2111*2d9fd380Sjfb8856606 static int
test_capability_get_no_support_for_macsec(void)2112*2d9fd380Sjfb8856606 test_capability_get_no_support_for_macsec(void)
2113*2d9fd380Sjfb8856606 {
2114*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
2115*2d9fd380Sjfb8856606 struct rte_security_capability_idx idx = {
2116*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2117*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_MACSEC,
2118*2d9fd380Sjfb8856606 };
2119*2d9fd380Sjfb8856606 struct rte_security_capability capabilities[] = {
2120*2d9fd380Sjfb8856606 {
2121*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2122*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_MACSEC,
2123*2d9fd380Sjfb8856606 },
2124*2d9fd380Sjfb8856606 {
2125*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_NONE,
2126*2d9fd380Sjfb8856606 },
2127*2d9fd380Sjfb8856606 };
2128*2d9fd380Sjfb8856606
2129*2d9fd380Sjfb8856606 mock_capabilities_get_exp.device = NULL;
2130*2d9fd380Sjfb8856606 mock_capabilities_get_exp.ret = capabilities;
2131*2d9fd380Sjfb8856606
2132*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
2133*2d9fd380Sjfb8856606 ret = rte_security_capability_get(&ut_params->ctx, &idx);
2134*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
2135*2d9fd380Sjfb8856606 ret, NULL, "%p");
2136*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
2137*2d9fd380Sjfb8856606
2138*2d9fd380Sjfb8856606 return TEST_SUCCESS;
2139*2d9fd380Sjfb8856606 }
2140*2d9fd380Sjfb8856606
2141*2d9fd380Sjfb8856606 /**
2142*2d9fd380Sjfb8856606 * Test execution of rte_security_capability_get when capabilities table
2143*2d9fd380Sjfb8856606 * does not contain entry with matching ipsec proto field
2144*2d9fd380Sjfb8856606 */
2145*2d9fd380Sjfb8856606 static int
test_capability_get_ipsec_mismatch_proto(void)2146*2d9fd380Sjfb8856606 test_capability_get_ipsec_mismatch_proto(void)
2147*2d9fd380Sjfb8856606 {
2148*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
2149*2d9fd380Sjfb8856606 struct rte_security_capability_idx idx = {
2150*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2151*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
2152*2d9fd380Sjfb8856606 .ipsec = {
2153*2d9fd380Sjfb8856606 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
2154*2d9fd380Sjfb8856606 },
2155*2d9fd380Sjfb8856606 };
2156*2d9fd380Sjfb8856606 struct rte_security_capability capabilities[] = {
2157*2d9fd380Sjfb8856606 {
2158*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2159*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
2160*2d9fd380Sjfb8856606 .ipsec = {
2161*2d9fd380Sjfb8856606 .proto = RTE_SECURITY_IPSEC_SA_PROTO_AH,
2162*2d9fd380Sjfb8856606 },
2163*2d9fd380Sjfb8856606 },
2164*2d9fd380Sjfb8856606 {
2165*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_NONE,
2166*2d9fd380Sjfb8856606 },
2167*2d9fd380Sjfb8856606 };
2168*2d9fd380Sjfb8856606
2169*2d9fd380Sjfb8856606 mock_capabilities_get_exp.device = NULL;
2170*2d9fd380Sjfb8856606 mock_capabilities_get_exp.ret = capabilities;
2171*2d9fd380Sjfb8856606
2172*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
2173*2d9fd380Sjfb8856606 ret = rte_security_capability_get(&ut_params->ctx, &idx);
2174*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
2175*2d9fd380Sjfb8856606 ret, NULL, "%p");
2176*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
2177*2d9fd380Sjfb8856606
2178*2d9fd380Sjfb8856606 return TEST_SUCCESS;
2179*2d9fd380Sjfb8856606 }
2180*2d9fd380Sjfb8856606
2181*2d9fd380Sjfb8856606 /**
2182*2d9fd380Sjfb8856606 * Test execution of rte_security_capability_get when capabilities table
2183*2d9fd380Sjfb8856606 * does not contain entry with matching ipsec mode field
2184*2d9fd380Sjfb8856606 */
2185*2d9fd380Sjfb8856606 static int
test_capability_get_ipsec_mismatch_mode(void)2186*2d9fd380Sjfb8856606 test_capability_get_ipsec_mismatch_mode(void)
2187*2d9fd380Sjfb8856606 {
2188*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
2189*2d9fd380Sjfb8856606 struct rte_security_capability_idx idx = {
2190*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2191*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
2192*2d9fd380Sjfb8856606 .ipsec = {
2193*2d9fd380Sjfb8856606 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
2194*2d9fd380Sjfb8856606 .mode = RTE_SECURITY_IPSEC_SA_MODE_TRANSPORT,
2195*2d9fd380Sjfb8856606 },
2196*2d9fd380Sjfb8856606 };
2197*2d9fd380Sjfb8856606 struct rte_security_capability capabilities[] = {
2198*2d9fd380Sjfb8856606 {
2199*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2200*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
2201*2d9fd380Sjfb8856606 .ipsec = {
2202*2d9fd380Sjfb8856606 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
2203*2d9fd380Sjfb8856606 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
2204*2d9fd380Sjfb8856606 },
2205*2d9fd380Sjfb8856606 },
2206*2d9fd380Sjfb8856606 {
2207*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_NONE,
2208*2d9fd380Sjfb8856606 },
2209*2d9fd380Sjfb8856606 };
2210*2d9fd380Sjfb8856606
2211*2d9fd380Sjfb8856606 mock_capabilities_get_exp.device = NULL;
2212*2d9fd380Sjfb8856606 mock_capabilities_get_exp.ret = capabilities;
2213*2d9fd380Sjfb8856606
2214*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
2215*2d9fd380Sjfb8856606 ret = rte_security_capability_get(&ut_params->ctx, &idx);
2216*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
2217*2d9fd380Sjfb8856606 ret, NULL, "%p");
2218*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
2219*2d9fd380Sjfb8856606
2220*2d9fd380Sjfb8856606 return TEST_SUCCESS;
2221*2d9fd380Sjfb8856606 }
2222*2d9fd380Sjfb8856606
2223*2d9fd380Sjfb8856606 /**
2224*2d9fd380Sjfb8856606 * Test execution of rte_security_capability_get when capabilities table
2225*2d9fd380Sjfb8856606 * does not contain entry with matching ipsec direction field
2226*2d9fd380Sjfb8856606 */
2227*2d9fd380Sjfb8856606 static int
test_capability_get_ipsec_mismatch_dir(void)2228*2d9fd380Sjfb8856606 test_capability_get_ipsec_mismatch_dir(void)
2229*2d9fd380Sjfb8856606 {
2230*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
2231*2d9fd380Sjfb8856606 struct rte_security_capability_idx idx = {
2232*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2233*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
2234*2d9fd380Sjfb8856606 .ipsec = {
2235*2d9fd380Sjfb8856606 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
2236*2d9fd380Sjfb8856606 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
2237*2d9fd380Sjfb8856606 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
2238*2d9fd380Sjfb8856606 },
2239*2d9fd380Sjfb8856606 };
2240*2d9fd380Sjfb8856606 struct rte_security_capability capabilities[] = {
2241*2d9fd380Sjfb8856606 {
2242*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2243*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
2244*2d9fd380Sjfb8856606 .ipsec = {
2245*2d9fd380Sjfb8856606 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
2246*2d9fd380Sjfb8856606 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
2247*2d9fd380Sjfb8856606 .direction = RTE_SECURITY_IPSEC_SA_DIR_INGRESS,
2248*2d9fd380Sjfb8856606 },
2249*2d9fd380Sjfb8856606 },
2250*2d9fd380Sjfb8856606 {
2251*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_NONE,
2252*2d9fd380Sjfb8856606 },
2253*2d9fd380Sjfb8856606 };
2254*2d9fd380Sjfb8856606
2255*2d9fd380Sjfb8856606 mock_capabilities_get_exp.device = NULL;
2256*2d9fd380Sjfb8856606 mock_capabilities_get_exp.ret = capabilities;
2257*2d9fd380Sjfb8856606
2258*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
2259*2d9fd380Sjfb8856606 ret = rte_security_capability_get(&ut_params->ctx, &idx);
2260*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
2261*2d9fd380Sjfb8856606 ret, NULL, "%p");
2262*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
2263*2d9fd380Sjfb8856606
2264*2d9fd380Sjfb8856606 return TEST_SUCCESS;
2265*2d9fd380Sjfb8856606 }
2266*2d9fd380Sjfb8856606
2267*2d9fd380Sjfb8856606 /**
2268*2d9fd380Sjfb8856606 * Test execution of rte_security_capability_get when capabilities table
2269*2d9fd380Sjfb8856606 * contains matching ipsec entry
2270*2d9fd380Sjfb8856606 */
2271*2d9fd380Sjfb8856606 static int
test_capability_get_ipsec_match(void)2272*2d9fd380Sjfb8856606 test_capability_get_ipsec_match(void)
2273*2d9fd380Sjfb8856606 {
2274*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
2275*2d9fd380Sjfb8856606 struct rte_security_capability_idx idx = {
2276*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2277*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
2278*2d9fd380Sjfb8856606 .ipsec = {
2279*2d9fd380Sjfb8856606 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
2280*2d9fd380Sjfb8856606 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
2281*2d9fd380Sjfb8856606 .direction = RTE_SECURITY_IPSEC_SA_DIR_INGRESS,
2282*2d9fd380Sjfb8856606 },
2283*2d9fd380Sjfb8856606 };
2284*2d9fd380Sjfb8856606 struct rte_security_capability capabilities[] = {
2285*2d9fd380Sjfb8856606 {
2286*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_INLINE_CRYPTO,
2287*2d9fd380Sjfb8856606 },
2288*2d9fd380Sjfb8856606 {
2289*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2290*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_IPSEC,
2291*2d9fd380Sjfb8856606 .ipsec = {
2292*2d9fd380Sjfb8856606 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
2293*2d9fd380Sjfb8856606 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
2294*2d9fd380Sjfb8856606 .direction = RTE_SECURITY_IPSEC_SA_DIR_INGRESS,
2295*2d9fd380Sjfb8856606 },
2296*2d9fd380Sjfb8856606 },
2297*2d9fd380Sjfb8856606 {
2298*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_NONE,
2299*2d9fd380Sjfb8856606 },
2300*2d9fd380Sjfb8856606 };
2301*2d9fd380Sjfb8856606
2302*2d9fd380Sjfb8856606 mock_capabilities_get_exp.device = NULL;
2303*2d9fd380Sjfb8856606 mock_capabilities_get_exp.ret = capabilities;
2304*2d9fd380Sjfb8856606
2305*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
2306*2d9fd380Sjfb8856606 ret = rte_security_capability_get(&ut_params->ctx, &idx);
2307*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
2308*2d9fd380Sjfb8856606 ret, &capabilities[1], "%p");
2309*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
2310*2d9fd380Sjfb8856606
2311*2d9fd380Sjfb8856606 return TEST_SUCCESS;
2312*2d9fd380Sjfb8856606 }
2313*2d9fd380Sjfb8856606
2314*2d9fd380Sjfb8856606 /**
2315*2d9fd380Sjfb8856606 * Test execution of rte_security_capability_get when capabilities table
2316*2d9fd380Sjfb8856606 * does not contain entry with matching pdcp domain field
2317*2d9fd380Sjfb8856606 */
2318*2d9fd380Sjfb8856606 static int
test_capability_get_pdcp_mismatch_domain(void)2319*2d9fd380Sjfb8856606 test_capability_get_pdcp_mismatch_domain(void)
2320*2d9fd380Sjfb8856606 {
2321*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
2322*2d9fd380Sjfb8856606 struct rte_security_capability_idx idx = {
2323*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2324*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_PDCP,
2325*2d9fd380Sjfb8856606 .pdcp = {
2326*2d9fd380Sjfb8856606 .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
2327*2d9fd380Sjfb8856606 },
2328*2d9fd380Sjfb8856606 };
2329*2d9fd380Sjfb8856606 struct rte_security_capability capabilities[] = {
2330*2d9fd380Sjfb8856606 {
2331*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2332*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_PDCP,
2333*2d9fd380Sjfb8856606 .pdcp = {
2334*2d9fd380Sjfb8856606 .domain = RTE_SECURITY_PDCP_MODE_DATA,
2335*2d9fd380Sjfb8856606 },
2336*2d9fd380Sjfb8856606 },
2337*2d9fd380Sjfb8856606 {
2338*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_NONE,
2339*2d9fd380Sjfb8856606 },
2340*2d9fd380Sjfb8856606 };
2341*2d9fd380Sjfb8856606
2342*2d9fd380Sjfb8856606 mock_capabilities_get_exp.device = NULL;
2343*2d9fd380Sjfb8856606 mock_capabilities_get_exp.ret = capabilities;
2344*2d9fd380Sjfb8856606
2345*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
2346*2d9fd380Sjfb8856606 ret = rte_security_capability_get(&ut_params->ctx, &idx);
2347*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
2348*2d9fd380Sjfb8856606 ret, NULL, "%p");
2349*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
2350*2d9fd380Sjfb8856606
2351*2d9fd380Sjfb8856606 return TEST_SUCCESS;
2352*2d9fd380Sjfb8856606 }
2353*2d9fd380Sjfb8856606
2354*2d9fd380Sjfb8856606 /**
2355*2d9fd380Sjfb8856606 * Test execution of rte_security_capability_get when capabilities table
2356*2d9fd380Sjfb8856606 * contains matching pdcp entry
2357*2d9fd380Sjfb8856606 */
2358*2d9fd380Sjfb8856606 static int
test_capability_get_pdcp_match(void)2359*2d9fd380Sjfb8856606 test_capability_get_pdcp_match(void)
2360*2d9fd380Sjfb8856606 {
2361*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
2362*2d9fd380Sjfb8856606 struct rte_security_capability_idx idx = {
2363*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2364*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_PDCP,
2365*2d9fd380Sjfb8856606 .pdcp = {
2366*2d9fd380Sjfb8856606 .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
2367*2d9fd380Sjfb8856606 },
2368*2d9fd380Sjfb8856606 };
2369*2d9fd380Sjfb8856606 struct rte_security_capability capabilities[] = {
2370*2d9fd380Sjfb8856606 {
2371*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_INLINE_CRYPTO,
2372*2d9fd380Sjfb8856606 },
2373*2d9fd380Sjfb8856606 {
2374*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2375*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_PDCP,
2376*2d9fd380Sjfb8856606 .pdcp = {
2377*2d9fd380Sjfb8856606 .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
2378*2d9fd380Sjfb8856606 },
2379*2d9fd380Sjfb8856606 },
2380*2d9fd380Sjfb8856606 {
2381*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_NONE,
2382*2d9fd380Sjfb8856606 },
2383*2d9fd380Sjfb8856606 };
2384*2d9fd380Sjfb8856606
2385*2d9fd380Sjfb8856606 mock_capabilities_get_exp.device = NULL;
2386*2d9fd380Sjfb8856606 mock_capabilities_get_exp.ret = capabilities;
2387*2d9fd380Sjfb8856606
2388*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
2389*2d9fd380Sjfb8856606 ret = rte_security_capability_get(&ut_params->ctx, &idx);
2390*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
2391*2d9fd380Sjfb8856606 ret, &capabilities[1], "%p");
2392*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
2393*2d9fd380Sjfb8856606
2394*2d9fd380Sjfb8856606 return TEST_SUCCESS;
2395*2d9fd380Sjfb8856606 }
2396*2d9fd380Sjfb8856606
2397*2d9fd380Sjfb8856606 /**
2398*2d9fd380Sjfb8856606 * Test execution of rte_security_capability_get when capabilities table
2399*2d9fd380Sjfb8856606 * does not contain entry with matching DOCSIS direction field
2400*2d9fd380Sjfb8856606 */
2401*2d9fd380Sjfb8856606 static int
test_capability_get_docsis_mismatch_direction(void)2402*2d9fd380Sjfb8856606 test_capability_get_docsis_mismatch_direction(void)
2403*2d9fd380Sjfb8856606 {
2404*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
2405*2d9fd380Sjfb8856606 struct rte_security_capability_idx idx = {
2406*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2407*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_DOCSIS,
2408*2d9fd380Sjfb8856606 .docsis = {
2409*2d9fd380Sjfb8856606 .direction = RTE_SECURITY_DOCSIS_DOWNLINK
2410*2d9fd380Sjfb8856606 },
2411*2d9fd380Sjfb8856606 };
2412*2d9fd380Sjfb8856606 struct rte_security_capability capabilities[] = {
2413*2d9fd380Sjfb8856606 {
2414*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2415*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_DOCSIS,
2416*2d9fd380Sjfb8856606 .docsis = {
2417*2d9fd380Sjfb8856606 .direction = RTE_SECURITY_DOCSIS_UPLINK
2418*2d9fd380Sjfb8856606 },
2419*2d9fd380Sjfb8856606 },
2420*2d9fd380Sjfb8856606 {
2421*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_NONE,
2422*2d9fd380Sjfb8856606 },
2423*2d9fd380Sjfb8856606 };
2424*2d9fd380Sjfb8856606
2425*2d9fd380Sjfb8856606 mock_capabilities_get_exp.device = NULL;
2426*2d9fd380Sjfb8856606 mock_capabilities_get_exp.ret = capabilities;
2427*2d9fd380Sjfb8856606
2428*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
2429*2d9fd380Sjfb8856606 ret = rte_security_capability_get(&ut_params->ctx, &idx);
2430*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
2431*2d9fd380Sjfb8856606 ret, NULL, "%p");
2432*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
2433*2d9fd380Sjfb8856606
2434*2d9fd380Sjfb8856606 return TEST_SUCCESS;
2435*2d9fd380Sjfb8856606 }
2436*2d9fd380Sjfb8856606
2437*2d9fd380Sjfb8856606 /**
2438*2d9fd380Sjfb8856606 * Test execution of rte_security_capability_get when capabilities table
2439*2d9fd380Sjfb8856606 * contains matching DOCSIS entry
2440*2d9fd380Sjfb8856606 */
2441*2d9fd380Sjfb8856606 static int
test_capability_get_docsis_match(void)2442*2d9fd380Sjfb8856606 test_capability_get_docsis_match(void)
2443*2d9fd380Sjfb8856606 {
2444*2d9fd380Sjfb8856606 struct security_unittest_params *ut_params = &unittest_params;
2445*2d9fd380Sjfb8856606 struct rte_security_capability_idx idx = {
2446*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2447*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_DOCSIS,
2448*2d9fd380Sjfb8856606 .docsis = {
2449*2d9fd380Sjfb8856606 .direction = RTE_SECURITY_DOCSIS_UPLINK
2450*2d9fd380Sjfb8856606 },
2451*2d9fd380Sjfb8856606 };
2452*2d9fd380Sjfb8856606 struct rte_security_capability capabilities[] = {
2453*2d9fd380Sjfb8856606 {
2454*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_INLINE_CRYPTO,
2455*2d9fd380Sjfb8856606 },
2456*2d9fd380Sjfb8856606 {
2457*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
2458*2d9fd380Sjfb8856606 .protocol = RTE_SECURITY_PROTOCOL_DOCSIS,
2459*2d9fd380Sjfb8856606 .docsis = {
2460*2d9fd380Sjfb8856606 .direction = RTE_SECURITY_DOCSIS_UPLINK
2461*2d9fd380Sjfb8856606 },
2462*2d9fd380Sjfb8856606 },
2463*2d9fd380Sjfb8856606 {
2464*2d9fd380Sjfb8856606 .action = RTE_SECURITY_ACTION_TYPE_NONE,
2465*2d9fd380Sjfb8856606 },
2466*2d9fd380Sjfb8856606 };
2467*2d9fd380Sjfb8856606
2468*2d9fd380Sjfb8856606 mock_capabilities_get_exp.device = NULL;
2469*2d9fd380Sjfb8856606 mock_capabilities_get_exp.ret = capabilities;
2470*2d9fd380Sjfb8856606
2471*2d9fd380Sjfb8856606 const struct rte_security_capability *ret;
2472*2d9fd380Sjfb8856606 ret = rte_security_capability_get(&ut_params->ctx, &idx);
2473*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_FUNCTION_CALL_RET(rte_security_capability_get,
2474*2d9fd380Sjfb8856606 ret, &capabilities[1], "%p");
2475*2d9fd380Sjfb8856606 TEST_ASSERT_MOCK_CALLS(mock_capabilities_get_exp, 1);
2476*2d9fd380Sjfb8856606
2477*2d9fd380Sjfb8856606 return TEST_SUCCESS;
2478*2d9fd380Sjfb8856606 }
2479*2d9fd380Sjfb8856606
2480*2d9fd380Sjfb8856606 /**
2481*2d9fd380Sjfb8856606 * Declaration of testcases
2482*2d9fd380Sjfb8856606 */
2483*2d9fd380Sjfb8856606 static struct unit_test_suite security_testsuite = {
2484*2d9fd380Sjfb8856606 .suite_name = "generic security",
2485*2d9fd380Sjfb8856606 .setup = testsuite_setup,
2486*2d9fd380Sjfb8856606 .teardown = testsuite_teardown,
2487*2d9fd380Sjfb8856606 .unit_test_cases = {
2488*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup, ut_teardown,
2489*2d9fd380Sjfb8856606 test_session_create_inv_context),
2490*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup, ut_teardown,
2491*2d9fd380Sjfb8856606 test_session_create_inv_context_ops),
2492*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup, ut_teardown,
2493*2d9fd380Sjfb8856606 test_session_create_inv_context_ops_fun),
2494*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup, ut_teardown,
2495*2d9fd380Sjfb8856606 test_session_create_inv_configuration),
2496*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup, ut_teardown,
2497*2d9fd380Sjfb8856606 test_session_create_inv_mempool),
2498*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup, ut_teardown,
2499*2d9fd380Sjfb8856606 test_session_create_inv_sess_priv_mempool),
2500*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup, ut_teardown,
2501*2d9fd380Sjfb8856606 test_session_create_mempool_empty),
2502*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup, ut_teardown,
2503*2d9fd380Sjfb8856606 test_session_create_ops_failure),
2504*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup, ut_teardown,
2505*2d9fd380Sjfb8856606 test_session_create_success),
2506*2d9fd380Sjfb8856606
2507*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2508*2d9fd380Sjfb8856606 test_session_update_inv_context),
2509*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2510*2d9fd380Sjfb8856606 test_session_update_inv_context_ops),
2511*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2512*2d9fd380Sjfb8856606 test_session_update_inv_context_ops_fun),
2513*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2514*2d9fd380Sjfb8856606 test_session_update_inv_configuration),
2515*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2516*2d9fd380Sjfb8856606 test_session_update_inv_session),
2517*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2518*2d9fd380Sjfb8856606 test_session_update_ops_failure),
2519*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2520*2d9fd380Sjfb8856606 test_session_update_success),
2521*2d9fd380Sjfb8856606
2522*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2523*2d9fd380Sjfb8856606 test_session_get_size_inv_context),
2524*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2525*2d9fd380Sjfb8856606 test_session_get_size_inv_context_ops),
2526*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2527*2d9fd380Sjfb8856606 test_session_get_size_inv_context_ops_fun),
2528*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2529*2d9fd380Sjfb8856606 test_session_get_size_ops_failure),
2530*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2531*2d9fd380Sjfb8856606 test_session_get_size_success),
2532*2d9fd380Sjfb8856606
2533*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2534*2d9fd380Sjfb8856606 test_session_stats_get_inv_context),
2535*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2536*2d9fd380Sjfb8856606 test_session_stats_get_inv_context_ops),
2537*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2538*2d9fd380Sjfb8856606 test_session_stats_get_inv_context_ops_fun),
2539*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2540*2d9fd380Sjfb8856606 test_session_stats_get_inv_stats),
2541*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2542*2d9fd380Sjfb8856606 test_session_stats_get_ops_failure),
2543*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2544*2d9fd380Sjfb8856606 test_session_stats_get_success),
2545*2d9fd380Sjfb8856606
2546*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2547*2d9fd380Sjfb8856606 test_session_destroy_inv_context),
2548*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2549*2d9fd380Sjfb8856606 test_session_destroy_inv_context_ops),
2550*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2551*2d9fd380Sjfb8856606 test_session_destroy_inv_context_ops_fun),
2552*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2553*2d9fd380Sjfb8856606 test_session_destroy_inv_session),
2554*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2555*2d9fd380Sjfb8856606 test_session_destroy_ops_failure),
2556*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2557*2d9fd380Sjfb8856606 test_session_destroy_success),
2558*2d9fd380Sjfb8856606
2559*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2560*2d9fd380Sjfb8856606 test_set_pkt_metadata_inv_context),
2561*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2562*2d9fd380Sjfb8856606 test_set_pkt_metadata_inv_context_ops),
2563*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2564*2d9fd380Sjfb8856606 test_set_pkt_metadata_inv_context_ops_fun),
2565*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2566*2d9fd380Sjfb8856606 test_set_pkt_metadata_inv_session),
2567*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2568*2d9fd380Sjfb8856606 test_set_pkt_metadata_ops_failure),
2569*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2570*2d9fd380Sjfb8856606 test_set_pkt_metadata_success),
2571*2d9fd380Sjfb8856606
2572*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2573*2d9fd380Sjfb8856606 test_get_userdata_inv_context),
2574*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2575*2d9fd380Sjfb8856606 test_get_userdata_inv_context_ops),
2576*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2577*2d9fd380Sjfb8856606 test_get_userdata_inv_context_ops_fun),
2578*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2579*2d9fd380Sjfb8856606 test_get_userdata_ops_failure),
2580*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2581*2d9fd380Sjfb8856606 test_get_userdata_success),
2582*2d9fd380Sjfb8856606
2583*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2584*2d9fd380Sjfb8856606 test_capabilities_get_inv_context),
2585*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2586*2d9fd380Sjfb8856606 test_capabilities_get_inv_context_ops),
2587*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2588*2d9fd380Sjfb8856606 test_capabilities_get_inv_context_ops_fun),
2589*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2590*2d9fd380Sjfb8856606 test_capabilities_get_ops_failure),
2591*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2592*2d9fd380Sjfb8856606 test_capabilities_get_success),
2593*2d9fd380Sjfb8856606
2594*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2595*2d9fd380Sjfb8856606 test_capability_get_inv_context),
2596*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2597*2d9fd380Sjfb8856606 test_capability_get_inv_context_ops),
2598*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2599*2d9fd380Sjfb8856606 test_capability_get_inv_context_ops_fun),
2600*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2601*2d9fd380Sjfb8856606 test_capability_get_inv_idx),
2602*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2603*2d9fd380Sjfb8856606 test_capability_get_ops_failure),
2604*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2605*2d9fd380Sjfb8856606 test_capability_get_empty_table),
2606*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2607*2d9fd380Sjfb8856606 test_capability_get_no_matching_action),
2608*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2609*2d9fd380Sjfb8856606 test_capability_get_no_matching_protocol),
2610*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2611*2d9fd380Sjfb8856606 test_capability_get_no_support_for_macsec),
2612*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2613*2d9fd380Sjfb8856606 test_capability_get_ipsec_mismatch_proto),
2614*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2615*2d9fd380Sjfb8856606 test_capability_get_ipsec_mismatch_mode),
2616*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2617*2d9fd380Sjfb8856606 test_capability_get_ipsec_mismatch_dir),
2618*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2619*2d9fd380Sjfb8856606 test_capability_get_ipsec_match),
2620*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2621*2d9fd380Sjfb8856606 test_capability_get_pdcp_mismatch_domain),
2622*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2623*2d9fd380Sjfb8856606 test_capability_get_pdcp_match),
2624*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2625*2d9fd380Sjfb8856606 test_capability_get_docsis_mismatch_direction),
2626*2d9fd380Sjfb8856606 TEST_CASE_ST(ut_setup_with_session, ut_teardown,
2627*2d9fd380Sjfb8856606 test_capability_get_docsis_match),
2628*2d9fd380Sjfb8856606
2629*2d9fd380Sjfb8856606 TEST_CASES_END() /**< NULL terminate unit test array */
2630*2d9fd380Sjfb8856606 }
2631*2d9fd380Sjfb8856606 };
2632*2d9fd380Sjfb8856606
2633*2d9fd380Sjfb8856606 static int
test_security(void)2634*2d9fd380Sjfb8856606 test_security(void)
2635*2d9fd380Sjfb8856606 {
2636*2d9fd380Sjfb8856606 rte_log_set_global_level(RTE_LOG_DEBUG);
2637*2d9fd380Sjfb8856606 rte_log_set_level(RTE_LOGTYPE_EAL, RTE_LOG_DEBUG);
2638*2d9fd380Sjfb8856606
2639*2d9fd380Sjfb8856606 return unit_test_suite_runner(&security_testsuite);
2640*2d9fd380Sjfb8856606 }
2641*2d9fd380Sjfb8856606
2642*2d9fd380Sjfb8856606 REGISTER_TEST_COMMAND(security_autotest, test_security);
2643