diff options
Diffstat (limited to 'vespalib/src/tests/crc/crc_test.cpp')
-rw-r--r-- | vespalib/src/tests/crc/crc_test.cpp | 47 |
1 files changed, 16 insertions, 31 deletions
diff --git a/vespalib/src/tests/crc/crc_test.cpp b/vespalib/src/tests/crc/crc_test.cpp index 8afeed487ee..28e904b5056 100644 --- a/vespalib/src/tests/crc/crc_test.cpp +++ b/vespalib/src/tests/crc/crc_test.cpp @@ -2,7 +2,6 @@ #include <vespa/vespalib/testkit/testapp.h> #include <vespa/vespalib/util/crc.h> -#include <boost/crc.hpp> #include <vector> using namespace vespalib; @@ -12,7 +11,7 @@ class Test : public TestApp public: int Main() override; void testCorrectNess(); - void testBenchmark(bool our, size_t bufSz, size_t numRep); + void testBenchmark(size_t bufSz, size_t numRep); }; int @@ -20,57 +19,43 @@ Test::Main() { TEST_INIT("crc_test"); testCorrectNess(); - if (_argc >= 2) { - testBenchmark(false, 1024, 1000*1000); - } else { - testBenchmark(true, 1024, 1000*1000); - } + testBenchmark(1024, 1000*1000); TEST_DONE(); } -void Test::testCorrectNess() +void +Test::testCorrectNess() { const char *a[7] = { "", "a", "ab", "abc", "abcd", "abcde", "doc:crawler:http://www.ntnu.no/" }; + uint32_t expected[7] = {0, 0xe8b7be43, 0x9e83486d, 0x352441c2, 0xed82cd11, 0x8587d865, 0x86287fc5}; for (size_t i(0); i < sizeof(a)/sizeof(a[0]); i++) { uint32_t vespaCrc32 = crc_32_type::crc(a[i], strlen(a[i])); - boost::crc_32_type calculator; - calculator.process_bytes(a[i], strlen(a[i])); - EXPECT_EQUAL(vespaCrc32, calculator.checksum()); + EXPECT_EQUAL(vespaCrc32, expected[i]); vespalib::crc_32_type calculator2; calculator2.process_bytes(a[i], strlen(a[i])); EXPECT_EQUAL(vespaCrc32, calculator2.checksum()); - EXPECT_EQUAL(calculator.checksum(), calculator2.checksum()); } - vespalib::crc_32_type calculator2; - boost::crc_32_type calculator; + vespalib::crc_32_type calculator; + uint32_t accum_expected[7] = {0, 0xe8b7be43, 0x690e2297, 0x8d7284f9, 0x7ed0c389, 0x61bc2a26, 0x1816e339}; for (size_t i(0); i < sizeof(a)/sizeof(a[0]); i++) { calculator.process_bytes(a[i], strlen(a[i])); - calculator2.process_bytes(a[i], strlen(a[i])); - EXPECT_EQUAL(calculator.checksum(), calculator2.checksum()); + EXPECT_EQUAL(calculator.checksum(), accum_expected[i]); } - EXPECT_EQUAL(calculator.checksum(), calculator2.checksum()); } -void Test::testBenchmark(bool our, size_t bufSz, size_t numRep) +void +Test::testBenchmark(size_t bufSz, size_t numRep) { std::vector<char> a(numRep+bufSz); for(size_t i(0), m(a.size()); i < m; i++) { a[i] = i&0xff; } uint32_t sum(0); - if (our) { - for (size_t i(0); i < (numRep); i++) { - //sum ^= crc_32_type::crc(&a[i], bufSz); - vespalib::crc_32_type calculator; - calculator.process_bytes(&a[i], bufSz); - sum ^=calculator.checksum(); - } - } else { - for (size_t i(0); i < (numRep); i++) { - boost::crc_32_type calculator; - calculator.process_bytes(&a[i], bufSz); - sum ^=calculator.checksum(); - } + for (size_t i(0); i < (numRep); i++) { + //sum ^= crc_32_type::crc(&a[i], bufSz); + vespalib::crc_32_type calculator; + calculator.process_bytes(&a[i], bufSz); + sum ^=calculator.checksum(); } printf("sum = %x\n", sum); } |