]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
unittest_bluestore_types: add random put_ref test case
authorSage Weil <sage@redhat.com>
Wed, 19 Oct 2016 18:13:20 +0000 (14:13 -0400)
committerSage Weil <sage@redhat.com>
Wed, 19 Oct 2016 18:13:20 +0000 (14:13 -0400)
This appeared to fail under load, but works fine here.
:/

Signed-off-by: Sage Weil <sage@redhat.com>
src/test/objectstore/test_bluestore_types.cc

index de1abebb8791eb5dce60032a26c79d40dc541a52..66dd499fbf78317a6f26acbada7da96288ce9f7d 100644 (file)
@@ -692,6 +692,27 @@ TEST(Blob, put_ref)
     ASSERT_TRUE(b.extents[0].is_valid());
     ASSERT_EQ(mas*4, b.extents[0].length);
   }
+  {
+    BlueStore::Blob B;
+    B.shared_blob = new BlueStore::SharedBlob(-1, string(), nullptr);
+    B.shared_blob->get();  // hack to avoid dtor from running
+    bluestore_blob_t& b = B.dirty_blob();
+    B.ref_map.get(0x0, 0x3800);
+    B.ref_map.get(0x17c00, 0x6400);
+    b.extents.push_back(bluestore_pextent_t(0x40101000, 0x4000));
+    b.extents.push_back(bluestore_pextent_t(bluestore_pextent_t::INVALID_OFFSET,
+                                           0x13000));
+    b.extents.push_back(bluestore_pextent_t(0x40118000, 0x7000));
+    b.set_flag(bluestore_blob_t::FLAG_SHARED);
+    b.init_csum(bluestore_blob_t::CSUM_CRC32C, 12, 0x1e000);
+    b.sbid = 0xcf92e;
+
+    cout << "before: " << B << std::endl;
+    vector<bluestore_pextent_t> r;
+    B.put_ref(0x1800, 0x2000, 0x1000, &r);
+    cout << "after: " << B << std::endl;
+    cout << "r " << r << std::endl;
+  }
 }
 
 TEST(bluestore_blob_t, can_split)