A big raft of changes to the unit-tests
This commit is contained in:
@@ -16,8 +16,8 @@
|
||||
// with thin-provisioning-tools. If not, see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
#include "transaction_manager.h"
|
||||
#include "core_map.h"
|
||||
#include "persistent-data/transaction_manager.h"
|
||||
#include "persistent-data/space_map_core.h"
|
||||
|
||||
#define BOOST_TEST_MODULE TransactionManagerTests
|
||||
#include <boost/test/included/unit_test.hpp>
|
||||
@@ -29,37 +29,47 @@ using namespace persistent_data;
|
||||
//----------------------------------------------------------------
|
||||
|
||||
namespace {
|
||||
unsigned const MAX_HELD_LOCKS = 16;
|
||||
block_address const NR_BLOCKS = 1024;
|
||||
|
||||
transaction_manager::ptr
|
||||
create_tm() {
|
||||
block_manager<>::ptr bm(new block_manager<>("./test.data", NR_BLOCKS));
|
||||
block_manager<>::ptr bm(new block_manager<>("./test.data", NR_BLOCKS, MAX_HELD_LOCKS, true));
|
||||
space_map::ptr sm(new core_map(NR_BLOCKS));
|
||||
transaction_manager::ptr tm(new transaction_manager(bm, sm));
|
||||
tm->get_sm()->inc(0);
|
||||
return tm;
|
||||
}
|
||||
|
||||
typedef block_manager<>::validator::ptr validator_ptr;
|
||||
|
||||
validator_ptr noop_validator() {
|
||||
return block_manager<>::validator::ptr(
|
||||
new block_manager<>::noop_validator);
|
||||
}
|
||||
|
||||
typedef block_manager<>::write_ref write_ref;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------
|
||||
|
||||
BOOST_AUTO_TEST_CASE(commit_succeeds)
|
||||
{
|
||||
auto tm = create_tm();
|
||||
tm->begin(0);
|
||||
transaction_manager::ptr tm = create_tm();
|
||||
tm->begin(0, block_manager<>::validator::ptr(new block_manager<>::noop_validator));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(shadowing)
|
||||
{
|
||||
auto tm = create_tm();
|
||||
auto superblock = tm->begin(0);
|
||||
transaction_manager::ptr tm = create_tm();
|
||||
block_manager<>::write_ref superblock = tm->begin(0, noop_validator());
|
||||
|
||||
auto sm = tm->get_sm();
|
||||
space_map::ptr sm = tm->get_sm();
|
||||
sm->inc(1);
|
||||
block_address b;
|
||||
|
||||
{
|
||||
auto p = tm->shadow(1);
|
||||
pair<write_ref, bool> p = tm->shadow(1, noop_validator());
|
||||
b = p.first.get_location();
|
||||
BOOST_CHECK(b != 1);
|
||||
BOOST_CHECK(!p.second);
|
||||
@@ -67,7 +77,7 @@ BOOST_AUTO_TEST_CASE(shadowing)
|
||||
}
|
||||
|
||||
{
|
||||
auto p = tm->shadow(b);
|
||||
pair<write_ref, bool> p = tm->shadow(b, noop_validator());
|
||||
BOOST_CHECK(p.first.get_location() == b);
|
||||
BOOST_CHECK(!p.second);
|
||||
}
|
||||
@@ -75,7 +85,7 @@ BOOST_AUTO_TEST_CASE(shadowing)
|
||||
sm->inc(b);
|
||||
|
||||
{
|
||||
auto p = tm->shadow(b);
|
||||
pair<write_ref, bool> p = tm->shadow(b, noop_validator());
|
||||
BOOST_CHECK(p.first.get_location() != b);
|
||||
BOOST_CHECK(p.second);
|
||||
}
|
||||
@@ -83,25 +93,25 @@ BOOST_AUTO_TEST_CASE(shadowing)
|
||||
|
||||
BOOST_AUTO_TEST_CASE(multiple_shadowing)
|
||||
{
|
||||
auto tm = create_tm();
|
||||
auto superblock = tm->begin(0);
|
||||
transaction_manager::ptr tm = create_tm();
|
||||
write_ref superblock = tm->begin(0, noop_validator());
|
||||
|
||||
auto sm = tm->get_sm();
|
||||
space_map::ptr sm = tm->get_sm();
|
||||
sm->set_count(1, 3);
|
||||
|
||||
auto p = tm->shadow(1);
|
||||
auto b = p.first.get_location();
|
||||
pair<write_ref, bool> p = tm->shadow(1, noop_validator());
|
||||
block_address b = p.first.get_location();
|
||||
BOOST_CHECK(b != 1);
|
||||
BOOST_CHECK(p.second);
|
||||
|
||||
p = tm->shadow(1);
|
||||
auto b2 = p.first.get_location();
|
||||
p = tm->shadow(1, noop_validator());
|
||||
block_address b2 = p.first.get_location();
|
||||
BOOST_CHECK(b2 != 1);
|
||||
BOOST_CHECK(b2 != b);
|
||||
BOOST_CHECK(p.second);
|
||||
|
||||
p = tm->shadow(1);
|
||||
auto b3 = p.first.get_location();
|
||||
p = tm->shadow(1, noop_validator());
|
||||
block_address b3 = p.first.get_location();
|
||||
BOOST_CHECK(b3 != b2);
|
||||
BOOST_CHECK(b3 != b);
|
||||
BOOST_CHECK(b3 != 1);
|
||||
@@ -110,8 +120,8 @@ BOOST_AUTO_TEST_CASE(multiple_shadowing)
|
||||
|
||||
BOOST_AUTO_TEST_CASE(shadow_free_block_fails)
|
||||
{
|
||||
auto tm = create_tm();
|
||||
auto superblock = tm->begin(0);
|
||||
BOOST_CHECK_THROW(tm->shadow(1), runtime_error);
|
||||
transaction_manager::ptr tm = create_tm();
|
||||
write_ref superblock = tm->begin(0, noop_validator());
|
||||
BOOST_CHECK_THROW(tm->shadow(1, noop_validator()), runtime_error);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user