Exemple #1
0
TEST_END

TEST_BEGIN(test_bitmap_sfu)
{
	size_t i;

	for (i = 1; i <= BITMAP_MAXBITS; i++) {
		bitmap_info_t binfo;
		bitmap_info_init(&binfo, i);
		{
			size_t j;
			bitmap_t *bitmap = (bitmap_t *)malloc(
			    bitmap_size(&binfo));
			bitmap_init(bitmap, &binfo);

			/* Iteratively set bits starting at the beginning. */
			for (j = 0; j < i; j++) {
				assert_zd_eq(bitmap_sfu(bitmap, &binfo), j,
				    "First unset bit should be just after "
				    "previous first unset bit");
			}
			assert_true(bitmap_full(bitmap, &binfo),
			    "All bits should be set");

			/*
			 * Iteratively unset bits starting at the end, and
			 * verify that bitmap_sfu() reaches the unset bits.
			 */
			for (j = i - 1; j < i; j--) { /* (i..0] */
				bitmap_unset(bitmap, &binfo, j);
				assert_zd_eq(bitmap_sfu(bitmap, &binfo), j,
				    "First unset bit should the bit previously "
				    "unset");
				bitmap_unset(bitmap, &binfo, j);
			}
			assert_false(bitmap_get(bitmap, &binfo, 0),
			    "Bit should be unset");

			/*
			 * Iteratively set bits starting at the beginning, and
			 * verify that bitmap_sfu() looks past them.
			 */
			for (j = 1; j < i; j++) {
				bitmap_set(bitmap, &binfo, j - 1);
				assert_zd_eq(bitmap_sfu(bitmap, &binfo), j,
				    "First unset bit should be just after the "
				    "bit previously set");
				bitmap_unset(bitmap, &binfo, j);
			}
			assert_zd_eq(bitmap_sfu(bitmap, &binfo), i - 1,
			    "First unset bit should be the last bit");
			assert_true(bitmap_full(bitmap, &binfo),
			    "All bits should be set");
			free(bitmap);
		}
	}
}
Exemple #2
0
TEST_END

TEST_BEGIN(test_arenas_muzzy_decay_ms) {
	ssize_t muzzy_decay_ms, orig_muzzy_decay_ms, prev_muzzy_decay_ms;
	size_t sz = sizeof(ssize_t);

	assert_d_eq(mallctl("arenas.muzzy_decay_ms",
	    (void *)&orig_muzzy_decay_ms, &sz, NULL, 0), 0,
	    "Unexpected mallctl() failure");

	muzzy_decay_ms = -2;
	assert_d_eq(mallctl("arenas.muzzy_decay_ms", NULL, NULL,
	    (void *)&muzzy_decay_ms, sizeof(ssize_t)), EFAULT,
	    "Unexpected mallctl() success");

	muzzy_decay_ms = 0x7fffffff;
	assert_d_eq(mallctl("arenas.muzzy_decay_ms", NULL, NULL,
	    (void *)&muzzy_decay_ms, sizeof(ssize_t)), 0,
	    "Expected mallctl() failure");

	for (prev_muzzy_decay_ms = muzzy_decay_ms, muzzy_decay_ms = -1;
	    muzzy_decay_ms < 20; prev_muzzy_decay_ms = muzzy_decay_ms,
	    muzzy_decay_ms++) {
		ssize_t old_muzzy_decay_ms;

		assert_d_eq(mallctl("arenas.muzzy_decay_ms",
		    (void *)&old_muzzy_decay_ms, &sz, (void *)&muzzy_decay_ms,
		    sizeof(ssize_t)), 0, "Unexpected mallctl() failure");
		assert_zd_eq(old_muzzy_decay_ms, prev_muzzy_decay_ms,
		    "Unexpected old arenas.muzzy_decay_ms");
	}
}
Exemple #3
0
TEST_END

TEST_BEGIN(test_arena_i_dirty_decay_ms) {
	ssize_t dirty_decay_ms, orig_dirty_decay_ms, prev_dirty_decay_ms;
	size_t sz = sizeof(ssize_t);

	assert_d_eq(mallctl("arena.0.dirty_decay_ms",
	    (void *)&orig_dirty_decay_ms, &sz, NULL, 0), 0,
	    "Unexpected mallctl() failure");

	dirty_decay_ms = -2;
	assert_d_eq(mallctl("arena.0.dirty_decay_ms", NULL, NULL,
	    (void *)&dirty_decay_ms, sizeof(ssize_t)), EFAULT,
	    "Unexpected mallctl() success");

	dirty_decay_ms = 0x7fffffff;
	assert_d_eq(mallctl("arena.0.dirty_decay_ms", NULL, NULL,
	    (void *)&dirty_decay_ms, sizeof(ssize_t)), 0,
	    "Unexpected mallctl() failure");

	for (prev_dirty_decay_ms = dirty_decay_ms, dirty_decay_ms = -1;
	    dirty_decay_ms < 20; prev_dirty_decay_ms = dirty_decay_ms,
	    dirty_decay_ms++) {
		ssize_t old_dirty_decay_ms;

		assert_d_eq(mallctl("arena.0.dirty_decay_ms",
		    (void *)&old_dirty_decay_ms, &sz, (void *)&dirty_decay_ms,
		    sizeof(ssize_t)), 0, "Unexpected mallctl() failure");
		assert_zd_eq(old_dirty_decay_ms, prev_dirty_decay_ms,
		    "Unexpected old arena.0.dirty_decay_ms");
	}
}
Exemple #4
0
TEST_END

static void
test_bitmap_sfu_body(const bitmap_info_t *binfo, size_t nbits)
{
	size_t i;
	bitmap_t *bitmap = (bitmap_t *)malloc(bitmap_size(binfo));
	assert_ptr_not_null(bitmap, "Unexpected malloc() failure");
	bitmap_init(bitmap, binfo);

	/* Iteratively set bits starting at the beginning. */
	for (i = 0; i < nbits; i++) {
		assert_zd_eq(bitmap_sfu(bitmap, binfo), i,
		    "First unset bit should be just after previous first unset "
		    "bit");
	}
	assert_true(bitmap_full(bitmap, binfo), "All bits should be set");

	/*
	 * Iteratively unset bits starting at the end, and verify that
	 * bitmap_sfu() reaches the unset bits.
	 */
	for (i = nbits - 1; i < nbits; i--) { /* (nbits..0] */
		bitmap_unset(bitmap, binfo, i);
		assert_zd_eq(bitmap_sfu(bitmap, binfo), i,
		    "First unset bit should the bit previously unset");
		bitmap_unset(bitmap, binfo, i);
	}
	assert_false(bitmap_get(bitmap, binfo, 0), "Bit should be unset");

	/*
	 * Iteratively set bits starting at the beginning, and verify that
	 * bitmap_sfu() looks past them.
	 */
	for (i = 1; i < nbits; i++) {
		bitmap_set(bitmap, binfo, i - 1);
		assert_zd_eq(bitmap_sfu(bitmap, binfo), i,
		    "First unset bit should be just after the bit previously "
		    "set");
		bitmap_unset(bitmap, binfo, i);
	}
	assert_zd_eq(bitmap_sfu(bitmap, binfo), nbits - 1,
	    "First unset bit should be the last bit");
	assert_true(bitmap_full(bitmap, binfo), "All bits should be set");
	free(bitmap);
}