X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Falloc%2Ftest%2Frun.c;h=8247122eaa4041b8ebf643d2e5077605019f64ce;hb=c934a7a21d9ea8aa421d62a65a93f46c95adb535;hp=8cfe8b42ba00d3c40a14a533f6d644426341ff9e;hpb=650c775ff00cccd03fc84e7789a03c51d9839004;p=ccan diff --git a/ccan/alloc/test/run.c b/ccan/alloc/test/run.c index 8cfe8b42..8247122e 100644 --- a/ccan/alloc/test/run.c +++ b/ccan/alloc/test/run.c @@ -2,6 +2,7 @@ #include "tap/tap.h" #include "alloc/alloc.c" #include +#include #define POOL_ORD 16 #define POOL_SIZE (1 << POOL_ORD) @@ -49,10 +50,11 @@ int main(int argc, char *argv[]) unsigned int i, num, max_size; void *p[POOL_SIZE]; - plan_tests(139); + plan_tests(178); /* FIXME: Needs to be page aligned for now. */ - posix_memalign(&mem, 1 << POOL_ORD, POOL_SIZE); + if (posix_memalign(&mem, 1 << POOL_ORD, POOL_SIZE) != 0) + errx(1, "Failed allocating aligned memory"); /* Small pool, all allocs fail, even 0-length. */ alloc_init(mem, 0); @@ -75,6 +77,7 @@ int main(int argc, char *argv[]) ok1(max_size < POOL_SIZE); ok1(max_size > 0); ok1(alloc_check(mem, POOL_SIZE)); + ok1(alloc_size(mem, POOL_SIZE, p[0]) >= max_size); /* Free it, should be able to reallocate it. */ alloc_free(mem, POOL_SIZE, p[0]); @@ -82,6 +85,7 @@ int main(int argc, char *argv[]) p[0] = alloc_get(mem, POOL_SIZE, max_size, 1); ok1(p[0]); + ok1(alloc_size(mem, POOL_SIZE, p[0]) >= max_size); ok1(alloc_check(mem, POOL_SIZE)); alloc_free(mem, POOL_SIZE, p[0]); ok1(alloc_check(mem, POOL_SIZE)); @@ -117,12 +121,14 @@ int main(int argc, char *argv[]) p[0] = alloc_get(mem, POOL_SIZE, max_size, 1); ok1(p[0]); ok1(alloc_check(mem, POOL_SIZE)); + ok1(alloc_size(mem, POOL_SIZE, p[0]) >= max_size); /* Re-initializing should be the same as freeing everything */ alloc_init(mem, POOL_SIZE); ok1(alloc_check(mem, POOL_SIZE)); p[0] = alloc_get(mem, POOL_SIZE, max_size, 1); ok1(p[0]); + ok1(alloc_size(mem, POOL_SIZE, p[0]) >= max_size); ok1(alloc_check(mem, POOL_SIZE)); alloc_free(mem, POOL_SIZE, p[0]); ok1(alloc_check(mem, POOL_SIZE)); @@ -133,6 +139,7 @@ int main(int argc, char *argv[]) ok1(p[i]); ok1(((unsigned long)p[i] % (1 << i)) == 0); ok1(alloc_check(mem, POOL_SIZE)); + ok1(alloc_size(mem, POOL_SIZE, p[i]) >= i); } for (i = 0; i < POOL_ORD-1; i++) { @@ -145,6 +152,7 @@ int main(int argc, char *argv[]) p[0] = alloc_get(mem, POOL_SIZE, 1, 1 << i); ok1(p[0]); ok1(alloc_check(mem, POOL_SIZE)); + ok1(alloc_size(mem, POOL_SIZE, p[i]) >= 1); alloc_free(mem, POOL_SIZE, p[0]); ok1(alloc_check(mem, POOL_SIZE)); } @@ -152,6 +160,7 @@ int main(int argc, char *argv[]) /* Alignment check for a 0-byte allocation. Corner case. */ p[0] = alloc_get(mem, POOL_SIZE, 0, 1 << (POOL_ORD - 1)); ok1(alloc_check(mem, POOL_SIZE)); + ok1(alloc_size(mem, POOL_SIZE, p[0]) < POOL_SIZE); alloc_free(mem, POOL_SIZE, p[0]); ok1(alloc_check(mem, POOL_SIZE)); @@ -163,6 +172,7 @@ int main(int argc, char *argv[]) break; } ok1(alloc_check(mem, POOL_SIZE)); + ok1(alloc_size(mem, POOL_SIZE, p[i-1]) >= getpagesize()); /* Sort them. */ sort(p, i-1, addr_cmp); @@ -171,6 +181,7 @@ int main(int argc, char *argv[]) for (i = 1; p[i]; i++) alloc_free(mem, POOL_SIZE, p[i]); ok1(alloc_check(mem, POOL_SIZE)); + ok1(alloc_size(mem, POOL_SIZE, p[0]) >= getpagesize()); /* Now do a whole heap of subpage allocs. */ for (i = 1; i < POOL_SIZE; i++) { @@ -185,6 +196,7 @@ int main(int argc, char *argv[]) ok1(alloc_check(mem, POOL_SIZE)); p[0] = alloc_get(mem, POOL_SIZE, 1, 1); ok1(p[0]); + ok1(alloc_size(mem, POOL_SIZE, p[0]) >= 1); /* Clean up. */ for (i = 0; p[i]; i++)