#include "crimson/common/interruptible_future.h"
#include "crimson/common/log.h"
+using namespace crimson;
+
class test_interruption : public std::exception
{};
TEST_F(seastar_test_suite_t, basic)
{
using interruptor =
- ::crimson::interruptible::interruptor<TestInterruptCondition>;
- run_async([this] {
+ interruptible::interruptor<TestInterruptCondition>;
+ run_async([] {
interruptor::with_interruption(
[] {
- ceph_assert(::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
+ ceph_assert(interruptible::interrupt_cond<TestInterruptCondition>);
return interruptor::make_interruptible(seastar::now())
.then_interruptible([] {
- ceph_assert(::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
+ ceph_assert(interruptible::interrupt_cond<TestInterruptCondition>);
}).then_interruptible([] {
- ceph_assert(::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
- return ::crimson::errorator<::crimson::ct_error::enoent>::make_ready_future<>();
+ ceph_assert(interruptible::interrupt_cond<TestInterruptCondition>);
+ return errorator<ct_error::enoent>::make_ready_future<>();
}).safe_then_interruptible([] {
- ceph_assert(::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
+ ceph_assert(interruptible::interrupt_cond<TestInterruptCondition>);
return seastar::now();
- }, ::crimson::errorator<::crimson::ct_error::enoent>::all_same_way([] {
- ceph_assert(::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
+ }, errorator<ct_error::enoent>::all_same_way([] {
+ ceph_assert(interruptible::interrupt_cond<TestInterruptCondition>);
})
);
}, [](std::exception_ptr) {}, false).get0();
interruptor::with_interruption(
[] {
- ceph_assert(::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
+ ceph_assert(interruptible::interrupt_cond<TestInterruptCondition>);
return interruptor::make_interruptible(seastar::now())
.then_interruptible([] {
- ceph_assert(::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
+ ceph_assert(interruptible::interrupt_cond<TestInterruptCondition>);
});
}, [](std::exception_ptr) {
- ceph_assert(!::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
+ ceph_assert(!interruptible::interrupt_cond<TestInterruptCondition>);
return seastar::now();
}, true).get0();
TEST_F(seastar_test_suite_t, loops)
{
using interruptor =
- ::crimson::interruptible::interruptor<TestInterruptCondition>;
+ interruptible::interruptor<TestInterruptCondition>;
std::cout << "testing interruptible loops" << std::endl;
- run_async([this] {
+ run_async([] {
std::cout << "beginning" << std::endl;
interruptor::with_interruption(
[] {
std::cout << "interruptiion enabled" << std::endl;
- ceph_assert(::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
+ ceph_assert(interruptible::interrupt_cond<TestInterruptCondition>);
return interruptor::make_interruptible(seastar::now())
.then_interruptible([] {
std::cout << "test seastar future do_for_each" << std::endl;
std::vector<int> vec = {1, 2};
return seastar::do_with(std::move(vec), [](auto& vec) {
return interruptor::do_for_each(std::begin(vec), std::end(vec), [](int) {
- ceph_assert(::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
+ ceph_assert(interruptible::interrupt_cond<TestInterruptCondition>);
return seastar::now();
});
});
std::vector<int> vec = {1, 2};
return seastar::do_with(std::move(vec), [](auto& vec) {
return interruptor::do_for_each(std::begin(vec), std::end(vec), [](int) {
- ceph_assert(::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
+ ceph_assert(interruptible::interrupt_cond<TestInterruptCondition>);
return interruptor::make_interruptible(seastar::now());
});
});
}).then_interruptible([] {
std::cout << "test seastar future repeat" << std::endl;
return interruptor::repeat([] {
- ceph_assert(::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
+ ceph_assert(interruptible::interrupt_cond<TestInterruptCondition>);
return interruptor::make_interruptible(
seastar::make_ready_future<
seastar::stop_iteration>(
}).then_interruptible([] {
std::cout << "test interruptible seastar future repeat" << std::endl;
return interruptor::repeat([] {
- ceph_assert(::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
+ ceph_assert(interruptible::interrupt_cond<TestInterruptCondition>);
return seastar::make_ready_future<
seastar::stop_iteration>(
seastar::stop_iteration::yes);
using namespace std::chrono_literals;
return interruptor::make_interruptible(seastar::now()).then_interruptible([&vec] {
return interruptor::do_for_each(std::begin(vec), std::end(vec), [](int) {
- ceph_assert(::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
+ ceph_assert(interruptible::interrupt_cond<TestInterruptCondition>);
return interruptor::make_interruptible(
- ::crimson::errorator<::crimson::ct_error::enoent>::make_ready_future<>());
+ errorator<ct_error::enoent>::make_ready_future<>());
}).safe_then_interruptible([] {
- ceph_assert(::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
+ ceph_assert(interruptible::interrupt_cond<TestInterruptCondition>);
return seastar::now();
- }, ::crimson::errorator<::crimson::ct_error::enoent>::all_same_way([] {
- ceph_assert(::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
+ }, errorator<ct_error::enoent>::all_same_way([] {
+ ceph_assert(interruptible::interrupt_cond<TestInterruptCondition>);
}));
});
});
using namespace std::chrono_literals;
return interruptor::make_interruptible(seastar::now()).then_interruptible([&vec] {
return interruptor::do_for_each(std::begin(vec), std::end(vec), [](int) {
- ceph_assert(::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
- return ::crimson::errorator<::crimson::ct_error::enoent>::make_ready_future<>();
+ ceph_assert(interruptible::interrupt_cond<TestInterruptCondition>);
+ return errorator<ct_error::enoent>::make_ready_future<>();
}).safe_then_interruptible([] {
- ceph_assert(::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
+ ceph_assert(interruptible::interrupt_cond<TestInterruptCondition>);
return seastar::now();
- }, ::crimson::errorator<::crimson::ct_error::enoent>::all_same_way([] {
- ceph_assert(::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
+ }, errorator<ct_error::enoent>::all_same_way([] {
+ ceph_assert(interruptible::interrupt_cond<TestInterruptCondition>);
}));
});
});
}).then_interruptible([] {
- ceph_assert(::crimson::interruptible::interrupt_cond<TestInterruptCondition>);
+ ceph_assert(interruptible::interrupt_cond<TestInterruptCondition>);
return seastar::now();
});
}, [](std::exception_ptr) {}, false).get0();