1*1208bc7eSAndroid Build Coastguard Worker #include "test/jemalloc_test.h"
2*1208bc7eSAndroid Build Coastguard Worker
3*1208bc7eSAndroid Build Coastguard Worker static witness_lock_error_t *witness_lock_error_orig;
4*1208bc7eSAndroid Build Coastguard Worker static witness_owner_error_t *witness_owner_error_orig;
5*1208bc7eSAndroid Build Coastguard Worker static witness_not_owner_error_t *witness_not_owner_error_orig;
6*1208bc7eSAndroid Build Coastguard Worker static witness_depth_error_t *witness_depth_error_orig;
7*1208bc7eSAndroid Build Coastguard Worker
8*1208bc7eSAndroid Build Coastguard Worker static bool saw_lock_error;
9*1208bc7eSAndroid Build Coastguard Worker static bool saw_owner_error;
10*1208bc7eSAndroid Build Coastguard Worker static bool saw_not_owner_error;
11*1208bc7eSAndroid Build Coastguard Worker static bool saw_depth_error;
12*1208bc7eSAndroid Build Coastguard Worker
13*1208bc7eSAndroid Build Coastguard Worker static void
witness_lock_error_intercept(const witness_list_t * witnesses,const witness_t * witness)14*1208bc7eSAndroid Build Coastguard Worker witness_lock_error_intercept(const witness_list_t *witnesses,
15*1208bc7eSAndroid Build Coastguard Worker const witness_t *witness) {
16*1208bc7eSAndroid Build Coastguard Worker saw_lock_error = true;
17*1208bc7eSAndroid Build Coastguard Worker }
18*1208bc7eSAndroid Build Coastguard Worker
19*1208bc7eSAndroid Build Coastguard Worker static void
witness_owner_error_intercept(const witness_t * witness)20*1208bc7eSAndroid Build Coastguard Worker witness_owner_error_intercept(const witness_t *witness) {
21*1208bc7eSAndroid Build Coastguard Worker saw_owner_error = true;
22*1208bc7eSAndroid Build Coastguard Worker }
23*1208bc7eSAndroid Build Coastguard Worker
24*1208bc7eSAndroid Build Coastguard Worker static void
witness_not_owner_error_intercept(const witness_t * witness)25*1208bc7eSAndroid Build Coastguard Worker witness_not_owner_error_intercept(const witness_t *witness) {
26*1208bc7eSAndroid Build Coastguard Worker saw_not_owner_error = true;
27*1208bc7eSAndroid Build Coastguard Worker }
28*1208bc7eSAndroid Build Coastguard Worker
29*1208bc7eSAndroid Build Coastguard Worker static void
witness_depth_error_intercept(const witness_list_t * witnesses,witness_rank_t rank_inclusive,unsigned depth)30*1208bc7eSAndroid Build Coastguard Worker witness_depth_error_intercept(const witness_list_t *witnesses,
31*1208bc7eSAndroid Build Coastguard Worker witness_rank_t rank_inclusive, unsigned depth) {
32*1208bc7eSAndroid Build Coastguard Worker saw_depth_error = true;
33*1208bc7eSAndroid Build Coastguard Worker }
34*1208bc7eSAndroid Build Coastguard Worker
35*1208bc7eSAndroid Build Coastguard Worker static int
witness_comp(const witness_t * a,void * oa,const witness_t * b,void * ob)36*1208bc7eSAndroid Build Coastguard Worker witness_comp(const witness_t *a, void *oa, const witness_t *b, void *ob) {
37*1208bc7eSAndroid Build Coastguard Worker assert_u_eq(a->rank, b->rank, "Witnesses should have equal rank");
38*1208bc7eSAndroid Build Coastguard Worker
39*1208bc7eSAndroid Build Coastguard Worker assert(oa == (void *)a);
40*1208bc7eSAndroid Build Coastguard Worker assert(ob == (void *)b);
41*1208bc7eSAndroid Build Coastguard Worker
42*1208bc7eSAndroid Build Coastguard Worker return strcmp(a->name, b->name);
43*1208bc7eSAndroid Build Coastguard Worker }
44*1208bc7eSAndroid Build Coastguard Worker
45*1208bc7eSAndroid Build Coastguard Worker static int
witness_comp_reverse(const witness_t * a,void * oa,const witness_t * b,void * ob)46*1208bc7eSAndroid Build Coastguard Worker witness_comp_reverse(const witness_t *a, void *oa, const witness_t *b,
47*1208bc7eSAndroid Build Coastguard Worker void *ob) {
48*1208bc7eSAndroid Build Coastguard Worker assert_u_eq(a->rank, b->rank, "Witnesses should have equal rank");
49*1208bc7eSAndroid Build Coastguard Worker
50*1208bc7eSAndroid Build Coastguard Worker assert(oa == (void *)a);
51*1208bc7eSAndroid Build Coastguard Worker assert(ob == (void *)b);
52*1208bc7eSAndroid Build Coastguard Worker
53*1208bc7eSAndroid Build Coastguard Worker return -strcmp(a->name, b->name);
54*1208bc7eSAndroid Build Coastguard Worker }
55*1208bc7eSAndroid Build Coastguard Worker
TEST_BEGIN(test_witness)56*1208bc7eSAndroid Build Coastguard Worker TEST_BEGIN(test_witness) {
57*1208bc7eSAndroid Build Coastguard Worker witness_t a, b;
58*1208bc7eSAndroid Build Coastguard Worker witness_tsdn_t witness_tsdn = { WITNESS_TSD_INITIALIZER };
59*1208bc7eSAndroid Build Coastguard Worker
60*1208bc7eSAndroid Build Coastguard Worker test_skip_if(!config_debug);
61*1208bc7eSAndroid Build Coastguard Worker
62*1208bc7eSAndroid Build Coastguard Worker witness_assert_lockless(&witness_tsdn);
63*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth(&witness_tsdn, 0);
64*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth_to_rank(&witness_tsdn, (witness_rank_t)1U, 0);
65*1208bc7eSAndroid Build Coastguard Worker
66*1208bc7eSAndroid Build Coastguard Worker witness_init(&a, "a", 1, NULL, NULL);
67*1208bc7eSAndroid Build Coastguard Worker witness_assert_not_owner(&witness_tsdn, &a);
68*1208bc7eSAndroid Build Coastguard Worker witness_lock(&witness_tsdn, &a);
69*1208bc7eSAndroid Build Coastguard Worker witness_assert_owner(&witness_tsdn, &a);
70*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth(&witness_tsdn, 1);
71*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth_to_rank(&witness_tsdn, (witness_rank_t)1U, 1);
72*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth_to_rank(&witness_tsdn, (witness_rank_t)2U, 0);
73*1208bc7eSAndroid Build Coastguard Worker
74*1208bc7eSAndroid Build Coastguard Worker witness_init(&b, "b", 2, NULL, NULL);
75*1208bc7eSAndroid Build Coastguard Worker witness_assert_not_owner(&witness_tsdn, &b);
76*1208bc7eSAndroid Build Coastguard Worker witness_lock(&witness_tsdn, &b);
77*1208bc7eSAndroid Build Coastguard Worker witness_assert_owner(&witness_tsdn, &b);
78*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth(&witness_tsdn, 2);
79*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth_to_rank(&witness_tsdn, (witness_rank_t)1U, 2);
80*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth_to_rank(&witness_tsdn, (witness_rank_t)2U, 1);
81*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth_to_rank(&witness_tsdn, (witness_rank_t)3U, 0);
82*1208bc7eSAndroid Build Coastguard Worker
83*1208bc7eSAndroid Build Coastguard Worker witness_unlock(&witness_tsdn, &a);
84*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth(&witness_tsdn, 1);
85*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth_to_rank(&witness_tsdn, (witness_rank_t)1U, 1);
86*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth_to_rank(&witness_tsdn, (witness_rank_t)2U, 1);
87*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth_to_rank(&witness_tsdn, (witness_rank_t)3U, 0);
88*1208bc7eSAndroid Build Coastguard Worker witness_unlock(&witness_tsdn, &b);
89*1208bc7eSAndroid Build Coastguard Worker
90*1208bc7eSAndroid Build Coastguard Worker witness_assert_lockless(&witness_tsdn);
91*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth(&witness_tsdn, 0);
92*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth_to_rank(&witness_tsdn, (witness_rank_t)1U, 0);
93*1208bc7eSAndroid Build Coastguard Worker }
94*1208bc7eSAndroid Build Coastguard Worker TEST_END
95*1208bc7eSAndroid Build Coastguard Worker
TEST_BEGIN(test_witness_comp)96*1208bc7eSAndroid Build Coastguard Worker TEST_BEGIN(test_witness_comp) {
97*1208bc7eSAndroid Build Coastguard Worker witness_t a, b, c, d;
98*1208bc7eSAndroid Build Coastguard Worker witness_tsdn_t witness_tsdn = { WITNESS_TSD_INITIALIZER };
99*1208bc7eSAndroid Build Coastguard Worker
100*1208bc7eSAndroid Build Coastguard Worker test_skip_if(!config_debug);
101*1208bc7eSAndroid Build Coastguard Worker
102*1208bc7eSAndroid Build Coastguard Worker witness_assert_lockless(&witness_tsdn);
103*1208bc7eSAndroid Build Coastguard Worker
104*1208bc7eSAndroid Build Coastguard Worker witness_init(&a, "a", 1, witness_comp, &a);
105*1208bc7eSAndroid Build Coastguard Worker witness_assert_not_owner(&witness_tsdn, &a);
106*1208bc7eSAndroid Build Coastguard Worker witness_lock(&witness_tsdn, &a);
107*1208bc7eSAndroid Build Coastguard Worker witness_assert_owner(&witness_tsdn, &a);
108*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth(&witness_tsdn, 1);
109*1208bc7eSAndroid Build Coastguard Worker
110*1208bc7eSAndroid Build Coastguard Worker witness_init(&b, "b", 1, witness_comp, &b);
111*1208bc7eSAndroid Build Coastguard Worker witness_assert_not_owner(&witness_tsdn, &b);
112*1208bc7eSAndroid Build Coastguard Worker witness_lock(&witness_tsdn, &b);
113*1208bc7eSAndroid Build Coastguard Worker witness_assert_owner(&witness_tsdn, &b);
114*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth(&witness_tsdn, 2);
115*1208bc7eSAndroid Build Coastguard Worker witness_unlock(&witness_tsdn, &b);
116*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth(&witness_tsdn, 1);
117*1208bc7eSAndroid Build Coastguard Worker
118*1208bc7eSAndroid Build Coastguard Worker witness_lock_error_orig = witness_lock_error;
119*1208bc7eSAndroid Build Coastguard Worker witness_lock_error = witness_lock_error_intercept;
120*1208bc7eSAndroid Build Coastguard Worker saw_lock_error = false;
121*1208bc7eSAndroid Build Coastguard Worker
122*1208bc7eSAndroid Build Coastguard Worker witness_init(&c, "c", 1, witness_comp_reverse, &c);
123*1208bc7eSAndroid Build Coastguard Worker witness_assert_not_owner(&witness_tsdn, &c);
124*1208bc7eSAndroid Build Coastguard Worker assert_false(saw_lock_error, "Unexpected witness lock error");
125*1208bc7eSAndroid Build Coastguard Worker witness_lock(&witness_tsdn, &c);
126*1208bc7eSAndroid Build Coastguard Worker assert_true(saw_lock_error, "Expected witness lock error");
127*1208bc7eSAndroid Build Coastguard Worker witness_unlock(&witness_tsdn, &c);
128*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth(&witness_tsdn, 1);
129*1208bc7eSAndroid Build Coastguard Worker
130*1208bc7eSAndroid Build Coastguard Worker saw_lock_error = false;
131*1208bc7eSAndroid Build Coastguard Worker
132*1208bc7eSAndroid Build Coastguard Worker witness_init(&d, "d", 1, NULL, NULL);
133*1208bc7eSAndroid Build Coastguard Worker witness_assert_not_owner(&witness_tsdn, &d);
134*1208bc7eSAndroid Build Coastguard Worker assert_false(saw_lock_error, "Unexpected witness lock error");
135*1208bc7eSAndroid Build Coastguard Worker witness_lock(&witness_tsdn, &d);
136*1208bc7eSAndroid Build Coastguard Worker assert_true(saw_lock_error, "Expected witness lock error");
137*1208bc7eSAndroid Build Coastguard Worker witness_unlock(&witness_tsdn, &d);
138*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth(&witness_tsdn, 1);
139*1208bc7eSAndroid Build Coastguard Worker
140*1208bc7eSAndroid Build Coastguard Worker witness_unlock(&witness_tsdn, &a);
141*1208bc7eSAndroid Build Coastguard Worker
142*1208bc7eSAndroid Build Coastguard Worker witness_assert_lockless(&witness_tsdn);
143*1208bc7eSAndroid Build Coastguard Worker
144*1208bc7eSAndroid Build Coastguard Worker witness_lock_error = witness_lock_error_orig;
145*1208bc7eSAndroid Build Coastguard Worker }
146*1208bc7eSAndroid Build Coastguard Worker TEST_END
147*1208bc7eSAndroid Build Coastguard Worker
TEST_BEGIN(test_witness_reversal)148*1208bc7eSAndroid Build Coastguard Worker TEST_BEGIN(test_witness_reversal) {
149*1208bc7eSAndroid Build Coastguard Worker witness_t a, b;
150*1208bc7eSAndroid Build Coastguard Worker witness_tsdn_t witness_tsdn = { WITNESS_TSD_INITIALIZER };
151*1208bc7eSAndroid Build Coastguard Worker
152*1208bc7eSAndroid Build Coastguard Worker test_skip_if(!config_debug);
153*1208bc7eSAndroid Build Coastguard Worker
154*1208bc7eSAndroid Build Coastguard Worker witness_lock_error_orig = witness_lock_error;
155*1208bc7eSAndroid Build Coastguard Worker witness_lock_error = witness_lock_error_intercept;
156*1208bc7eSAndroid Build Coastguard Worker saw_lock_error = false;
157*1208bc7eSAndroid Build Coastguard Worker
158*1208bc7eSAndroid Build Coastguard Worker witness_assert_lockless(&witness_tsdn);
159*1208bc7eSAndroid Build Coastguard Worker
160*1208bc7eSAndroid Build Coastguard Worker witness_init(&a, "a", 1, NULL, NULL);
161*1208bc7eSAndroid Build Coastguard Worker witness_init(&b, "b", 2, NULL, NULL);
162*1208bc7eSAndroid Build Coastguard Worker
163*1208bc7eSAndroid Build Coastguard Worker witness_lock(&witness_tsdn, &b);
164*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth(&witness_tsdn, 1);
165*1208bc7eSAndroid Build Coastguard Worker assert_false(saw_lock_error, "Unexpected witness lock error");
166*1208bc7eSAndroid Build Coastguard Worker witness_lock(&witness_tsdn, &a);
167*1208bc7eSAndroid Build Coastguard Worker assert_true(saw_lock_error, "Expected witness lock error");
168*1208bc7eSAndroid Build Coastguard Worker
169*1208bc7eSAndroid Build Coastguard Worker witness_unlock(&witness_tsdn, &a);
170*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth(&witness_tsdn, 1);
171*1208bc7eSAndroid Build Coastguard Worker witness_unlock(&witness_tsdn, &b);
172*1208bc7eSAndroid Build Coastguard Worker
173*1208bc7eSAndroid Build Coastguard Worker witness_assert_lockless(&witness_tsdn);
174*1208bc7eSAndroid Build Coastguard Worker
175*1208bc7eSAndroid Build Coastguard Worker witness_lock_error = witness_lock_error_orig;
176*1208bc7eSAndroid Build Coastguard Worker }
177*1208bc7eSAndroid Build Coastguard Worker TEST_END
178*1208bc7eSAndroid Build Coastguard Worker
TEST_BEGIN(test_witness_recursive)179*1208bc7eSAndroid Build Coastguard Worker TEST_BEGIN(test_witness_recursive) {
180*1208bc7eSAndroid Build Coastguard Worker witness_t a;
181*1208bc7eSAndroid Build Coastguard Worker witness_tsdn_t witness_tsdn = { WITNESS_TSD_INITIALIZER };
182*1208bc7eSAndroid Build Coastguard Worker
183*1208bc7eSAndroid Build Coastguard Worker test_skip_if(!config_debug);
184*1208bc7eSAndroid Build Coastguard Worker
185*1208bc7eSAndroid Build Coastguard Worker witness_not_owner_error_orig = witness_not_owner_error;
186*1208bc7eSAndroid Build Coastguard Worker witness_not_owner_error = witness_not_owner_error_intercept;
187*1208bc7eSAndroid Build Coastguard Worker saw_not_owner_error = false;
188*1208bc7eSAndroid Build Coastguard Worker
189*1208bc7eSAndroid Build Coastguard Worker witness_lock_error_orig = witness_lock_error;
190*1208bc7eSAndroid Build Coastguard Worker witness_lock_error = witness_lock_error_intercept;
191*1208bc7eSAndroid Build Coastguard Worker saw_lock_error = false;
192*1208bc7eSAndroid Build Coastguard Worker
193*1208bc7eSAndroid Build Coastguard Worker witness_assert_lockless(&witness_tsdn);
194*1208bc7eSAndroid Build Coastguard Worker
195*1208bc7eSAndroid Build Coastguard Worker witness_init(&a, "a", 1, NULL, NULL);
196*1208bc7eSAndroid Build Coastguard Worker
197*1208bc7eSAndroid Build Coastguard Worker witness_lock(&witness_tsdn, &a);
198*1208bc7eSAndroid Build Coastguard Worker assert_false(saw_lock_error, "Unexpected witness lock error");
199*1208bc7eSAndroid Build Coastguard Worker assert_false(saw_not_owner_error, "Unexpected witness not owner error");
200*1208bc7eSAndroid Build Coastguard Worker witness_lock(&witness_tsdn, &a);
201*1208bc7eSAndroid Build Coastguard Worker assert_true(saw_lock_error, "Expected witness lock error");
202*1208bc7eSAndroid Build Coastguard Worker assert_true(saw_not_owner_error, "Expected witness not owner error");
203*1208bc7eSAndroid Build Coastguard Worker
204*1208bc7eSAndroid Build Coastguard Worker witness_unlock(&witness_tsdn, &a);
205*1208bc7eSAndroid Build Coastguard Worker
206*1208bc7eSAndroid Build Coastguard Worker witness_assert_lockless(&witness_tsdn);
207*1208bc7eSAndroid Build Coastguard Worker
208*1208bc7eSAndroid Build Coastguard Worker witness_owner_error = witness_owner_error_orig;
209*1208bc7eSAndroid Build Coastguard Worker witness_lock_error = witness_lock_error_orig;
210*1208bc7eSAndroid Build Coastguard Worker
211*1208bc7eSAndroid Build Coastguard Worker }
212*1208bc7eSAndroid Build Coastguard Worker TEST_END
213*1208bc7eSAndroid Build Coastguard Worker
TEST_BEGIN(test_witness_unlock_not_owned)214*1208bc7eSAndroid Build Coastguard Worker TEST_BEGIN(test_witness_unlock_not_owned) {
215*1208bc7eSAndroid Build Coastguard Worker witness_t a;
216*1208bc7eSAndroid Build Coastguard Worker witness_tsdn_t witness_tsdn = { WITNESS_TSD_INITIALIZER };
217*1208bc7eSAndroid Build Coastguard Worker
218*1208bc7eSAndroid Build Coastguard Worker test_skip_if(!config_debug);
219*1208bc7eSAndroid Build Coastguard Worker
220*1208bc7eSAndroid Build Coastguard Worker witness_owner_error_orig = witness_owner_error;
221*1208bc7eSAndroid Build Coastguard Worker witness_owner_error = witness_owner_error_intercept;
222*1208bc7eSAndroid Build Coastguard Worker saw_owner_error = false;
223*1208bc7eSAndroid Build Coastguard Worker
224*1208bc7eSAndroid Build Coastguard Worker witness_assert_lockless(&witness_tsdn);
225*1208bc7eSAndroid Build Coastguard Worker
226*1208bc7eSAndroid Build Coastguard Worker witness_init(&a, "a", 1, NULL, NULL);
227*1208bc7eSAndroid Build Coastguard Worker
228*1208bc7eSAndroid Build Coastguard Worker assert_false(saw_owner_error, "Unexpected owner error");
229*1208bc7eSAndroid Build Coastguard Worker witness_unlock(&witness_tsdn, &a);
230*1208bc7eSAndroid Build Coastguard Worker assert_true(saw_owner_error, "Expected owner error");
231*1208bc7eSAndroid Build Coastguard Worker
232*1208bc7eSAndroid Build Coastguard Worker witness_assert_lockless(&witness_tsdn);
233*1208bc7eSAndroid Build Coastguard Worker
234*1208bc7eSAndroid Build Coastguard Worker witness_owner_error = witness_owner_error_orig;
235*1208bc7eSAndroid Build Coastguard Worker }
236*1208bc7eSAndroid Build Coastguard Worker TEST_END
237*1208bc7eSAndroid Build Coastguard Worker
TEST_BEGIN(test_witness_depth)238*1208bc7eSAndroid Build Coastguard Worker TEST_BEGIN(test_witness_depth) {
239*1208bc7eSAndroid Build Coastguard Worker witness_t a;
240*1208bc7eSAndroid Build Coastguard Worker witness_tsdn_t witness_tsdn = { WITNESS_TSD_INITIALIZER };
241*1208bc7eSAndroid Build Coastguard Worker
242*1208bc7eSAndroid Build Coastguard Worker test_skip_if(!config_debug);
243*1208bc7eSAndroid Build Coastguard Worker
244*1208bc7eSAndroid Build Coastguard Worker witness_depth_error_orig = witness_depth_error;
245*1208bc7eSAndroid Build Coastguard Worker witness_depth_error = witness_depth_error_intercept;
246*1208bc7eSAndroid Build Coastguard Worker saw_depth_error = false;
247*1208bc7eSAndroid Build Coastguard Worker
248*1208bc7eSAndroid Build Coastguard Worker witness_assert_lockless(&witness_tsdn);
249*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth(&witness_tsdn, 0);
250*1208bc7eSAndroid Build Coastguard Worker
251*1208bc7eSAndroid Build Coastguard Worker witness_init(&a, "a", 1, NULL, NULL);
252*1208bc7eSAndroid Build Coastguard Worker
253*1208bc7eSAndroid Build Coastguard Worker assert_false(saw_depth_error, "Unexpected depth error");
254*1208bc7eSAndroid Build Coastguard Worker witness_assert_lockless(&witness_tsdn);
255*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth(&witness_tsdn, 0);
256*1208bc7eSAndroid Build Coastguard Worker
257*1208bc7eSAndroid Build Coastguard Worker witness_lock(&witness_tsdn, &a);
258*1208bc7eSAndroid Build Coastguard Worker witness_assert_lockless(&witness_tsdn);
259*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth(&witness_tsdn, 0);
260*1208bc7eSAndroid Build Coastguard Worker assert_true(saw_depth_error, "Expected depth error");
261*1208bc7eSAndroid Build Coastguard Worker
262*1208bc7eSAndroid Build Coastguard Worker witness_unlock(&witness_tsdn, &a);
263*1208bc7eSAndroid Build Coastguard Worker
264*1208bc7eSAndroid Build Coastguard Worker witness_assert_lockless(&witness_tsdn);
265*1208bc7eSAndroid Build Coastguard Worker witness_assert_depth(&witness_tsdn, 0);
266*1208bc7eSAndroid Build Coastguard Worker
267*1208bc7eSAndroid Build Coastguard Worker witness_depth_error = witness_depth_error_orig;
268*1208bc7eSAndroid Build Coastguard Worker }
269*1208bc7eSAndroid Build Coastguard Worker TEST_END
270*1208bc7eSAndroid Build Coastguard Worker
271*1208bc7eSAndroid Build Coastguard Worker int
main(void)272*1208bc7eSAndroid Build Coastguard Worker main(void) {
273*1208bc7eSAndroid Build Coastguard Worker return test(
274*1208bc7eSAndroid Build Coastguard Worker test_witness,
275*1208bc7eSAndroid Build Coastguard Worker test_witness_comp,
276*1208bc7eSAndroid Build Coastguard Worker test_witness_reversal,
277*1208bc7eSAndroid Build Coastguard Worker test_witness_recursive,
278*1208bc7eSAndroid Build Coastguard Worker test_witness_unlock_not_owned,
279*1208bc7eSAndroid Build Coastguard Worker test_witness_depth);
280*1208bc7eSAndroid Build Coastguard Worker }
281