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