Index: dm-bht_unittest.cc |
diff --git a/dm-bht_unittest.cc b/dm-bht_unittest.cc |
index 75fe58dce66fb382efc415c350caf1bde2f3696b..ae277d3bd5f4e307a4b9128c9c4145c5b7584e8a 100644 |
--- a/dm-bht_unittest.cc |
+++ b/dm-bht_unittest.cc |
@@ -118,6 +118,20 @@ class MemoryBhtTest : public ::testing::Test { |
// bht is now dead and mbht_ is a prepared hash image |
NewBht(depth, total_blocks, digest_algorithm); |
+ |
+ // Load the tree from the pre-populated hash data |
+ for (blocks = 0; blocks < total_blocks; blocks += bht_->node_count) { |
+ EXPECT_GE(dm_bht_populate(bht_.get(), |
+ reinterpret_cast<void *>(this), |
+ blocks), |
+ DM_BHT_ENTRY_REQUESTED); |
+ // Since we're testing synchronously, a second run through should yield |
+ // READY. |
+ EXPECT_GE(dm_bht_populate(bht_.get(), |
+ reinterpret_cast<void *>(this), |
+ blocks), |
+ DM_BHT_ENTRY_READY); |
+ } |
} |
scoped_ptr<struct dm_bht> bht_; |
@@ -127,37 +141,25 @@ class MemoryBhtTest : public ::testing::Test { |
TEST_F(MemoryBhtTest, CreateThenVerifyOk) { |
static const unsigned int total_blocks = 16384; |
- SetupBht(2, total_blocks, "sha256"); |
// Set the root hash for a 0-filled image |
static const char kRootDigest[] = |
"45d65d6f9e5a962f4d80b5f1bd7a918152251c27bdad8c5f52b590c129833372"; |
- dm_bht_set_root_hexdigest(bht_.get(), |
- reinterpret_cast<const u8 *>(kRootDigest)); |
- |
// This should match what dm_bht_store_block computed earlier. |
static const char kZeroDigest[] = |
"ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7"; |
u8 digest[(sizeof(kZeroDigest) - 1) >> 1]; |
// TODO(wad) write a test for hex_to_bin and bin_to_hex |
unsigned int digest_size = strlen(kZeroDigest) >> 1; |
+ |
dm_bht_hex_to_bin(digest, |
reinterpret_cast<const u8 *>(kZeroDigest), |
digest_size); |
- // Load the tree from the pre-populated hash data |
+ SetupBht(2, total_blocks, "sha256"); |
+ dm_bht_set_root_hexdigest(bht_.get(), |
+ reinterpret_cast<const u8 *>(kRootDigest)); |
+ |
for (unsigned int blocks = 0; blocks < total_blocks; ++blocks) { |
- if ((blocks % bht_->node_count) == 0) { |
- EXPECT_GE(dm_bht_populate(bht_.get(), |
- reinterpret_cast<void *>(this), |
- blocks), |
- DM_BHT_ENTRY_REQUESTED); |
- // Since we're testing synchronously, a second run through should yield |
- // READY. |
- EXPECT_GE(dm_bht_populate(bht_.get(), |
- reinterpret_cast<void *>(this), |
- blocks), |
- DM_BHT_ENTRY_READY); |
- } |
LOG(INFO) << "verifying block: " << blocks; |
EXPECT_EQ(0, dm_bht_verify_block(bht_.get(), blocks, digest, digest_size)); |
} |
@@ -167,37 +169,25 @@ TEST_F(MemoryBhtTest, CreateThenVerifyOk) { |
TEST_F(MemoryBhtTest, CreateThenVerifyMultipleLevels) { |
static const unsigned int total_blocks = 16384; |
- SetupBht(4, total_blocks, "sha256"); |
// Set the root hash for a 0-filled image |
static const char kRootDigest[] = |
"c86619624d3456f711dbb94d4ad79a4b029f6fd3b5a4a90b155c856bf5b3409b"; |
- dm_bht_set_root_hexdigest(bht_.get(), |
- reinterpret_cast<const u8 *>(kRootDigest)); |
- |
// This should match what dm_bht_store_block computed earlier. |
static const char kZeroDigest[] = |
"ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7"; |
u8 digest[(sizeof(kZeroDigest) - 1) >> 1]; |
// TODO(wad) write a test for hex_to_bin and bin_to_hex |
unsigned int digest_size = strlen(kZeroDigest) >> 1; |
+ |
dm_bht_hex_to_bin(digest, |
reinterpret_cast<const u8 *>(kZeroDigest), |
digest_size); |
- // Load the tree from the pre-populated hash data |
- for (unsigned int blocks = 0; blocks < total_blocks; blocks++) { |
- if ((blocks % bht_->node_count) == 0) { |
- EXPECT_GE(dm_bht_populate(bht_.get(), |
- reinterpret_cast<void *>(this), |
- blocks), |
- DM_BHT_ENTRY_REQUESTED); |
- // Since we're testing synchronously, a second run through should yield |
- // READY. |
- EXPECT_GE(dm_bht_populate(bht_.get(), |
- reinterpret_cast<void *>(this), |
- blocks), |
- DM_BHT_ENTRY_READY); |
- } |
+ SetupBht(4, total_blocks, "sha256"); |
+ dm_bht_set_root_hexdigest(bht_.get(), |
+ reinterpret_cast<const u8 *>(kRootDigest)); |
+ |
+ for (unsigned int blocks = 0; blocks < total_blocks; ++blocks) { |
LOG(INFO) << "verifying block: " << blocks; |
EXPECT_EQ(0, dm_bht_verify_block(bht_.get(), blocks, digest, digest_size)); |
} |
@@ -214,21 +204,6 @@ TEST_F(MemoryBhtTest, CreateThenVerifyBad) { |
dm_bht_set_root_hexdigest(bht_.get(), |
reinterpret_cast<const u8 *>(kRootDigest)); |
- // Load the tree from the pre-populated hash data |
- for (unsigned int blocks = 0; blocks < total_blocks; blocks++) { |
- if ((blocks % bht_->node_count) == 0) { |
- EXPECT_GE(dm_bht_populate(bht_.get(), |
- reinterpret_cast<void *>(this), |
- blocks), |
- DM_BHT_ENTRY_REQUESTED); |
- // Since we're testing synchronously, a second run through should yield |
- // READY. |
- EXPECT_GE(dm_bht_populate(bht_.get(), |
- reinterpret_cast<void *>(this), |
- blocks), |
- DM_BHT_ENTRY_READY); |
- } |
- } |
// TODO(wad) add tests for partial tree validity/verification |
// Corrupt one block value |