Periodically purge in memory-intensive integration tests.

This resolves #393.
This commit is contained in:
Jason Evans 2016-10-28 10:44:39 -07:00
parent e7d6779918
commit 2c53faf352
3 changed files with 27 additions and 6 deletions

View File

@ -1,9 +1,7 @@
#include "test/jemalloc_test.h" #include "test/jemalloc_test.h"
#define CHUNK 0x400000 #define CHUNK 0x400000
/* #define MAXALIGN ((size_t)UINT64_C(0x80000000000)) */ #define MAXALIGN (((size_t)1) << 25)
#define MAXALIGN ((size_t)0x2000000LU)
#define NITER 4
TEST_BEGIN(test_alignment_errors) TEST_BEGIN(test_alignment_errors)
{ {
@ -74,6 +72,7 @@ TEST_END
TEST_BEGIN(test_alignment_and_size) TEST_BEGIN(test_alignment_and_size)
{ {
#define NITER 4
size_t alignment, size, total; size_t alignment, size, total;
unsigned i; unsigned i;
void *ps[NITER]; void *ps[NITER];
@ -110,7 +109,15 @@ TEST_BEGIN(test_alignment_and_size)
} }
} }
} }
/*
* On systems which can't merge extents, this test generates a
* lot of dirty memory very quickly. Purge between cycles to
* avoid potential OOM on e.g. 32-bit Windows.
*/
assert_d_eq(mallctl("arena.0.purge", NULL, NULL, NULL, 0), 0,
"Unexpected mallctl error");
} }
#undef NITER
} }
TEST_END TEST_END

View File

@ -196,6 +196,13 @@ TEST_BEGIN(test_alignment_and_size)
} }
} }
} }
/*
* On systems which can't merge extents, this test generates a
* lot of dirty memory very quickly. Purge between cycles to
* avoid potential OOM on e.g. 32-bit Windows.
*/
assert_d_eq(mallctl("arena.0.purge", NULL, NULL, NULL, 0), 0,
"Unexpected mallctl error");
} }
#undef MAXALIGN #undef MAXALIGN
#undef NITER #undef NITER

View File

@ -1,9 +1,7 @@
#include "test/jemalloc_test.h" #include "test/jemalloc_test.h"
#define CHUNK 0x400000 #define CHUNK 0x400000
/* #define MAXALIGN ((size_t)UINT64_C(0x80000000000)) */ #define MAXALIGN (((size_t)1) << 25)
#define MAXALIGN ((size_t)0x2000000LU)
#define NITER 4
TEST_BEGIN(test_alignment_errors) TEST_BEGIN(test_alignment_errors)
{ {
@ -66,6 +64,7 @@ TEST_END
TEST_BEGIN(test_alignment_and_size) TEST_BEGIN(test_alignment_and_size)
{ {
#define NITER 4
size_t alignment, size, total; size_t alignment, size, total;
unsigned i; unsigned i;
int err; int err;
@ -104,7 +103,15 @@ TEST_BEGIN(test_alignment_and_size)
} }
} }
} }
/*
* On systems which can't merge extents, this test generates a
* lot of dirty memory very quickly. Purge between cycles to
* avoid potential OOM on e.g. 32-bit Windows.
*/
assert_d_eq(mallctl("arena.0.purge", NULL, NULL, NULL, 0), 0,
"Unexpected mallctl error");
} }
#undef NITER
} }
TEST_END TEST_END