xref: /aosp_15_r20/external/jemalloc_new/test/unit/ticker.c (revision 1208bc7e437ced7eb82efac44ba17e3beba411da)
1*1208bc7eSAndroid Build Coastguard Worker #include "test/jemalloc_test.h"
2*1208bc7eSAndroid Build Coastguard Worker 
3*1208bc7eSAndroid Build Coastguard Worker #include "jemalloc/internal/ticker.h"
4*1208bc7eSAndroid Build Coastguard Worker 
TEST_BEGIN(test_ticker_tick)5*1208bc7eSAndroid Build Coastguard Worker TEST_BEGIN(test_ticker_tick) {
6*1208bc7eSAndroid Build Coastguard Worker #define NREPS 2
7*1208bc7eSAndroid Build Coastguard Worker #define NTICKS 3
8*1208bc7eSAndroid Build Coastguard Worker 	ticker_t ticker;
9*1208bc7eSAndroid Build Coastguard Worker 	int32_t i, j;
10*1208bc7eSAndroid Build Coastguard Worker 
11*1208bc7eSAndroid Build Coastguard Worker 	ticker_init(&ticker, NTICKS);
12*1208bc7eSAndroid Build Coastguard Worker 	for (i = 0; i < NREPS; i++) {
13*1208bc7eSAndroid Build Coastguard Worker 		for (j = 0; j < NTICKS; j++) {
14*1208bc7eSAndroid Build Coastguard Worker 			assert_u_eq(ticker_read(&ticker), NTICKS - j,
15*1208bc7eSAndroid Build Coastguard Worker 			    "Unexpected ticker value (i=%d, j=%d)", i, j);
16*1208bc7eSAndroid Build Coastguard Worker 			assert_false(ticker_tick(&ticker),
17*1208bc7eSAndroid Build Coastguard Worker 			    "Unexpected ticker fire (i=%d, j=%d)", i, j);
18*1208bc7eSAndroid Build Coastguard Worker 		}
19*1208bc7eSAndroid Build Coastguard Worker 		assert_u32_eq(ticker_read(&ticker), 0,
20*1208bc7eSAndroid Build Coastguard Worker 		    "Expected ticker depletion");
21*1208bc7eSAndroid Build Coastguard Worker 		assert_true(ticker_tick(&ticker),
22*1208bc7eSAndroid Build Coastguard Worker 		    "Expected ticker fire (i=%d)", i);
23*1208bc7eSAndroid Build Coastguard Worker 		assert_u32_eq(ticker_read(&ticker), NTICKS,
24*1208bc7eSAndroid Build Coastguard Worker 		    "Expected ticker reset");
25*1208bc7eSAndroid Build Coastguard Worker 	}
26*1208bc7eSAndroid Build Coastguard Worker #undef NTICKS
27*1208bc7eSAndroid Build Coastguard Worker }
28*1208bc7eSAndroid Build Coastguard Worker TEST_END
29*1208bc7eSAndroid Build Coastguard Worker 
TEST_BEGIN(test_ticker_ticks)30*1208bc7eSAndroid Build Coastguard Worker TEST_BEGIN(test_ticker_ticks) {
31*1208bc7eSAndroid Build Coastguard Worker #define NTICKS 3
32*1208bc7eSAndroid Build Coastguard Worker 	ticker_t ticker;
33*1208bc7eSAndroid Build Coastguard Worker 
34*1208bc7eSAndroid Build Coastguard Worker 	ticker_init(&ticker, NTICKS);
35*1208bc7eSAndroid Build Coastguard Worker 
36*1208bc7eSAndroid Build Coastguard Worker 	assert_u_eq(ticker_read(&ticker), NTICKS, "Unexpected ticker value");
37*1208bc7eSAndroid Build Coastguard Worker 	assert_false(ticker_ticks(&ticker, NTICKS), "Unexpected ticker fire");
38*1208bc7eSAndroid Build Coastguard Worker 	assert_u_eq(ticker_read(&ticker), 0, "Unexpected ticker value");
39*1208bc7eSAndroid Build Coastguard Worker 	assert_true(ticker_ticks(&ticker, NTICKS), "Expected ticker fire");
40*1208bc7eSAndroid Build Coastguard Worker 	assert_u_eq(ticker_read(&ticker), NTICKS, "Unexpected ticker value");
41*1208bc7eSAndroid Build Coastguard Worker 
42*1208bc7eSAndroid Build Coastguard Worker 	assert_true(ticker_ticks(&ticker, NTICKS + 1), "Expected ticker fire");
43*1208bc7eSAndroid Build Coastguard Worker 	assert_u_eq(ticker_read(&ticker), NTICKS, "Unexpected ticker value");
44*1208bc7eSAndroid Build Coastguard Worker #undef NTICKS
45*1208bc7eSAndroid Build Coastguard Worker }
46*1208bc7eSAndroid Build Coastguard Worker TEST_END
47*1208bc7eSAndroid Build Coastguard Worker 
TEST_BEGIN(test_ticker_copy)48*1208bc7eSAndroid Build Coastguard Worker TEST_BEGIN(test_ticker_copy) {
49*1208bc7eSAndroid Build Coastguard Worker #define NTICKS 3
50*1208bc7eSAndroid Build Coastguard Worker 	ticker_t ta, tb;
51*1208bc7eSAndroid Build Coastguard Worker 
52*1208bc7eSAndroid Build Coastguard Worker 	ticker_init(&ta, NTICKS);
53*1208bc7eSAndroid Build Coastguard Worker 	ticker_copy(&tb, &ta);
54*1208bc7eSAndroid Build Coastguard Worker 	assert_u_eq(ticker_read(&tb), NTICKS, "Unexpected ticker value");
55*1208bc7eSAndroid Build Coastguard Worker 	assert_true(ticker_ticks(&tb, NTICKS + 1), "Expected ticker fire");
56*1208bc7eSAndroid Build Coastguard Worker 	assert_u_eq(ticker_read(&tb), NTICKS, "Unexpected ticker value");
57*1208bc7eSAndroid Build Coastguard Worker 
58*1208bc7eSAndroid Build Coastguard Worker 	ticker_tick(&ta);
59*1208bc7eSAndroid Build Coastguard Worker 	ticker_copy(&tb, &ta);
60*1208bc7eSAndroid Build Coastguard Worker 	assert_u_eq(ticker_read(&tb), NTICKS - 1, "Unexpected ticker value");
61*1208bc7eSAndroid Build Coastguard Worker 	assert_true(ticker_ticks(&tb, NTICKS), "Expected ticker fire");
62*1208bc7eSAndroid Build Coastguard Worker 	assert_u_eq(ticker_read(&tb), NTICKS, "Unexpected ticker value");
63*1208bc7eSAndroid Build Coastguard Worker #undef NTICKS
64*1208bc7eSAndroid Build Coastguard Worker }
65*1208bc7eSAndroid Build Coastguard Worker TEST_END
66*1208bc7eSAndroid Build Coastguard Worker 
67*1208bc7eSAndroid Build Coastguard Worker int
main(void)68*1208bc7eSAndroid Build Coastguard Worker main(void) {
69*1208bc7eSAndroid Build Coastguard Worker 	return test(
70*1208bc7eSAndroid Build Coastguard Worker 	    test_ticker_tick,
71*1208bc7eSAndroid Build Coastguard Worker 	    test_ticker_ticks,
72*1208bc7eSAndroid Build Coastguard Worker 	    test_ticker_copy);
73*1208bc7eSAndroid Build Coastguard Worker }
74