]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
unittest_bluestore_types: run csum tests on all algorithms
authorSage Weil <sage@redhat.com>
Thu, 19 May 2016 11:40:33 +0000 (07:40 -0400)
committerSage Weil <sage@redhat.com>
Wed, 1 Jun 2016 15:38:51 +0000 (11:38 -0400)
Signed-off-by: Sage Weil <sage@redhat.com>
src/os/bluestore/bluestore_types.h
src/test/objectstore/test_bluestore_types.cc

index c39dd4255653d0bb7c3d730f178ff83139a07cc9..77648fbdd563ee4f0da9f198f95814b480b691cc 100644 (file)
@@ -215,10 +215,11 @@ struct bluestore_blob_t {
 
   enum CSumType {
     CSUM_NONE = 0,
-    CSUM_XXHASH32 = 1,
-    CSUM_XXHASH64 = 2,
-    CSUM_CRC32C = 3,
-    CSUM_CRC16 = 4,
+    CSUM_CRC32C = 1,
+    CSUM_XXHASH32 = 2,
+    CSUM_XXHASH64 = 3,
+    CSUM_MAX,
+    CSUM_CRC16,  // ** not yet implemented **
   };
   static const char *get_csum_type_string(unsigned t) {
     switch (t) {
index bfe24b5abc9449a0ecb8c33c5e8ab730425e13b6..156d5eca6aa1ca960b6678a5a730eb7e1bb7d458 100644 (file)
@@ -191,42 +191,51 @@ TEST(bluestore_extent_ref_map_t, intersects)
 TEST(bluestore_blob_t, calc_csum)
 {
   bufferlist bl;
-  bl.append("asdfqwerzxcv");
+  bl.append("asdfghjkqwertyuizxcvbnm,");
   bufferlist bl2;
-  bl2.append("xxxxyyyyzzzz");
-  bluestore_blob_t b;
-  ASSERT_EQ(-1, b.verify_csum(0, bl));
-
-  b.init_csum(bluestore_blob_t::CSUM_CRC32C, 2, 12);
-  b.calc_csum(0, bl);
-  ASSERT_EQ(-1, b.verify_csum(0, bl));
-  ASSERT_EQ(0, b.verify_csum(0, bl2));
-
+  bl2.append("xxxxXXXXyyyyYYYYzzzzZZZZ");
   bufferlist f;
-  f.substr_of(bl, 0, 4);
-  ASSERT_EQ(-1, b.verify_csum(0, f));
-  ASSERT_EQ(4, b.verify_csum(4, f));
-  ASSERT_EQ(8, b.verify_csum(8, f));
-
+  f.substr_of(bl, 0, 8);
   bufferlist m;
-  m.substr_of(bl, 4, 4);
-  ASSERT_EQ(0, b.verify_csum(0, m));
-  ASSERT_EQ(-1, b.verify_csum(4, m));
-  ASSERT_EQ(8, b.verify_csum(8, m));
-
+  m.substr_of(bl, 8, 8);
   bufferlist e;
-  e.substr_of(bl, 8, 4);
-  ASSERT_EQ(0, b.verify_csum(0, e));
-  ASSERT_EQ(4, b.verify_csum(4, e));
-  ASSERT_EQ(-1, b.verify_csum(8, e));
-
+  e.substr_of(bl, 16, 8);
   bufferlist n;
-  n.append("xxxx");
-  b.calc_csum(4, n);
-  ASSERT_EQ(-1, b.verify_csum(0, f));
-  ASSERT_EQ(-1, b.verify_csum(4, n));
-  ASSERT_EQ(-1, b.verify_csum(8, e));
-  ASSERT_EQ(4, b.verify_csum(0, bl));
+  n.append("12345678");
+
+  for (unsigned csum_type = 1;
+       csum_type < bluestore_blob_t::CSUM_MAX;
+       ++csum_type) {
+    cout << "csum_type " << bluestore_blob_t::get_csum_type_string(csum_type)
+        << std::endl;
+
+    bluestore_blob_t b;
+    ASSERT_EQ(-1, b.verify_csum(0, bl));
+
+    b.init_csum(csum_type, 3, 24);
+    cout << "  value size " << b.get_csum_value_size() << std::endl;
+    b.calc_csum(0, bl);
+    ASSERT_EQ(-1, b.verify_csum(0, bl));
+    ASSERT_EQ(0, b.verify_csum(0, bl2));
+
+    ASSERT_EQ(-1, b.verify_csum(0, f));
+    ASSERT_EQ(8, b.verify_csum(8, f));
+    ASSERT_EQ(16, b.verify_csum(16, f));
+
+    ASSERT_EQ(0, b.verify_csum(0, m));
+    ASSERT_EQ(-1, b.verify_csum(8, m));
+    ASSERT_EQ(16, b.verify_csum(16, m));
+
+    ASSERT_EQ(0, b.verify_csum(0, e));
+    ASSERT_EQ(8, b.verify_csum(8, e));
+    ASSERT_EQ(-1, b.verify_csum(16, e));
+
+    b.calc_csum(8, n);
+    ASSERT_EQ(-1, b.verify_csum(0, f));
+    ASSERT_EQ(-1, b.verify_csum(8, n));
+    ASSERT_EQ(-1, b.verify_csum(16, e));
+    ASSERT_EQ(8, b.verify_csum(0, bl));
+  }
 }
 
 TEST(bluestore_onode_t, find_lextent)