fixup tests following the stricter block checking

This commit is contained in:
Joe Thornber 2011-07-22 16:32:47 +01:00
parent a683979585
commit 5c66593d11
4 changed files with 38 additions and 14 deletions

View File

@ -112,9 +112,10 @@ block_manager<BlockSize>::write_lock_zero(block_address location)
buffer buf; buffer buf;
zero_buffer(buf); zero_buffer(buf);
register_lock(location, WRITE_LOCK);
typename block::ptr b(new block(location, buf, lock_count_, ordinary_count_), typename block::ptr b(new block(location, buf, lock_count_, ordinary_count_),
bind(&block_manager<BlockSize>::write_release, this, _1)); bind(&block_manager<BlockSize>::write_release, this, _1));
register_lock(location, WRITE_LOCK);
return write_ref(b); return write_ref(b);
} }

View File

@ -92,7 +92,6 @@ BOOST_AUTO_TEST_CASE(different_block_sizes)
BOOST_CHECK_EQUAL(sizeof(rr.data()), 4096); BOOST_CHECK_EQUAL(sizeof(rr.data()), 4096);
} }
{ {
block_manager<64 * 1024> bm("./test.data", 64); block_manager<64 * 1024> bm("./test.data", 64);
auto rr = bm.read_lock(0); auto rr = bm.read_lock(0);

View File

@ -11,7 +11,7 @@ using namespace persistent_data;
//---------------------------------------------------------------- //----------------------------------------------------------------
namespace { namespace {
block_address const NR_BLOCKS = 1023; block_address const NR_BLOCKS = 10237;
block_address const SUPERBLOCK = 0; block_address const SUPERBLOCK = 0;
unsigned const BLOCK_SIZE = 4096; unsigned const BLOCK_SIZE = 4096;
@ -105,4 +105,18 @@ BOOST_AUTO_TEST_CASE(test_set_count)
BOOST_CHECK_EQUAL(sm->get_count(43), 5); BOOST_CHECK_EQUAL(sm->get_count(43), 5);
} }
BOOST_AUTO_TEST_CASE(test_set_effects_nr_allocated)
{
auto sm = create_sm_disk();
for (unsigned i = 0; i < NR_BLOCKS; i++) {
sm->set_count(i, 1);
BOOST_CHECK_EQUAL(sm->get_nr_free(), NR_BLOCKS - i - 1);
}
for (unsigned i = 0; i < NR_BLOCKS; i++) {
sm->set_count(i, 0);
BOOST_CHECK_EQUAL(sm->get_nr_free(), i + 1);
}
}
//---------------------------------------------------------------- //----------------------------------------------------------------

View File

@ -18,6 +18,7 @@ namespace {
block_manager<4096>::ptr bm(new block_manager<4096>("./test.data", NR_BLOCKS)); block_manager<4096>::ptr bm(new block_manager<4096>("./test.data", NR_BLOCKS));
space_map::ptr sm(new core_map(NR_BLOCKS)); space_map::ptr sm(new core_map(NR_BLOCKS));
transaction_manager<4096>::ptr tm(new transaction_manager<4096>(bm, sm)); transaction_manager<4096>::ptr tm(new transaction_manager<4096>(bm, sm));
tm->get_sm()->inc(0);
return tm; return tm;
} }
} }
@ -37,20 +38,29 @@ BOOST_AUTO_TEST_CASE(shadowing)
auto sm = tm->get_sm(); auto sm = tm->get_sm();
sm->inc(1); sm->inc(1);
auto p = tm->shadow(1); block_address b;
auto b = p.first.get_location();
BOOST_CHECK(b != 1);
BOOST_CHECK(!p.second);
BOOST_CHECK(sm->get_count(1) == 0);
p = tm->shadow(b); {
BOOST_CHECK(p.first.get_location() == b); auto p = tm->shadow(1);
BOOST_CHECK(!p.second); b = p.first.get_location();
BOOST_CHECK(b != 1);
BOOST_CHECK(!p.second);
BOOST_CHECK(sm->get_count(1) == 0);
}
{
auto p = tm->shadow(b);
BOOST_CHECK(p.first.get_location() == b);
BOOST_CHECK(!p.second);
}
sm->inc(b); sm->inc(b);
p = tm->shadow(b);
BOOST_CHECK(p.first.get_location() != b); {
BOOST_CHECK(p.second); auto p = tm->shadow(b);
BOOST_CHECK(p.first.get_location() != b);
BOOST_CHECK(p.second);
}
} }
BOOST_AUTO_TEST_CASE(multiple_shadowing) BOOST_AUTO_TEST_CASE(multiple_shadowing)