Test space_map_transactional

This commit is contained in:
Joe Thornber 2013-01-10 12:15:50 +00:00
parent 4ea3476c97
commit 3d9f91eee2
3 changed files with 35 additions and 3 deletions

View File

@ -24,8 +24,10 @@
//----------------------------------------------------------------
namespace persistent_data {
class core_map : public space_map {
class core_map : public checked_space_map {
public:
typedef boost::shared_ptr<core_map> ptr;
core_map(block_address nr_blocks)
: counts_(nr_blocks, 0),
nr_free_(nr_blocks) {
@ -93,6 +95,20 @@ namespace persistent_data {
throw std::runtime_error("not implemented");
}
// FIXME: meaningless, but this class is only used for testing
size_t root_size() const {
return 0;
}
// FIXME: meaningless, but this class is only used for testing
virtual void copy_root(void *dest, size_t len) const {
throw std::runtime_error("not implemented");
}
checked_space_map::ptr clone() const {
return ptr(new core_map(*this));
}
private:
std::vector<ref_t> counts_;
unsigned nr_free_;

View File

@ -18,6 +18,7 @@
#include "persistent-data/space_map_disk.h"
#include "persistent-data/space_map_core.h"
#include "persistent-data/space_map_transactional.h"
#define BOOST_TEST_MODULE SpaceMapDiskTests
#include <boost/test/included/unit_test.hpp>
@ -37,7 +38,7 @@ namespace {
create_tm() {
block_manager<>::ptr bm(
new block_manager<>("./test.data", NR_BLOCKS, MAX_LOCKS, true));
space_map::ptr sm(new core_map(1024));
space_map::ptr sm(new core_map(NR_BLOCKS));
transaction_manager::ptr tm(
new transaction_manager(bm, sm));
return tm;
@ -51,6 +52,16 @@ namespace {
}
};
class sm_transactional_creator {
public:
static space_map::ptr
create() {
return create_transactional_sm(
checked_space_map::ptr(
new core_map(NR_BLOCKS)));
}
};
class sm_disk_creator {
public:
static persistent_space_map::ptr
@ -248,6 +259,11 @@ BOOST_AUTO_TEST_CASE(test_sm_core)
do_tests<sm_core_creator>(space_map_tests);
}
BOOST_AUTO_TEST_CASE(test_sm_transactional)
{
do_tests<sm_transactional_creator>(space_map_tests);
}
BOOST_AUTO_TEST_CASE(test_sm_disk)
{
do_tests<sm_disk_creator>(space_map_tests);