]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
test/crimson/.../test_object_data_handler: add multiple clone/overwrite test case
authorSamuel Just <sjust@redhat.com>
Mon, 8 Dec 2025 19:22:48 +0000 (11:22 -0800)
committerSamuel Just <sjust@redhat.com>
Mon, 5 Jan 2026 21:14:59 +0000 (13:14 -0800)
Signed-off-by: Samuel Just <sjust@redhat.com>
src/test/crimson/seastore/test_object_data_handler.cc

index 5a4cda0cea510d5b54cc36bc1d5426b588360174..04a8a88dcc3adedbe0eb4d3f697ca025a61473e4 100644 (file)
@@ -976,6 +976,47 @@ TEST_P(object_data_handler_test_t, parallel_partial_read) {
   });
 }
 
+TEST_P(object_data_handler_test_t, basic_clone_write_read) {
+  run_async([this] {
+    {
+      auto t = create_mutate_transaction();
+      write(*t, 0, 4<<10, 'a');
+      submit_transaction(std::move(t));
+    }
+    std::vector<std::vector<std::pair<uint64_t, uint64_t>>> writes {
+      {{551263, 793594}},
+      {{568070, 468843}},
+      {{584877, 544092}},
+    };
+    {
+      auto t = create_mutate_transaction();
+      write(*t, 0, 4<<10, 'a');
+      submit_transaction(std::move(t));
+    }
+    unsigned next_snap = 0;
+    for (auto &snap_writes: writes) {
+      auto snap = next_snap++;
+      {
+       auto t = create_mutate_transaction();
+       clone(*t, snap);
+       submit_transaction(std::move(t));
+      }
+      for (auto &[off, len]: snap_writes) {
+       auto t = create_mutate_transaction();
+       write(*t, off, len, 'a' + snap);
+       submit_transaction(std::move(t));
+      }
+    }
+    {
+      auto t = create_mutate_transaction();
+      read(*t, 0, 4<<20);
+      for (unsigned i = 0; i < next_snap; ++i) {
+       read(*t, 0, 4<<20, i);
+      }
+    }
+  });
+}
+
 INSTANTIATE_TEST_SUITE_P(
   object_data_handler_test,
   object_data_handler_test_t,