1*7bdf38e5Schristos #include "test/jemalloc_test.h" 2*7bdf38e5Schristos 3*7bdf38e5Schristos #include "jemalloc/internal/peak.h" 4*7bdf38e5Schristos 5*7bdf38e5Schristos TEST_BEGIN(test_peak) { 6*7bdf38e5Schristos peak_t peak = PEAK_INITIALIZER; 7*7bdf38e5Schristos expect_u64_eq(0, peak_max(&peak), 8*7bdf38e5Schristos "Peak should be zero at initialization"); 9*7bdf38e5Schristos peak_update(&peak, 100, 50); 10*7bdf38e5Schristos expect_u64_eq(50, peak_max(&peak), 11*7bdf38e5Schristos "Missed update"); 12*7bdf38e5Schristos peak_update(&peak, 100, 100); 13*7bdf38e5Schristos expect_u64_eq(50, peak_max(&peak), "Dallocs shouldn't change peak"); 14*7bdf38e5Schristos peak_update(&peak, 100, 200); 15*7bdf38e5Schristos expect_u64_eq(50, peak_max(&peak), "Dallocs shouldn't change peak"); 16*7bdf38e5Schristos peak_update(&peak, 200, 200); 17*7bdf38e5Schristos expect_u64_eq(50, peak_max(&peak), "Haven't reached peak again"); 18*7bdf38e5Schristos peak_update(&peak, 300, 200); 19*7bdf38e5Schristos expect_u64_eq(100, peak_max(&peak), "Missed an update."); 20*7bdf38e5Schristos peak_set_zero(&peak, 300, 200); 21*7bdf38e5Schristos expect_u64_eq(0, peak_max(&peak), "No effect from zeroing"); 22*7bdf38e5Schristos peak_update(&peak, 300, 300); 23*7bdf38e5Schristos expect_u64_eq(0, peak_max(&peak), "Dalloc shouldn't change peak"); 24*7bdf38e5Schristos peak_update(&peak, 400, 300); 25*7bdf38e5Schristos expect_u64_eq(0, peak_max(&peak), "Should still be net negative"); 26*7bdf38e5Schristos peak_update(&peak, 500, 300); 27*7bdf38e5Schristos expect_u64_eq(100, peak_max(&peak), "Missed an update."); 28*7bdf38e5Schristos /* 29*7bdf38e5Schristos * Above, we set to zero while a net allocator; let's try as a 30*7bdf38e5Schristos * net-deallocator. 31*7bdf38e5Schristos */ 32*7bdf38e5Schristos peak_set_zero(&peak, 600, 700); 33*7bdf38e5Schristos expect_u64_eq(0, peak_max(&peak), "No effect from zeroing."); 34*7bdf38e5Schristos peak_update(&peak, 600, 800); 35*7bdf38e5Schristos expect_u64_eq(0, peak_max(&peak), "Dalloc shouldn't change peak."); 36*7bdf38e5Schristos peak_update(&peak, 700, 800); 37*7bdf38e5Schristos expect_u64_eq(0, peak_max(&peak), "Should still be net negative."); 38*7bdf38e5Schristos peak_update(&peak, 800, 800); 39*7bdf38e5Schristos expect_u64_eq(100, peak_max(&peak), "Missed an update."); 40*7bdf38e5Schristos } 41*7bdf38e5Schristos TEST_END 42*7bdf38e5Schristos 43*7bdf38e5Schristos int 44*7bdf38e5Schristos main(void) { 45*7bdf38e5Schristos return test_no_reentrancy( 46*7bdf38e5Schristos test_peak); 47*7bdf38e5Schristos } 48