]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
test/crimson/test_crimson_coroutine: add test_coroutine_loops
authorMatan Breizman <mbreizma@redhat.com>
Sun, 2 Feb 2025 15:06:21 +0000 (15:06 +0000)
committerMatan Breizman <mbreizma@redhat.com>
Mon, 10 Mar 2025 12:48:11 +0000 (12:48 +0000)
Signed-off-by: Matan Breizman <mbreizma@redhat.com>
src/test/crimson/test_crimson_coroutine.cc

index 2b19ca07d8e0e4be17ce93a7320734a4af84e210..86743b374dcdced8bcd18fa589d5072bb1b925e1 100644 (file)
@@ -5,6 +5,7 @@
 #include <numeric>
 
 #include "seastar/core/sleep.hh"
+#include "seastar/core/loop.hh"
 
 #include "crimson/common/coroutine.h"
 #include "crimson/common/errorator.h"
@@ -103,6 +104,28 @@ TEST_F(coroutine_test_t, test_coroutine)
   });
 }
 
+TEST_F(coroutine_test_t, test_coroutine_loops)
+{
+  run_scl([]() -> seastar::future<> {
+    int CHECK = 0;
+    std::vector<int> v = {1,2,3};
+    co_await seastar::parallel_for_each(v,
+      [&CHECK] (auto i) -> seastar::future<> {
+      CHECK++;
+      co_return;
+    });
+    EXPECT_EQ(CHECK, v.size());
+
+    co_await seastar::do_until(
+      [&CHECK] { return CHECK == 0; },
+      [&CHECK] () -> seastar::future<> {
+      CHECK--;
+      co_return;
+    });
+    EXPECT_EQ(CHECK, 0);
+  });
+}
+
 TEST_F(coroutine_test_t, test_ertr_coroutine_basic)
 {
   run_ertr_scl([]() -> ertr::future<> {