Chromium Code Reviews| Index: dm-bht_unittest.cc |
| diff --git a/dm-bht_unittest.cc b/dm-bht_unittest.cc |
| index bf8c74c442e82418d36f4b3d1aa4c1bf6f289e6a..9d6df20a61fbefcd22e35cd98f2b998727439391 100644 |
| --- a/dm-bht_unittest.cc |
| +++ b/dm-bht_unittest.cc |
| @@ -107,9 +107,7 @@ class MemoryBhtTest : public ::testing::Test { |
| const char *digest_algorithm) { |
| NewBht(depth, total_blocks, digest_algorithm); |
| - u8 data[PAGE_SIZE]; |
| - // Store all the block hashes of blocks of 0. |
| - memset(reinterpret_cast<void *>(data), 0, sizeof(data)); |
| + u8 data[PAGE_SIZE] = { 0 }; |
| unsigned int blocks = total_blocks; |
| do { |
| EXPECT_EQ(dm_bht_store_block(bht_.get(), blocks - 1, data), 0); |
| @@ -151,16 +149,8 @@ TEST_F(MemoryBhtTest, CreateThenVerifyOk) { |
| // Set the root hash for a 0-filled image |
| static const char kRootDigest[] = |
| "45d65d6f9e5a962f4d80b5f1bd7a918152251c27bdad8c5f52b590c129833372"; |
| - // 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); |
| + // A page of all zeros |
| + static const char kZeroPage[PAGE_SIZE] = { 0 }; |
| SetupBht(2, total_blocks, "sha256"); |
| dm_bht_set_root_hexdigest(bht_.get(), |
| @@ -168,7 +158,7 @@ TEST_F(MemoryBhtTest, CreateThenVerifyOk) { |
| for (unsigned int blocks = 0; blocks < total_blocks; ++blocks) { |
| DLOG(INFO) << "verifying block: " << blocks; |
| - EXPECT_EQ(0, dm_bht_verify_block(bht_.get(), blocks, digest, digest_size)); |
| + EXPECT_EQ(0, dm_bht_verify_block(bht_.get(), blocks, kZeroPage)); |
| } |
| EXPECT_EQ(0, dm_bht_destroy(bht_.get())); |
| @@ -179,16 +169,8 @@ TEST_F(MemoryBhtTest, CreateThenVerifyMultipleLevels) { |
| // Set the root hash for a 0-filled image |
| static const char kRootDigest[] = |
| "c86619624d3456f711dbb94d4ad79a4b029f6fd3b5a4a90b155c856bf5b3409b"; |
| - // 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); |
| + // A page of all zeros |
| + static const char kZeroPage[PAGE_SIZE] = { 0 }; |
| SetupBht(4, total_blocks, "sha256"); |
| dm_bht_set_root_hexdigest(bht_.get(), |
| @@ -196,7 +178,7 @@ TEST_F(MemoryBhtTest, CreateThenVerifyMultipleLevels) { |
| for (unsigned int blocks = 0; blocks < total_blocks; ++blocks) { |
| DLOG(INFO) << "verifying block: " << blocks; |
| - EXPECT_EQ(0, dm_bht_verify_block(bht_.get(), blocks, digest, digest_size)); |
| + EXPECT_EQ(0, dm_bht_verify_block(bht_.get(), blocks, kZeroPage)); |
| } |
| EXPECT_EQ(0, dm_bht_destroy(bht_.get())); |
| @@ -207,16 +189,8 @@ TEST_F(MemoryBhtTest, CreateThenVerifyOddCount) { |
| // Set the root hash for a 0-filled image |
| static const char kRootDigest[] = |
| "c78d187c430465bd7831fe4908247b6ab5107e3a826d933b71e85aa9a932e03c"; |
| - // 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); |
| + // A page of all zeros |
| + static const char kZeroPage[PAGE_SIZE] = { 0 }; |
| SetupBht(4, total_blocks, "sha256"); |
| dm_bht_set_root_hexdigest(bht_.get(), |
| @@ -224,60 +198,29 @@ TEST_F(MemoryBhtTest, CreateThenVerifyOddCount) { |
| for (unsigned int blocks = 0; blocks < total_blocks; ++blocks) { |
| DLOG(INFO) << "verifying block: " << blocks; |
| - EXPECT_EQ(0, dm_bht_verify_block(bht_.get(), blocks, digest, digest_size)); |
| + EXPECT_EQ(0, dm_bht_verify_block(bht_.get(), blocks, kZeroPage)); |
| } |
| EXPECT_EQ(0, dm_bht_destroy(bht_.get())); |
| } |
| TEST_F(MemoryBhtTest, CreateThenVerifyBad) { |
| - static const unsigned int total_blocks = 16384; |
| + static const unsigned int total_blocks = 384; |
| 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)); |
| - |
| - // TODO(wad) add tests for partial tree validity/verification |
| - |
| - // Corrupt one block value |
| - static const unsigned int kBadBlock = 256; |
| - u8 data[PAGE_SIZE]; |
| - memset(reinterpret_cast<void *>(data), 'A', sizeof(data)); |
| - EXPECT_EQ(dm_bht_store_block(bht_.get(), kBadBlock, data), 0); |
| - |
| - // 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); |
| - |
| - // Attempt to verify both the bad block and all the neighbors. |
| - EXPECT_LT(dm_bht_verify_block(bht_.get(), kBadBlock + 1, digest, digest_size), |
| - 0); |
| - |
| - EXPECT_LT(dm_bht_verify_block(bht_.get(), kBadBlock + 2, digest, digest_size), |
| - 0); |
| - |
| - EXPECT_LT(dm_bht_verify_block(bht_.get(), kBadBlock + (bht_->node_count / 2), |
| - digest, digest_size), |
| - 0); |
| - |
| - EXPECT_LT(dm_bht_verify_block(bht_.get(), kBadBlock, digest, digest_size), 0); |
| - |
| - // Verify that the prior entry is untouched and still safe |
| - EXPECT_EQ(dm_bht_verify_block(bht_.get(), kBadBlock - 1, digest, digest_size), |
| - 0); |
| - |
| - // Same for the next entry |
| - EXPECT_EQ(dm_bht_verify_block(bht_.get(), kBadBlock + bht_->node_count, |
| - digest, digest_size), |
| - 0); |
| + // A corrupt page |
| + static const u8 kBadPage[PAGE_SIZE] = { 'A' }; |
| + |
| + EXPECT_LT(dm_bht_verify_block(bht_.get(), 0, kBadPage), 0); |
| + EXPECT_LT(dm_bht_verify_block(bht_.get(), 127, kBadPage), 0); |
| + EXPECT_LT(dm_bht_verify_block(bht_.get(), 128, kBadPage), 0); |
| + EXPECT_LT(dm_bht_verify_block(bht_.get(), 255, kBadPage), 0); |
| + EXPECT_LT(dm_bht_verify_block(bht_.get(), 256, kBadPage), 0); |
|
Will Drewry
2011/03/16 16:53:37
This test no longer matches the initial test funct
|
| + EXPECT_LT(dm_bht_verify_block(bht_.get(), 383, kBadPage), 0); |
| EXPECT_EQ(0, dm_bht_destroy(bht_.get())); |
| } |