IteratableChunkChecksumValidatorTest.cc 4.7 KB

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