From e20faf7a8d531689642106164b5ee53b3353fe80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20K=C3=A4fer?= Date: Fri, 8 May 2015 16:37:22 +0200 Subject: add worker cancellation test (failing) --- test/miscellaneous/worker.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'test') diff --git a/test/miscellaneous/worker.cpp b/test/miscellaneous/worker.cpp index 50fabcebc8..de0654422c 100644 --- a/test/miscellaneous/worker.cpp +++ b/test/miscellaneous/worker.cpp @@ -68,3 +68,30 @@ TEST(Worker, WorkRequestJoinCancelsAfter) { uv_run(uv_default_loop(), UV_RUN_DEFAULT); EXPECT_FALSE(didAfter); } + +TEST(Worker, WorkRequestCancelsImmediately) { + RunLoop loop(uv_default_loop()); + + Worker worker(1); + + loop.invoke([&] { + std::promise started; + // First worker item. + WorkRequest request1 = worker.send([&] { + usleep(10000); + started.set_value(); + }, [&] {}); + + WorkRequest request2 = worker.send([&] { + ADD_FAILURE() << "Second work item should not be invoked"; + }, [&] {}); + request2.join(); + + started.get_future().get(); + request1.join(); + + loop.stop(); + }); + + uv_run(uv_default_loop(), UV_RUN_DEFAULT); +} -- cgit v1.2.1