xref: /netbsd-src/external/bsd/jemalloc.old/dist/test/unit/prof_idump.c (revision 8e33eff89e26cf71871ead62f0d5063e1313c33a)
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