mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-07-23 21:23:06 +00:00
Improve unit test coverage for jemalloc_init, arenas_management, and jemalloc_fork modules
This commit is contained in:
@@ -9,7 +9,63 @@ TEST_BEGIN(test_a0) {
|
||||
}
|
||||
TEST_END
|
||||
|
||||
TEST_BEGIN(test_a0_multi_sizes) {
|
||||
static const size_t sizes[] = {1, 8, 1024, 64 * 1024};
|
||||
void *ptrs[ARRAY_SIZE(sizes)];
|
||||
|
||||
for (unsigned i = 0; i < ARRAY_SIZE(sizes); i++) {
|
||||
ptrs[i] = a0malloc(sizes[i]);
|
||||
expect_ptr_not_null(
|
||||
ptrs[i], "Unexpected a0malloc(%zu) failure", sizes[i]);
|
||||
for (unsigned j = 0; j < i; j++) {
|
||||
expect_ptr_ne(ptrs[i], ptrs[j],
|
||||
"a0malloc returned duplicate pointer (i=%u, j=%u)",
|
||||
i, j);
|
||||
}
|
||||
}
|
||||
for (unsigned i = 0; i < ARRAY_SIZE(sizes); i++) {
|
||||
a0dalloc(ptrs[i]);
|
||||
}
|
||||
}
|
||||
TEST_END
|
||||
|
||||
TEST_BEGIN(test_a0_ialloc_zero) {
|
||||
static const size_t sizes[] = {1, 8, 1024, 64 * 1024};
|
||||
|
||||
for (unsigned i = 0; i < ARRAY_SIZE(sizes); i++) {
|
||||
size_t size = sizes[i];
|
||||
uint8_t *p = (uint8_t *)a0ialloc(size, /* zero */ true,
|
||||
/* is_internal */ true);
|
||||
expect_ptr_not_null(p, "Unexpected a0ialloc(zero=true, %zu)",
|
||||
size);
|
||||
for (size_t k = 0; k < size; k++) {
|
||||
expect_u_eq((unsigned)p[k], 0,
|
||||
"a0ialloc(zero=true) byte %zu of %zu not zero",
|
||||
k, size);
|
||||
}
|
||||
a0idalloc(p, /* is_internal */ true);
|
||||
}
|
||||
|
||||
/* zero=false: just must not crash and must return non-NULL. */
|
||||
void *q = a0ialloc(64, /* zero */ false, /* is_internal */ true);
|
||||
expect_ptr_not_null(q, "Unexpected a0ialloc(zero=false) failure");
|
||||
a0idalloc(q, /* is_internal */ true);
|
||||
}
|
||||
TEST_END
|
||||
|
||||
TEST_BEGIN(test_a0_ialloc_internal_flag) {
|
||||
void *p_internal = a0ialloc(64, false, /* is_internal */ true);
|
||||
expect_ptr_not_null(p_internal, "a0ialloc(is_internal=true) failed");
|
||||
a0idalloc(p_internal, /* is_internal */ true);
|
||||
|
||||
void *p_external = a0ialloc(64, false, /* is_internal */ false);
|
||||
expect_ptr_not_null(p_external, "a0ialloc(is_internal=false) failed");
|
||||
a0idalloc(p_external, /* is_internal */ false);
|
||||
}
|
||||
TEST_END
|
||||
|
||||
int
|
||||
main(void) {
|
||||
return test_no_malloc_init(test_a0);
|
||||
return test_no_malloc_init(test_a0, test_a0_multi_sizes,
|
||||
test_a0_ialloc_zero, test_a0_ialloc_internal_flag);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user