1*758e9fbaSOystein Eftevaag /*
2*758e9fbaSOystein Eftevaag * SPDX-License-Identifier: BSD-2-Clause
3*758e9fbaSOystein Eftevaag * Copyright 2018-2019, Intel Corporation
4*758e9fbaSOystein Eftevaag */
5*758e9fbaSOystein Eftevaag
6*758e9fbaSOystein Eftevaag #include <inttypes.h>
7*758e9fbaSOystein Eftevaag #include <limits.h>
8*758e9fbaSOystein Eftevaag #include <stdarg.h>
9*758e9fbaSOystein Eftevaag #include <stdbool.h>
10*758e9fbaSOystein Eftevaag #include <stdlib.h>
11*758e9fbaSOystein Eftevaag #include <stdio.h>
12*758e9fbaSOystein Eftevaag #include <string.h>
13*758e9fbaSOystein Eftevaag
14*758e9fbaSOystein Eftevaag #include <setjmp.h>
15*758e9fbaSOystein Eftevaag #include <cmocka.h>
16*758e9fbaSOystein Eftevaag
17*758e9fbaSOystein Eftevaag #include "tss2_tcti.h"
18*758e9fbaSOystein Eftevaag #include "tss2_tctildr.h"
19*758e9fbaSOystein Eftevaag
20*758e9fbaSOystein Eftevaag #include "tss2-tcti/tctildr.h"
21*758e9fbaSOystein Eftevaag #include "tss2-tcti/tcti-common.h"
22*758e9fbaSOystein Eftevaag
23*758e9fbaSOystein Eftevaag #define TEST_MAGIC 0x1234321
24*758e9fbaSOystein Eftevaag #define TEST_VERSION 2
25*758e9fbaSOystein Eftevaag
26*758e9fbaSOystein Eftevaag #define UNUSED(var) (void)(var)
27*758e9fbaSOystein Eftevaag TSS2_RC
__wrap_tctildr_get_info(const char * name,const TSS2_TCTI_INFO ** info,void ** data)28*758e9fbaSOystein Eftevaag __wrap_tctildr_get_info (const char *name,
29*758e9fbaSOystein Eftevaag const TSS2_TCTI_INFO **info,
30*758e9fbaSOystein Eftevaag void **data)
31*758e9fbaSOystein Eftevaag {
32*758e9fbaSOystein Eftevaag TSS2_RC rc = mock_type (TSS2_RC);
33*758e9fbaSOystein Eftevaag if (rc == TSS2_RC_SUCCESS) {
34*758e9fbaSOystein Eftevaag *info = mock_type (TSS2_TCTI_INFO*);
35*758e9fbaSOystein Eftevaag *data = mock_type (void*);
36*758e9fbaSOystein Eftevaag }
37*758e9fbaSOystein Eftevaag return rc;
38*758e9fbaSOystein Eftevaag }
39*758e9fbaSOystein Eftevaag TSS2_RC
__wrap_tctildr_get_tcti(const char * name,const char * conf,TSS2_TCTI_CONTEXT ** tcti,void ** data)40*758e9fbaSOystein Eftevaag __wrap_tctildr_get_tcti (const char *name,
41*758e9fbaSOystein Eftevaag const char* conf,
42*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT **tcti,
43*758e9fbaSOystein Eftevaag void **data)
44*758e9fbaSOystein Eftevaag {
45*758e9fbaSOystein Eftevaag TSS2_RC rc = mock_type (TSS2_RC);
46*758e9fbaSOystein Eftevaag if (rc == TSS2_RC_SUCCESS) {
47*758e9fbaSOystein Eftevaag *tcti= mock_type (TSS2_TCTI_CONTEXT*);
48*758e9fbaSOystein Eftevaag *data = mock_type (void*);
49*758e9fbaSOystein Eftevaag }
50*758e9fbaSOystein Eftevaag return rc;
51*758e9fbaSOystein Eftevaag }
__wrap_tctildr_finalize_data(void ** data)52*758e9fbaSOystein Eftevaag void __wrap_tctildr_finalize_data (void **data) {}
53*758e9fbaSOystein Eftevaag
54*758e9fbaSOystein Eftevaag static TSS2_RC
tctildr_mock_transmit(TSS2_TCTI_CONTEXT * context,size_t size,uint8_t const * command)55*758e9fbaSOystein Eftevaag tctildr_mock_transmit (TSS2_TCTI_CONTEXT *context,
56*758e9fbaSOystein Eftevaag size_t size,
57*758e9fbaSOystein Eftevaag uint8_t const *command)
58*758e9fbaSOystein Eftevaag {
59*758e9fbaSOystein Eftevaag return mock_type (TSS2_RC);
60*758e9fbaSOystein Eftevaag }
61*758e9fbaSOystein Eftevaag TSS2_RC
tctildr_mock_receive(TSS2_TCTI_CONTEXT * context,size_t * size,uint8_t * response,int32_t timeout)62*758e9fbaSOystein Eftevaag tctildr_mock_receive (TSS2_TCTI_CONTEXT *context,
63*758e9fbaSOystein Eftevaag size_t *size,
64*758e9fbaSOystein Eftevaag uint8_t *response,
65*758e9fbaSOystein Eftevaag int32_t timeout)
66*758e9fbaSOystein Eftevaag {
67*758e9fbaSOystein Eftevaag return mock_type (TSS2_RC);
68*758e9fbaSOystein Eftevaag }
69*758e9fbaSOystein Eftevaag TSS2_RC
tctildr_mock_cancel(TSS2_TCTI_CONTEXT * context)70*758e9fbaSOystein Eftevaag tctildr_mock_cancel (TSS2_TCTI_CONTEXT *context)
71*758e9fbaSOystein Eftevaag {
72*758e9fbaSOystein Eftevaag return mock_type (TSS2_RC);
73*758e9fbaSOystein Eftevaag }
74*758e9fbaSOystein Eftevaag TSS2_RC
tctildr_mock_get_poll_handles(TSS2_TCTI_CONTEXT * context,TSS2_TCTI_POLL_HANDLE * handles,size_t * num_handles)75*758e9fbaSOystein Eftevaag tctildr_mock_get_poll_handles (TSS2_TCTI_CONTEXT *context,
76*758e9fbaSOystein Eftevaag TSS2_TCTI_POLL_HANDLE *handles,
77*758e9fbaSOystein Eftevaag size_t *num_handles)
78*758e9fbaSOystein Eftevaag {
79*758e9fbaSOystein Eftevaag return mock_type (TSS2_RC);
80*758e9fbaSOystein Eftevaag }
81*758e9fbaSOystein Eftevaag TSS2_RC
tctildr_mock_set_locality(TSS2_TCTI_CONTEXT * context,uint8_t locality)82*758e9fbaSOystein Eftevaag tctildr_mock_set_locality (TSS2_TCTI_CONTEXT *context,
83*758e9fbaSOystein Eftevaag uint8_t locality)
84*758e9fbaSOystein Eftevaag {
85*758e9fbaSOystein Eftevaag return mock_type (TSS2_RC);
86*758e9fbaSOystein Eftevaag }
87*758e9fbaSOystein Eftevaag TSS2_RC
tctildr_mock_make_sticky(TSS2_TCTI_CONTEXT * context,TPM2_HANDLE * handle,uint8_t sticky)88*758e9fbaSOystein Eftevaag tctildr_mock_make_sticky (TSS2_TCTI_CONTEXT *context,
89*758e9fbaSOystein Eftevaag TPM2_HANDLE *handle,
90*758e9fbaSOystein Eftevaag uint8_t sticky)
91*758e9fbaSOystein Eftevaag {
92*758e9fbaSOystein Eftevaag return mock_type (TSS2_RC);
93*758e9fbaSOystein Eftevaag }
94*758e9fbaSOystein Eftevaag #define TSS2_TCTI_MOCK_CONTEXT TSS2_TCTI_CONTEXT_COMMON_V2
95*758e9fbaSOystein Eftevaag #define TEST_TCTI_HANDLE (TSS2_TCTI_LIBRARY_HANDLE)0x9827635
96*758e9fbaSOystein Eftevaag static int
tctildr_setup(void ** state)97*758e9fbaSOystein Eftevaag tctildr_setup (void **state)
98*758e9fbaSOystein Eftevaag {
99*758e9fbaSOystein Eftevaag TSS2_TCTILDR_CONTEXT *ldr_ctx;
100*758e9fbaSOystein Eftevaag TSS2_TCTI_MOCK_CONTEXT *tmp;
101*758e9fbaSOystein Eftevaag
102*758e9fbaSOystein Eftevaag ldr_ctx = calloc (1, sizeof (TSS2_TCTILDR_CONTEXT));
103*758e9fbaSOystein Eftevaag TSS2_TCTI_MAGIC (ldr_ctx) = TCTILDR_MAGIC;
104*758e9fbaSOystein Eftevaag TSS2_TCTI_VERSION (ldr_ctx) = TCTI_VERSION;
105*758e9fbaSOystein Eftevaag TSS2_TCTI_TRANSMIT (ldr_ctx) = tctildr_transmit;
106*758e9fbaSOystein Eftevaag TSS2_TCTI_RECEIVE (ldr_ctx) = tctildr_receive;
107*758e9fbaSOystein Eftevaag TSS2_TCTI_CANCEL (ldr_ctx) = tctildr_cancel;
108*758e9fbaSOystein Eftevaag TSS2_TCTI_GET_POLL_HANDLES (ldr_ctx) = tctildr_get_poll_handles;
109*758e9fbaSOystein Eftevaag TSS2_TCTI_SET_LOCALITY (ldr_ctx) = tctildr_set_locality;
110*758e9fbaSOystein Eftevaag TSS2_TCTI_MAKE_STICKY (ldr_ctx) = tctildr_make_sticky;
111*758e9fbaSOystein Eftevaag ldr_ctx->library_handle = TEST_TCTI_HANDLE;
112*758e9fbaSOystein Eftevaag
113*758e9fbaSOystein Eftevaag tmp = calloc (1, sizeof (TSS2_TCTI_MOCK_CONTEXT));
114*758e9fbaSOystein Eftevaag ldr_ctx->tcti = (TSS2_TCTI_CONTEXT*)tmp;
115*758e9fbaSOystein Eftevaag TSS2_TCTI_MAGIC (ldr_ctx->tcti) = TEST_MAGIC;
116*758e9fbaSOystein Eftevaag TSS2_TCTI_VERSION (ldr_ctx->tcti) = TEST_VERSION;
117*758e9fbaSOystein Eftevaag TSS2_TCTI_TRANSMIT (ldr_ctx->tcti) = tctildr_mock_transmit;
118*758e9fbaSOystein Eftevaag TSS2_TCTI_RECEIVE (ldr_ctx->tcti) = tctildr_mock_receive;
119*758e9fbaSOystein Eftevaag TSS2_TCTI_CANCEL (ldr_ctx->tcti) = tctildr_mock_cancel;
120*758e9fbaSOystein Eftevaag TSS2_TCTI_GET_POLL_HANDLES (ldr_ctx->tcti) = tctildr_mock_get_poll_handles;
121*758e9fbaSOystein Eftevaag TSS2_TCTI_SET_LOCALITY (ldr_ctx->tcti) = tctildr_mock_set_locality;
122*758e9fbaSOystein Eftevaag TSS2_TCTI_MAKE_STICKY (ldr_ctx->tcti) = tctildr_mock_make_sticky;
123*758e9fbaSOystein Eftevaag
124*758e9fbaSOystein Eftevaag *state = ldr_ctx;
125*758e9fbaSOystein Eftevaag
126*758e9fbaSOystein Eftevaag return 0;
127*758e9fbaSOystein Eftevaag }
128*758e9fbaSOystein Eftevaag static int
tctildr_teardown(void ** state)129*758e9fbaSOystein Eftevaag tctildr_teardown (void **state)
130*758e9fbaSOystein Eftevaag {
131*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *context = (TSS2_TCTI_CONTEXT*)*state;
132*758e9fbaSOystein Eftevaag
133*758e9fbaSOystein Eftevaag tctildr_finalize (context);
134*758e9fbaSOystein Eftevaag
135*758e9fbaSOystein Eftevaag free (context);
136*758e9fbaSOystein Eftevaag
137*758e9fbaSOystein Eftevaag return 0;
138*758e9fbaSOystein Eftevaag }
139*758e9fbaSOystein Eftevaag static void
tctildr_transmit_test(void ** state)140*758e9fbaSOystein Eftevaag tctildr_transmit_test (void **state)
141*758e9fbaSOystein Eftevaag {
142*758e9fbaSOystein Eftevaag TSS2_RC rc;
143*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *context = (TSS2_TCTI_CONTEXT*)*state;
144*758e9fbaSOystein Eftevaag uint8_t buffer [64] = { 0 };
145*758e9fbaSOystein Eftevaag size_t size = sizeof (buffer);
146*758e9fbaSOystein Eftevaag
147*758e9fbaSOystein Eftevaag will_return (tctildr_mock_transmit, TSS2_RC_SUCCESS);
148*758e9fbaSOystein Eftevaag rc = Tss2_Tcti_Transmit (context, size, buffer);
149*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_RC_SUCCESS);
150*758e9fbaSOystein Eftevaag }
151*758e9fbaSOystein Eftevaag static void
tctildr_transmit_null_test(void ** state)152*758e9fbaSOystein Eftevaag tctildr_transmit_null_test (void **state)
153*758e9fbaSOystein Eftevaag {
154*758e9fbaSOystein Eftevaag TSS2_RC rc;
155*758e9fbaSOystein Eftevaag uint8_t buffer [64] = { 0 };
156*758e9fbaSOystein Eftevaag size_t size = sizeof (buffer);
157*758e9fbaSOystein Eftevaag
158*758e9fbaSOystein Eftevaag rc = tctildr_transmit (NULL, size, buffer);
159*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_TCTI_RC_BAD_CONTEXT);
160*758e9fbaSOystein Eftevaag }
161*758e9fbaSOystein Eftevaag static void
tctildr_receive_test(void ** state)162*758e9fbaSOystein Eftevaag tctildr_receive_test (void **state)
163*758e9fbaSOystein Eftevaag {
164*758e9fbaSOystein Eftevaag TSS2_RC rc;
165*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *context = (TSS2_TCTI_CONTEXT*)*state;
166*758e9fbaSOystein Eftevaag uint8_t buffer [64] = { 0 };
167*758e9fbaSOystein Eftevaag size_t size = sizeof (buffer);
168*758e9fbaSOystein Eftevaag int32_t timeout = TSS2_TCTI_TIMEOUT_BLOCK;
169*758e9fbaSOystein Eftevaag
170*758e9fbaSOystein Eftevaag will_return (tctildr_mock_receive, TSS2_RC_SUCCESS);
171*758e9fbaSOystein Eftevaag rc = Tss2_Tcti_Receive (context, &size, buffer, timeout);
172*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_RC_SUCCESS);
173*758e9fbaSOystein Eftevaag }
174*758e9fbaSOystein Eftevaag static void
tctildr_receive_null_test(void ** state)175*758e9fbaSOystein Eftevaag tctildr_receive_null_test (void **state)
176*758e9fbaSOystein Eftevaag {
177*758e9fbaSOystein Eftevaag TSS2_RC rc;
178*758e9fbaSOystein Eftevaag uint8_t buffer [64] = { 0 };
179*758e9fbaSOystein Eftevaag size_t size = sizeof (buffer);
180*758e9fbaSOystein Eftevaag int32_t timeout = TSS2_TCTI_TIMEOUT_BLOCK;
181*758e9fbaSOystein Eftevaag
182*758e9fbaSOystein Eftevaag rc = tctildr_receive (NULL, &size, buffer, timeout);
183*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_TCTI_RC_BAD_CONTEXT);
184*758e9fbaSOystein Eftevaag }
185*758e9fbaSOystein Eftevaag static void
tctildr_cancel_test(void ** state)186*758e9fbaSOystein Eftevaag tctildr_cancel_test (void **state)
187*758e9fbaSOystein Eftevaag {
188*758e9fbaSOystein Eftevaag TSS2_RC rc;
189*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *context = (TSS2_TCTI_CONTEXT*)*state;
190*758e9fbaSOystein Eftevaag
191*758e9fbaSOystein Eftevaag will_return (tctildr_mock_cancel, TSS2_RC_SUCCESS);
192*758e9fbaSOystein Eftevaag rc = Tss2_Tcti_Cancel (context);
193*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_RC_SUCCESS);
194*758e9fbaSOystein Eftevaag }
195*758e9fbaSOystein Eftevaag static void
tctildr_cancel_null_test(void ** state)196*758e9fbaSOystein Eftevaag tctildr_cancel_null_test (void **state)
197*758e9fbaSOystein Eftevaag {
198*758e9fbaSOystein Eftevaag TSS2_RC rc;
199*758e9fbaSOystein Eftevaag UNUSED (state);
200*758e9fbaSOystein Eftevaag
201*758e9fbaSOystein Eftevaag rc = tctildr_cancel (NULL);
202*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_TCTI_RC_BAD_CONTEXT);
203*758e9fbaSOystein Eftevaag }
204*758e9fbaSOystein Eftevaag #define TEST_NUM_HANDLES 3
205*758e9fbaSOystein Eftevaag static void
tctildr_get_poll_handles_test(void ** state)206*758e9fbaSOystein Eftevaag tctildr_get_poll_handles_test (void **state)
207*758e9fbaSOystein Eftevaag {
208*758e9fbaSOystein Eftevaag TSS2_RC rc;
209*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *context = (TSS2_TCTI_CONTEXT*)*state;
210*758e9fbaSOystein Eftevaag TSS2_TCTI_POLL_HANDLE handles [TEST_NUM_HANDLES] = { 0 };
211*758e9fbaSOystein Eftevaag size_t num_handles = sizeof (handles);
212*758e9fbaSOystein Eftevaag
213*758e9fbaSOystein Eftevaag will_return (tctildr_mock_get_poll_handles, TSS2_RC_SUCCESS);
214*758e9fbaSOystein Eftevaag rc = Tss2_Tcti_GetPollHandles (context, handles, &num_handles);
215*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_RC_SUCCESS);
216*758e9fbaSOystein Eftevaag }
217*758e9fbaSOystein Eftevaag static void
tctildr_get_poll_handles_null_test(void ** state)218*758e9fbaSOystein Eftevaag tctildr_get_poll_handles_null_test (void **state)
219*758e9fbaSOystein Eftevaag {
220*758e9fbaSOystein Eftevaag TSS2_RC rc;
221*758e9fbaSOystein Eftevaag TSS2_TCTI_POLL_HANDLE handles [TEST_NUM_HANDLES] = { 0 };
222*758e9fbaSOystein Eftevaag size_t num_handles = sizeof (handles);
223*758e9fbaSOystein Eftevaag UNUSED (state);
224*758e9fbaSOystein Eftevaag
225*758e9fbaSOystein Eftevaag rc = tctildr_get_poll_handles (NULL, handles, &num_handles);
226*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_TCTI_RC_BAD_CONTEXT);
227*758e9fbaSOystein Eftevaag }
228*758e9fbaSOystein Eftevaag static void
tctildr_set_locality_test(void ** state)229*758e9fbaSOystein Eftevaag tctildr_set_locality_test (void **state)
230*758e9fbaSOystein Eftevaag {
231*758e9fbaSOystein Eftevaag TSS2_RC rc;
232*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *context = (TSS2_TCTI_CONTEXT*)*state;
233*758e9fbaSOystein Eftevaag
234*758e9fbaSOystein Eftevaag will_return (tctildr_mock_set_locality, TSS2_RC_SUCCESS);
235*758e9fbaSOystein Eftevaag rc = Tss2_Tcti_SetLocality (context, 1);
236*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_RC_SUCCESS);
237*758e9fbaSOystein Eftevaag }
238*758e9fbaSOystein Eftevaag static void
tctildr_set_locality_null_test(void ** state)239*758e9fbaSOystein Eftevaag tctildr_set_locality_null_test (void **state)
240*758e9fbaSOystein Eftevaag {
241*758e9fbaSOystein Eftevaag TSS2_RC rc;
242*758e9fbaSOystein Eftevaag UNUSED (state);
243*758e9fbaSOystein Eftevaag
244*758e9fbaSOystein Eftevaag rc = tctildr_set_locality (NULL, 1);
245*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_TCTI_RC_BAD_CONTEXT);
246*758e9fbaSOystein Eftevaag }
247*758e9fbaSOystein Eftevaag #define TEST_HANDLE 0x1
248*758e9fbaSOystein Eftevaag static void
tctildr_make_sticky_test(void ** state)249*758e9fbaSOystein Eftevaag tctildr_make_sticky_test (void **state)
250*758e9fbaSOystein Eftevaag {
251*758e9fbaSOystein Eftevaag TSS2_RC rc;
252*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *context = (TSS2_TCTI_CONTEXT*)*state;
253*758e9fbaSOystein Eftevaag TPM2_HANDLE handle = TEST_HANDLE;
254*758e9fbaSOystein Eftevaag
255*758e9fbaSOystein Eftevaag will_return (tctildr_mock_make_sticky, TSS2_RC_SUCCESS);
256*758e9fbaSOystein Eftevaag rc = Tss2_Tcti_MakeSticky (context, &handle, TPM2_YES);
257*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_RC_SUCCESS);
258*758e9fbaSOystein Eftevaag }
259*758e9fbaSOystein Eftevaag static void
tctildr_make_sticky_null_test(void ** state)260*758e9fbaSOystein Eftevaag tctildr_make_sticky_null_test (void **state)
261*758e9fbaSOystein Eftevaag {
262*758e9fbaSOystein Eftevaag TSS2_RC rc;
263*758e9fbaSOystein Eftevaag TPM2_HANDLE handle = TEST_HANDLE;
264*758e9fbaSOystein Eftevaag UNUSED (state);
265*758e9fbaSOystein Eftevaag
266*758e9fbaSOystein Eftevaag rc = tctildr_make_sticky (NULL, &handle, TPM2_YES);
267*758e9fbaSOystein Eftevaag assert_int_equal (rc, TSS2_TCTI_RC_BAD_CONTEXT);
268*758e9fbaSOystein Eftevaag }
269*758e9fbaSOystein Eftevaag /*
270*758e9fbaSOystein Eftevaag * This test covers the 'sanity test' path in the tctildr finalize
271*758e9fbaSOystein Eftevaag * function. There's not really a way to check whether or not this test
272*758e9fbaSOystein Eftevaag * passes / does what's intended beyond checking the report from the code
273*758e9fbaSOystein Eftevaag * coverage tool.
274*758e9fbaSOystein Eftevaag */
275*758e9fbaSOystein Eftevaag static void
tctildr_finalize_null_ctx_test(void ** state)276*758e9fbaSOystein Eftevaag tctildr_finalize_null_ctx_test (void **state)
277*758e9fbaSOystein Eftevaag {
278*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *context = NULL;
279*758e9fbaSOystein Eftevaag tctildr_finalize (context);
280*758e9fbaSOystein Eftevaag assert_true (true);
281*758e9fbaSOystein Eftevaag }
282*758e9fbaSOystein Eftevaag int
main(int argc,char * arvg[])283*758e9fbaSOystein Eftevaag main (int argc, char* arvg[])
284*758e9fbaSOystein Eftevaag {
285*758e9fbaSOystein Eftevaag const struct CMUnitTest tests[] = {
286*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown (tctildr_transmit_test,
287*758e9fbaSOystein Eftevaag tctildr_setup,
288*758e9fbaSOystein Eftevaag tctildr_teardown),
289*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown (tctildr_transmit_null_test,
290*758e9fbaSOystein Eftevaag tctildr_setup,
291*758e9fbaSOystein Eftevaag tctildr_teardown),
292*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown (tctildr_receive_test,
293*758e9fbaSOystein Eftevaag tctildr_setup,
294*758e9fbaSOystein Eftevaag tctildr_teardown),
295*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown (tctildr_receive_null_test,
296*758e9fbaSOystein Eftevaag tctildr_setup,
297*758e9fbaSOystein Eftevaag tctildr_teardown),
298*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown (tctildr_cancel_test,
299*758e9fbaSOystein Eftevaag tctildr_setup,
300*758e9fbaSOystein Eftevaag tctildr_teardown),
301*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown (tctildr_cancel_null_test,
302*758e9fbaSOystein Eftevaag tctildr_setup,
303*758e9fbaSOystein Eftevaag tctildr_teardown),
304*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown (tctildr_get_poll_handles_test,
305*758e9fbaSOystein Eftevaag tctildr_setup,
306*758e9fbaSOystein Eftevaag tctildr_teardown),
307*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown (tctildr_get_poll_handles_null_test,
308*758e9fbaSOystein Eftevaag tctildr_setup,
309*758e9fbaSOystein Eftevaag tctildr_teardown),
310*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown (tctildr_set_locality_test,
311*758e9fbaSOystein Eftevaag tctildr_setup,
312*758e9fbaSOystein Eftevaag tctildr_teardown),
313*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown (tctildr_set_locality_null_test,
314*758e9fbaSOystein Eftevaag tctildr_setup,
315*758e9fbaSOystein Eftevaag tctildr_teardown),
316*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown (tctildr_make_sticky_test,
317*758e9fbaSOystein Eftevaag tctildr_setup,
318*758e9fbaSOystein Eftevaag tctildr_teardown),
319*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown (tctildr_make_sticky_null_test,
320*758e9fbaSOystein Eftevaag tctildr_setup,
321*758e9fbaSOystein Eftevaag tctildr_teardown),
322*758e9fbaSOystein Eftevaag cmocka_unit_test (tctildr_finalize_null_ctx_test),
323*758e9fbaSOystein Eftevaag };
324*758e9fbaSOystein Eftevaag return cmocka_run_group_tests (tests, NULL, NULL);
325*758e9fbaSOystein Eftevaag }
326