]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
RADOS: Completion handling benchmark
authorAdam C. Emerson <aemerson@redhat.com>
Tue, 6 Aug 2019 19:30:57 +0000 (15:30 -0400)
committerAdam C. Emerson <aemerson@redhat.com>
Mon, 4 Nov 2019 20:51:38 +0000 (15:51 -0500)
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
src/test/RADOS/CMakeLists.txt
src/test/RADOS/completions.cc [new file with mode: 0644]

index 6add46d5c4f7d4ee4c9359b063ed7df88e7b249e..8a5d3da8d5e11b3acb936afa836fae59178bd67a 100644 (file)
@@ -1,2 +1,7 @@
 add_executable(ceph_test_RADOS_start_stop start_stop.cc)
-target_link_libraries(ceph_test_RADOS_start_stop global libRADOS ${unittest_libs})
+target_link_libraries(ceph_test_RADOS_start_stop
+  global libRADOS ${unittest_libs})
+
+add_executable(ceph_test_RADOS_completions completions.cc)
+target_link_libraries(ceph_test_RADOS_completions Boost::system pthread
+  ${unittest_libs})
diff --git a/src/test/RADOS/completions.cc b/src/test/RADOS/completions.cc
new file mode 100644 (file)
index 0000000..d9c0e08
--- /dev/null
@@ -0,0 +1,20 @@
+#include <cassert>
+#include <boost/asio.hpp>
+#include <boost/system/system_error.hpp>
+
+constexpr int max_completions = 10'000'000;
+int completed = 0;
+
+boost::asio::io_context c;
+
+void nested_cb() {
+  if (++completed < max_completions)
+    c.post(&nested_cb);
+}
+
+int main(void) {
+  c.post(&nested_cb);
+  c.run();
+  assert(completed == max_completions);
+  return 0;
+}