Start device_checker
This commit is contained in:
parent
c0b14ce280
commit
1a8b1b29e8
@ -48,6 +48,7 @@ SOURCE=\
|
|||||||
\
|
\
|
||||||
cache/metadata_disk_structures.cc \
|
cache/metadata_disk_structures.cc \
|
||||||
\
|
\
|
||||||
|
thin-provisioning/device_checker.cc \
|
||||||
thin-provisioning/file_utils.cc \
|
thin-provisioning/file_utils.cc \
|
||||||
thin-provisioning/human_readable_format.cc \
|
thin-provisioning/human_readable_format.cc \
|
||||||
thin-provisioning/metadata.cc \
|
thin-provisioning/metadata.cc \
|
||||||
@ -55,10 +56,11 @@ SOURCE=\
|
|||||||
thin-provisioning/metadata_disk_structures.cc \
|
thin-provisioning/metadata_disk_structures.cc \
|
||||||
thin-provisioning/metadata_dumper.cc \
|
thin-provisioning/metadata_dumper.cc \
|
||||||
thin-provisioning/restore_emitter.cc \
|
thin-provisioning/restore_emitter.cc \
|
||||||
thin-provisioning/superblock_validator.cc \
|
|
||||||
thin-provisioning/superblock_checker.cc \
|
thin-provisioning/superblock_checker.cc \
|
||||||
|
thin-provisioning/superblock_validator.cc \
|
||||||
thin-provisioning/thin_pool.cc \
|
thin-provisioning/thin_pool.cc \
|
||||||
thin-provisioning/xml_format.cc
|
thin-provisioning/xml_format.cc
|
||||||
|
|
||||||
PDATA_OBJECTS=$(subst .cc,.o,$(SOURCE))
|
PDATA_OBJECTS=$(subst .cc,.o,$(SOURCE))
|
||||||
|
|
||||||
PROGRAM_SOURCE=\
|
PROGRAM_SOURCE=\
|
||||||
|
19
thin-provisioning/device_checker.cc
Normal file
19
thin-provisioning/device_checker.cc
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#include "thin-provisioning/device_checker.h"
|
||||||
|
|
||||||
|
using namespace thin_provisioning;
|
||||||
|
|
||||||
|
//----------------------------------------------------------------
|
||||||
|
|
||||||
|
device_checker::device_checker(block_manager::ptr bm)
|
||||||
|
: bm_(bm)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
damage_list_ptr
|
||||||
|
device_checker::check()
|
||||||
|
{
|
||||||
|
// FIXME: finish.
|
||||||
|
return damage_list_ptr(new damage_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------
|
22
thin-provisioning/device_checker.h
Normal file
22
thin-provisioning/device_checker.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#ifndef THIN_DEVICE_CHECKER_H
|
||||||
|
#define THIN_DEVICE_CHECKER_H
|
||||||
|
|
||||||
|
#include "thin-provisioning/metadata_checker.h"
|
||||||
|
|
||||||
|
//----------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace thin_provisioning {
|
||||||
|
class device_checker : public checker {
|
||||||
|
public:
|
||||||
|
device_checker(block_manager::ptr bm);
|
||||||
|
damage_list_ptr check();
|
||||||
|
|
||||||
|
private:
|
||||||
|
block_manager::ptr bm_;
|
||||||
|
damage_list_ptr damage_;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------
|
||||||
|
|
||||||
|
#endif
|
@ -153,6 +153,7 @@ namespace thin_provisioning {
|
|||||||
|
|
||||||
class checker {
|
class checker {
|
||||||
public:
|
public:
|
||||||
|
typedef persistent_data::block_manager<> block_manager;
|
||||||
typedef boost::shared_ptr<checker> ptr;
|
typedef boost::shared_ptr<checker> ptr;
|
||||||
|
|
||||||
virtual ~checker() {};
|
virtual ~checker() {};
|
||||||
|
@ -8,12 +8,11 @@
|
|||||||
namespace thin_provisioning {
|
namespace thin_provisioning {
|
||||||
class superblock_checker : public checker {
|
class superblock_checker : public checker {
|
||||||
public:
|
public:
|
||||||
typedef persistent_data::block_manager<> block_manager;
|
|
||||||
|
|
||||||
superblock_checker(block_manager::ptr bm);
|
superblock_checker(block_manager::ptr bm);
|
||||||
boost::shared_ptr<damage_list> check();
|
damage_list_ptr check();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// FIXME: surely we can push these down to the base class?
|
||||||
block_manager::ptr bm_;
|
block_manager::ptr bm_;
|
||||||
damage_list_ptr damage;
|
damage_list_ptr damage;
|
||||||
};
|
};
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include "test_utils.h"
|
#include "test_utils.h"
|
||||||
|
|
||||||
#include "persistent-data/block.h"
|
#include "persistent-data/block.h"
|
||||||
|
#include "thin-provisioning/device_checker.h"
|
||||||
#include "thin-provisioning/restore_emitter.h"
|
#include "thin-provisioning/restore_emitter.h"
|
||||||
#include "thin-provisioning/superblock_checker.h"
|
#include "thin-provisioning/superblock_checker.h"
|
||||||
|
|
||||||
@ -110,21 +111,34 @@ namespace {
|
|||||||
block_manager<>::ptr bm_;
|
block_manager<>::ptr bm_;
|
||||||
};
|
};
|
||||||
|
|
||||||
class SuperBlockCheckerTests : public Test {
|
//--------------------------------
|
||||||
|
|
||||||
|
class MetadataCheckerTests : public Test {
|
||||||
public:
|
public:
|
||||||
SuperBlockCheckerTests()
|
MetadataCheckerTests()
|
||||||
: bm_(create_bm<BLOCK_SIZE>()) {
|
: bm_(create_bm<BLOCK_SIZE>()) {
|
||||||
|
|
||||||
metadata_builder builder(bm_);
|
metadata_builder builder(bm_);
|
||||||
builder.build();
|
builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
with_temp_directory dir_;
|
||||||
|
block_manager<>::ptr bm_;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class SuperBlockCheckerTests : public MetadataCheckerTests {
|
||||||
|
public:
|
||||||
void corrupt_superblock() {
|
void corrupt_superblock() {
|
||||||
zero_block(bm_, SUPERBLOCK_LOCATION);
|
zero_block(bm_, SUPERBLOCK_LOCATION);
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//--------------------------------
|
||||||
|
|
||||||
|
class DevicesCheckerTests : public MetadataCheckerTests {
|
||||||
|
public:
|
||||||
|
|
||||||
with_temp_directory dir_;
|
|
||||||
block_manager<>::ptr bm_;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,3 +169,10 @@ TEST_F(SuperBlockCheckerTests, fails_with_bad_checksum)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------
|
//----------------------------------------------------------------
|
||||||
|
|
||||||
|
TEST_F(DevicesCheckerTests, create_require_a_block_manager)
|
||||||
|
{
|
||||||
|
device_checker dc(bm_);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user