ChunkChecksumValidatorTest.cc 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. #include "ChunkChecksumValidator.h"
  2. #include "DefaultDiskWriter.h"
  3. #include <cppunit/extensions/HelperMacros.h>
  4. using namespace std;
  5. class ChunkChecksumValidatorTest:public CppUnit::TestFixture {
  6. CPPUNIT_TEST_SUITE(ChunkChecksumValidatorTest);
  7. CPPUNIT_TEST(testValidate);
  8. CPPUNIT_TEST(testValidate2);
  9. CPPUNIT_TEST(testValidate3);
  10. CPPUNIT_TEST(testValidate4);
  11. CPPUNIT_TEST_SUITE_END();
  12. private:
  13. static const char* csArray[];// = { "29b0e7878271645fffb7eec7db4a7473a1c00bc1",
  14. // "4df75a661cb7eb2733d9cdaa7f772eae3a4e2976",
  15. // "0a4ea2f7dd7c52ddf2099a444ab2184b4d341bdb" };
  16. public:
  17. void setUp() {
  18. }
  19. ChunkChecksumValidatorHandle
  20. createChunkChecksumValidator(const string& filename, BitfieldMan* bitfield, const ChunkChecksumHandle& chunkChecksum)
  21. {
  22. IteratableChunkChecksumValidatorHandle iv = new IteratableChunkChecksumValidator();
  23. DefaultDiskWriterHandle dw = new DefaultDiskWriter();
  24. dw->openExistingFile(filename);
  25. iv->setDiskWriter(dw);
  26. iv->setBitfield(bitfield);
  27. iv->setChunkChecksum(chunkChecksum);
  28. return new ChunkChecksumValidator(iv);
  29. }
  30. void testValidate();
  31. void testValidate2();
  32. void testValidate3();
  33. void testValidate4();
  34. };
  35. CPPUNIT_TEST_SUITE_REGISTRATION( ChunkChecksumValidatorTest );
  36. const char* ChunkChecksumValidatorTest::csArray[] =
  37. { "29b0e7878271645fffb7eec7db4a7473a1c00bc1",
  38. "4df75a661cb7eb2733d9cdaa7f772eae3a4e2976",
  39. "0a4ea2f7dd7c52ddf2099a444ab2184b4d341bdb" };
  40. void ChunkChecksumValidatorTest::testValidate() {
  41. BitfieldMan bitfieldMan(100, 250);
  42. bitfieldMan.setAllBit();
  43. Strings checksums(&csArray[0], &csArray[3]);
  44. ChunkChecksumValidatorHandle validator =
  45. createChunkChecksumValidator("chunkChecksumTestFile250.txt",
  46. &bitfieldMan, new ChunkChecksum("sha1",
  47. checksums,
  48. 100));
  49. validator->validate();
  50. CPPUNIT_ASSERT(bitfieldMan.isAllBitSet());
  51. checksums[1] = "ffffffffffffffffffffffffffffffffffffffff";
  52. validator =
  53. createChunkChecksumValidator("chunkChecksumTestFile250.txt",
  54. &bitfieldMan, new ChunkChecksum("sha1",
  55. checksums,
  56. 100));
  57. validator->validate();
  58. CPPUNIT_ASSERT(bitfieldMan.isBitSet(0));
  59. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(1));
  60. CPPUNIT_ASSERT(bitfieldMan.isBitSet(2));
  61. }
  62. void ChunkChecksumValidatorTest::testValidate2() {
  63. BitfieldMan bitfieldMan(50, 250);
  64. bitfieldMan.setAllBit();
  65. Strings checksums(&csArray[0], &csArray[3]);
  66. ChunkChecksumValidatorHandle validator =
  67. createChunkChecksumValidator("chunkChecksumTestFile250.txt",
  68. &bitfieldMan, new ChunkChecksum("sha1",
  69. checksums,
  70. 100));
  71. validator->validate();
  72. CPPUNIT_ASSERT(bitfieldMan.isAllBitSet());
  73. checksums[1] = "ffffffffffffffffffffffffffffffffffffffff";
  74. validator =
  75. createChunkChecksumValidator("chunkChecksumTestFile250.txt",
  76. &bitfieldMan, new ChunkChecksum("sha1",
  77. checksums,
  78. 100));
  79. validator->validate();
  80. CPPUNIT_ASSERT(bitfieldMan.isBitSet(0));
  81. CPPUNIT_ASSERT(bitfieldMan.isBitSet(1));
  82. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(2));
  83. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(3));
  84. CPPUNIT_ASSERT(bitfieldMan.isBitSet(4));
  85. }
  86. void ChunkChecksumValidatorTest::testValidate3() {
  87. BitfieldMan bitfieldMan(50, 250);
  88. bitfieldMan.setAllBit();
  89. Strings checksums;
  90. checksums.push_back("898a81b8e0181280ae2ee1b81e269196d91e869a");
  91. ChunkChecksumValidatorHandle validator =
  92. createChunkChecksumValidator("chunkChecksumTestFile250.txt",
  93. &bitfieldMan, new ChunkChecksum("sha1",
  94. checksums,
  95. 250));
  96. validator->validate();
  97. CPPUNIT_ASSERT(bitfieldMan.isAllBitSet());
  98. checksums[0] = "ffffffffffffffffffffffffffffffffffffffff";
  99. validator =
  100. createChunkChecksumValidator("chunkChecksumTestFile250.txt",
  101. &bitfieldMan, new ChunkChecksum("sha1",
  102. checksums,
  103. 250));
  104. validator->validate();
  105. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(0));
  106. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(1));
  107. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(2));
  108. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(3));
  109. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(4));
  110. }
  111. void ChunkChecksumValidatorTest::testValidate4() {
  112. BitfieldMan bitfieldMan(70, 250);
  113. bitfieldMan.setAllBit();
  114. Strings checksums(&csArray[0], &csArray[3]);
  115. ChunkChecksumValidatorHandle validator =
  116. createChunkChecksumValidator("chunkChecksumTestFile250.txt",
  117. &bitfieldMan, new ChunkChecksum("sha1",
  118. checksums,
  119. 100));
  120. validator->validate();
  121. CPPUNIT_ASSERT(bitfieldMan.isAllBitSet());
  122. checksums[1] = "ffffffffffffffffffffffffffffffffffffffff";
  123. validator =
  124. createChunkChecksumValidator("chunkChecksumTestFile250.txt",
  125. &bitfieldMan, new ChunkChecksum("sha1",
  126. checksums,
  127. 100));
  128. validator->validate();
  129. CPPUNIT_ASSERT(bitfieldMan.isBitSet(0));
  130. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(1));
  131. CPPUNIT_ASSERT(!bitfieldMan.isBitSet(2));
  132. CPPUNIT_ASSERT(bitfieldMan.isBitSet(3));
  133. }