Home | History | Annotate | Line # | Download | only in stress
      1 #include "test/jemalloc_test.h"
      2 #include "test/bench.h"
      3 
      4 static void
      5 mallctl_short(void) {
      6 	const char *version;
      7 	size_t sz = sizeof(version);
      8 	int err = mallctl("version", &version, &sz, NULL, 0);
      9 	assert_d_eq(err, 0, "mallctl failure");
     10 }
     11 
     12 size_t mib_short[1];
     13 
     14 static void
     15 mallctlbymib_short(void) {
     16 	size_t miblen = sizeof(mib_short)/sizeof(mib_short[0]);
     17 	const char *version;
     18 	size_t sz = sizeof(version);
     19 	int err = mallctlbymib(mib_short, miblen, &version, &sz, NULL, 0);
     20 	assert_d_eq(err, 0, "mallctlbymib failure");
     21 }
     22 
     23 TEST_BEGIN(test_mallctl_vs_mallctlbymib_short) {
     24 	size_t miblen = sizeof(mib_short)/sizeof(mib_short[0]);
     25 
     26 	int err = mallctlnametomib("version", mib_short, &miblen);
     27 	assert_d_eq(err, 0, "mallctlnametomib failure");
     28 	compare_funcs(10*1000*1000, 10*1000*1000, "mallctl_short",
     29 	    mallctl_short, "mallctlbymib_short", mallctlbymib_short);
     30 }
     31 TEST_END
     32 
     33 static void
     34 mallctl_long(void) {
     35 	uint64_t nmalloc;
     36 	size_t sz = sizeof(nmalloc);
     37 	int err = mallctl("stats.arenas.0.bins.0.nmalloc", &nmalloc, &sz, NULL,
     38 	    0);
     39 	assert_d_eq(err, 0, "mallctl failure");
     40 }
     41 
     42 size_t mib_long[6];
     43 
     44 static void
     45 mallctlbymib_long(void) {
     46 	size_t miblen = sizeof(mib_long)/sizeof(mib_long[0]);
     47 	uint64_t nmalloc;
     48 	size_t sz = sizeof(nmalloc);
     49 	int err = mallctlbymib(mib_long, miblen, &nmalloc, &sz, NULL, 0);
     50 	assert_d_eq(err, 0, "mallctlbymib failure");
     51 }
     52 
     53 TEST_BEGIN(test_mallctl_vs_mallctlbymib_long) {
     54 	/*
     55 	 * We want to use the longest mallctl we have; that needs stats support
     56 	 * to be allowed.
     57 	 */
     58 	test_skip_if(!config_stats);
     59 
     60 	size_t miblen = sizeof(mib_long)/sizeof(mib_long[0]);
     61 	int err = mallctlnametomib("stats.arenas.0.bins.0.nmalloc", mib_long,
     62 	    &miblen);
     63 	assert_d_eq(err, 0, "mallctlnametomib failure");
     64 	compare_funcs(10*1000*1000, 10*1000*1000, "mallctl_long",
     65 	    mallctl_long, "mallctlbymib_long", mallctlbymib_long);
     66 }
     67 TEST_END
     68 
     69 int
     70 main(void) {
     71 	return test_no_reentrancy(
     72 	    test_mallctl_vs_mallctlbymib_short,
     73 	    test_mallctl_vs_mallctlbymib_long);
     74 }
     75