]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/seastar/tests/unit/foreign_ptr_test.cc
import 15.2.0 Octopus source
[ceph.git] / ceph / src / seastar / tests / unit / foreign_ptr_test.cc
index 5ae2abfc13809c51f269b3b14ffc96916de06499..ee28c7d1e92831b480ab5b47779462e5657c219e 100644 (file)
@@ -25,6 +25,7 @@
 #include <seastar/core/shared_ptr.hh>
 #include <seastar/core/thread.hh>
 #include <seastar/core/sleep.hh>
+#include <iostream>
 
 using namespace seastar;
 
@@ -108,3 +109,24 @@ SEASTAR_TEST_CASE(foreign_ptr_cpu_test) {
         return seastar::sleep(100ms);
     });
 }
+
+SEASTAR_TEST_CASE(foreign_ptr_move_assignment_test) {
+    if (smp::count == 1) {
+        std::cerr << "Skipping multi-cpu foreign_ptr tests. Run with --smp=2 to test multi-cpu delete and reset.";
+        return make_ready_future<>();
+    }
+
+    using namespace std::chrono_literals;
+
+    return seastar::async([] {
+        auto p = smp::submit_to(1, [] {
+            return make_foreign(std::make_unique<dummy>());
+        }).get0();
+
+        p = foreign_ptr<std::unique_ptr<dummy>>();
+    }).then([] {
+        // Let ~foreign_ptr() take its course. RIP dummy.
+        return seastar::sleep(100ms);
+    });
+}
+