]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
test/crimson/seastore: add fake paddr for better test debugging
authorSamuel Just <sjust@redhat.com>
Thu, 6 Aug 2020 04:30:34 +0000 (21:30 -0700)
committerSamuel Just <sjust@redhat.com>
Thu, 6 Aug 2020 04:30:49 +0000 (21:30 -0700)
Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/os/seastore/seastore_types.cc
src/crimson/os/seastore/seastore_types.h
src/test/crimson/seastore/test_btree_lba_manager.cc

index b2ce3a766962ce416269d627ac136846df9c9a38..40c54455fd0ee949799751c836c317317d198b40 100644 (file)
@@ -13,6 +13,8 @@ std::ostream &segment_to_stream(std::ostream &out, const segment_id_t &t)
     return out << "BLOCK_REL_SEG";
   else if (t == RECORD_REL_SEG_ID)
     return out << "RECORD_REL_SEG";
+  else if (t == FAKE_SEG_ID)
+    return out << "FAKE_SEG";
   else
     return out << t;
 }
index 90b753695d617740b2082f5b77fb1d63f2d8ec6c..70f41ab20a5e6a38816c47a0a706cd45a42cbfa5 100644 (file)
@@ -28,6 +28,10 @@ constexpr segment_id_t RECORD_REL_SEG_ID =
 constexpr segment_id_t BLOCK_REL_SEG_ID =
   std::numeric_limits<segment_id_t>::max() - 3;
 
+// for tests which generate fake paddrs
+constexpr segment_id_t FAKE_SEG_ID =
+  std::numeric_limits<segment_id_t>::max() - 4;
+
 std::ostream &segment_to_stream(std::ostream &, const segment_id_t &t);
 
 // Offset within a segment on disk, see SegmentManager
@@ -151,6 +155,9 @@ constexpr paddr_t make_record_relative_paddr(segment_off_t off) {
 constexpr paddr_t make_block_relative_paddr(segment_off_t off) {
   return paddr_t{BLOCK_REL_SEG_ID, off};
 }
+constexpr paddr_t make_fake_paddr(segment_off_t off) {
+  return paddr_t{FAKE_SEG_ID, off};
+}
 
 struct paddr_le_t {
   ceph_le32 segment = init_le32(NULL_SEG_ID);
index 264606975b13e1afd5d255af88588e8e863e5f17..f7aa4584603f50666d7308b8bd1a4ba98c5c9d28 100644 (file)
@@ -147,6 +147,12 @@ struct btree_lba_manager_test :
     );
   }
 
+  segment_off_t next_off = 0;
+  paddr_t get_paddr() {
+    next_off += block_size;
+    return make_fake_paddr(next_off);
+  }
+
   auto alloc_mapping(
     test_transaction_t &t,
     laddr_t hint,
@@ -258,13 +264,12 @@ TEST_F(btree_lba_manager_test, basic)
 {
   run_async([this] {
     laddr_t laddr = 0x12345678 * block_size;
-    paddr_t paddr = { 1, static_cast<segment_off_t>(block_size * 10) };
     {
       // write initial mapping
       auto t = create_transaction();
       check_mappings(t);  // check in progress transaction sees mapping
       check_mappings();   // check concurrent does not
-      auto ret = alloc_mapping(t, laddr, block_size, paddr);
+      auto ret = alloc_mapping(t, laddr, block_size, get_paddr());
       submit_test_transaction(std::move(t));
     }
     check_mappings();     // check new transaction post commit sees it
@@ -278,7 +283,7 @@ TEST_F(btree_lba_manager_test, force_split)
       auto t = create_transaction();
       logger().debug("opened transaction");
       for (unsigned j = 0; j < 5; ++j) {
-       auto ret = alloc_mapping(t, 0, block_size, P_ADDR_MIN);
+       auto ret = alloc_mapping(t, 0, block_size, get_paddr());
        if ((i % 10 == 0) && (j == 3)) {
          check_mappings(t);
          check_mappings();
@@ -298,7 +303,7 @@ TEST_F(btree_lba_manager_test, force_split_merge)
       auto t = create_transaction();
       logger().debug("opened transaction");
       for (unsigned j = 0; j < 5; ++j) {
-       auto ret = alloc_mapping(t, 0, block_size, P_ADDR_MIN);
+       auto ret = alloc_mapping(t, 0, block_size, get_paddr());
        // just to speed things up a bit
        if ((i % 100 == 0) && (j == 3)) {
          check_mappings(t);