summaryrefslogtreecommitdiff
path: root/pjlib/src/pjlib-test
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2010-01-29 11:20:43 +0000
committerBenny Prijono <bennylp@teluu.com>2010-01-29 11:20:43 +0000
commitf3d584101fb40816718221330df4a729080340f9 (patch)
tree6e72ab8abaea21fd2da18b45e23008f9c880e132 /pjlib/src/pjlib-test
parent8e54a92b6eb6302761fd9a1949086baa26e0007a (diff)
More ticket #1037:
- bug in aligning pointer if sizeof(long) is less than sizeof(void*). Thanks John Ridges for pointing this out git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3082 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjlib/src/pjlib-test')
-rw-r--r--pjlib/src/pjlib-test/pool.c104
1 files changed, 42 insertions, 62 deletions
diff --git a/pjlib/src/pjlib-test/pool.c b/pjlib/src/pjlib-test/pool.c
index 930e552e..21b2205a 100644
--- a/pjlib/src/pjlib-test/pool.c
+++ b/pjlib/src/pjlib-test/pool.c
@@ -84,51 +84,41 @@ static int pool_alignment_test(void)
{
pj_pool_t *pool;
void *ptr;
+ enum { MEMSIZE = 64, LOOP = 100 };
+ unsigned i;
PJ_LOG(3,("test", "...alignment test"));
- pool = pj_pool_create(mem, NULL, PJ_POOL_SIZE+64, 64, NULL);
+ pool = pj_pool_create(mem, NULL, PJ_POOL_SIZE+MEMSIZE, MEMSIZE, NULL);
if (!pool)
return -300;
#define IS_ALIGNED(p) ((((unsigned long)p) & (PJ_POOL_ALIGNMENT-1)) == 0)
- /* Test first allocation */
- ptr = pj_pool_alloc(pool, 1);
- if (!IS_ALIGNED(ptr)) {
- pj_pool_release(pool);
- return -310;
- }
-
- /* Test subsequent allocation */
- ptr = pj_pool_alloc(pool, 1);
- if (!IS_ALIGNED(ptr)) {
- pj_pool_release(pool);
- return -320;
- }
+ for (i=0; i<LOOP; ++i) {
+ /* Test first allocation */
+ ptr = pj_pool_alloc(pool, 1);
+ if (!IS_ALIGNED(ptr)) {
+ pj_pool_release(pool);
+ return -310;
+ }
- /* Test allocation after new block is created */
- ptr = pj_pool_alloc(pool, 127);
- if (!IS_ALIGNED(ptr)) {
- pj_pool_release(pool);
- return -330;
- }
+ /* Test subsequent allocation */
+ ptr = pj_pool_alloc(pool, 1);
+ if (!IS_ALIGNED(ptr)) {
+ pj_pool_release(pool);
+ return -320;
+ }
- /* Reset the pool */
- pj_pool_reset(pool);
+ /* Test allocation after new block is created */
+ ptr = pj_pool_alloc(pool, MEMSIZE*2+1);
+ if (!IS_ALIGNED(ptr)) {
+ pj_pool_release(pool);
+ return -330;
+ }
- /* Retest first allocation */
- ptr = pj_pool_alloc(pool, 1);
- if (!IS_ALIGNED(ptr)) {
- pj_pool_release(pool);
- return -340;
- }
-
- /* Retest subsequent allocation */
- ptr = pj_pool_alloc(pool, 1);
- if (!IS_ALIGNED(ptr)) {
- pj_pool_release(pool);
- return -350;
+ /* Reset the pool */
+ pj_pool_reset(pool);
}
/* Done */
@@ -141,8 +131,10 @@ static int pool_alignment_test(void)
static int pool_buf_alignment_test(void)
{
pj_pool_t *pool;
- char buf[256];
+ char buf[512];
void *ptr;
+ enum { LOOP = 100 };
+ unsigned i;
PJ_LOG(3,("test", "...pool_buf alignment test"));
@@ -150,35 +142,23 @@ static int pool_buf_alignment_test(void)
if (!pool)
return -400;
- /* Test first allocation */
- ptr = pj_pool_alloc(pool, 1);
- if (!IS_ALIGNED(ptr)) {
- pj_pool_release(pool);
- return -410;
- }
-
- /* Test subsequent allocation */
- ptr = pj_pool_alloc(pool, 1);
- if (!IS_ALIGNED(ptr)) {
- pj_pool_release(pool);
- return -420;
- }
-
- /* Reset the pool */
- pj_pool_reset(pool);
+ for (i=0; i<LOOP; ++i) {
+ /* Test first allocation */
+ ptr = pj_pool_alloc(pool, 1);
+ if (!IS_ALIGNED(ptr)) {
+ pj_pool_release(pool);
+ return -410;
+ }
- /* Retest first allocation */
- ptr = pj_pool_alloc(pool, 1);
- if (!IS_ALIGNED(ptr)) {
- pj_pool_release(pool);
- return -430;
- }
+ /* Test subsequent allocation */
+ ptr = pj_pool_alloc(pool, 1);
+ if (!IS_ALIGNED(ptr)) {
+ pj_pool_release(pool);
+ return -420;
+ }
- /* Retest subsequent allocation */
- ptr = pj_pool_alloc(pool, 1);
- if (!IS_ALIGNED(ptr)) {
- pj_pool_release(pool);
- return -440;
+ /* Reset the pool */
+ pj_pool_reset(pool);
}
/* Done */