1*1208bc7eSAndroid Build Coastguard Worker #include "test/jemalloc_test.h"
2*1208bc7eSAndroid Build Coastguard Worker
3*1208bc7eSAndroid Build Coastguard Worker static bool did_prof_dump_open;
4*1208bc7eSAndroid Build Coastguard Worker
5*1208bc7eSAndroid Build Coastguard Worker static int
prof_dump_open_intercept(bool propagate_err,const char * filename)6*1208bc7eSAndroid Build Coastguard Worker prof_dump_open_intercept(bool propagate_err, const char *filename) {
7*1208bc7eSAndroid Build Coastguard Worker int fd;
8*1208bc7eSAndroid Build Coastguard Worker
9*1208bc7eSAndroid Build Coastguard Worker did_prof_dump_open = true;
10*1208bc7eSAndroid Build Coastguard Worker
11*1208bc7eSAndroid Build Coastguard Worker fd = open("/dev/null", O_WRONLY);
12*1208bc7eSAndroid Build Coastguard Worker assert_d_ne(fd, -1, "Unexpected open() failure");
13*1208bc7eSAndroid Build Coastguard Worker
14*1208bc7eSAndroid Build Coastguard Worker return fd;
15*1208bc7eSAndroid Build Coastguard Worker }
16*1208bc7eSAndroid Build Coastguard Worker
TEST_BEGIN(test_idump)17*1208bc7eSAndroid Build Coastguard Worker TEST_BEGIN(test_idump) {
18*1208bc7eSAndroid Build Coastguard Worker bool active;
19*1208bc7eSAndroid Build Coastguard Worker void *p;
20*1208bc7eSAndroid Build Coastguard Worker
21*1208bc7eSAndroid Build Coastguard Worker test_skip_if(!config_prof);
22*1208bc7eSAndroid Build Coastguard Worker
23*1208bc7eSAndroid Build Coastguard Worker active = true;
24*1208bc7eSAndroid Build Coastguard Worker assert_d_eq(mallctl("prof.active", NULL, NULL, (void *)&active,
25*1208bc7eSAndroid Build Coastguard Worker sizeof(active)), 0,
26*1208bc7eSAndroid Build Coastguard Worker "Unexpected mallctl failure while activating profiling");
27*1208bc7eSAndroid Build Coastguard Worker
28*1208bc7eSAndroid Build Coastguard Worker prof_dump_open = prof_dump_open_intercept;
29*1208bc7eSAndroid Build Coastguard Worker
30*1208bc7eSAndroid Build Coastguard Worker did_prof_dump_open = false;
31*1208bc7eSAndroid Build Coastguard Worker p = mallocx(1, 0);
32*1208bc7eSAndroid Build Coastguard Worker assert_ptr_not_null(p, "Unexpected mallocx() failure");
33*1208bc7eSAndroid Build Coastguard Worker dallocx(p, 0);
34*1208bc7eSAndroid Build Coastguard Worker assert_true(did_prof_dump_open, "Expected a profile dump");
35*1208bc7eSAndroid Build Coastguard Worker }
36*1208bc7eSAndroid Build Coastguard Worker TEST_END
37*1208bc7eSAndroid Build Coastguard Worker
38*1208bc7eSAndroid Build Coastguard Worker int
main(void)39*1208bc7eSAndroid Build Coastguard Worker main(void) {
40*1208bc7eSAndroid Build Coastguard Worker return test(
41*1208bc7eSAndroid Build Coastguard Worker test_idump);
42*1208bc7eSAndroid Build Coastguard Worker }
43