48 lines
1.6 KiB
C
48 lines
1.6 KiB
C
|
#include "test/jemalloc_test.h"
|
||
|
|
||
|
#include "jemalloc/internal/peak.h"
|
||
|
|
||
|
TEST_BEGIN(test_peak) {
|
||
|
peak_t peak = PEAK_INITIALIZER;
|
||
|
expect_u64_eq(0, peak_max(&peak),
|
||
|
"Peak should be zero at initialization");
|
||
|
peak_update(&peak, 100, 50);
|
||
|
expect_u64_eq(50, peak_max(&peak),
|
||
|
"Missed update");
|
||
|
peak_update(&peak, 100, 100);
|
||
|
expect_u64_eq(50, peak_max(&peak), "Dallocs shouldn't change peak");
|
||
|
peak_update(&peak, 100, 200);
|
||
|
expect_u64_eq(50, peak_max(&peak), "Dallocs shouldn't change peak");
|
||
|
peak_update(&peak, 200, 200);
|
||
|
expect_u64_eq(50, peak_max(&peak), "Haven't reached peak again");
|
||
|
peak_update(&peak, 300, 200);
|
||
|
expect_u64_eq(100, peak_max(&peak), "Missed an update.");
|
||
|
peak_set_zero(&peak, 300, 200);
|
||
|
expect_u64_eq(0, peak_max(&peak), "No effect from zeroing");
|
||
|
peak_update(&peak, 300, 300);
|
||
|
expect_u64_eq(0, peak_max(&peak), "Dalloc shouldn't change peak");
|
||
|
peak_update(&peak, 400, 300);
|
||
|
expect_u64_eq(0, peak_max(&peak), "Should still be net negative");
|
||
|
peak_update(&peak, 500, 300);
|
||
|
expect_u64_eq(100, peak_max(&peak), "Missed an update.");
|
||
|
/*
|
||
|
* Above, we set to zero while a net allocator; let's try as a
|
||
|
* net-deallocator.
|
||
|
*/
|
||
|
peak_set_zero(&peak, 600, 700);
|
||
|
expect_u64_eq(0, peak_max(&peak), "No effect from zeroing.");
|
||
|
peak_update(&peak, 600, 800);
|
||
|
expect_u64_eq(0, peak_max(&peak), "Dalloc shouldn't change peak.");
|
||
|
peak_update(&peak, 700, 800);
|
||
|
expect_u64_eq(0, peak_max(&peak), "Should still be net negative.");
|
||
|
peak_update(&peak, 800, 800);
|
||
|
expect_u64_eq(100, peak_max(&peak), "Missed an update.");
|
||
|
}
|
||
|
TEST_END
|
||
|
|
||
|
int
|
||
|
main(void) {
|
||
|
return test_no_reentrancy(
|
||
|
test_peak);
|
||
|
}
|