X-Git-Url: http://plrg.eecs.uci.edu/git/?p=folly.git;a=blobdiff_plain;f=folly%2Fio%2Fasync%2Ftest%2FAsyncTimeoutTest.cpp;h=3b16709a84ad251f0c12b0cdc2f0a0e80f237e35;hp=1d7c04fe874b3fa60d6315336ca760c7429315bb;hb=acbd746f5036bf795cc62022f0114b4b08032d82;hpb=db13010c1338d471c713a652e0940afba627b8bc diff --git a/folly/io/async/test/AsyncTimeoutTest.cpp b/folly/io/async/test/AsyncTimeoutTest.cpp index 1d7c04fe..3b16709a 100644 --- a/folly/io/async/test/AsyncTimeoutTest.cpp +++ b/folly/io/async/test/AsyncTimeoutTest.cpp @@ -77,8 +77,18 @@ TEST(AsyncTimeout, cancel_make) { [&]() noexcept { value = expected; } ); - observer->scheduleTimeout(std::chrono::milliseconds(100)); - observer->cancelTimeout(); + std::weak_ptr rctx_weak_ptr; + + { + RequestContextScopeGuard rctx_guard; + rctx_weak_ptr = RequestContext::saveContext(); + observer->scheduleTimeout(std::chrono::milliseconds(100)); + observer->cancelTimeout(); + } + + // Ensure that RequestContext created for the scope has been released and + // deleted. + EXPECT_EQ(rctx_weak_ptr.expired(), true); manager.loop(); @@ -89,14 +99,24 @@ TEST(AsyncTimeout, cancel_schedule) { int value = 0; int const expected = 10; EventBase manager; + std::unique_ptr observer; + std::weak_ptr rctx_weak_ptr; - auto observer = AsyncTimeout::schedule( - std::chrono::milliseconds(100), - manager, - [&]() noexcept { value = expected; } - ); + { + RequestContextScopeGuard rctx_guard; + rctx_weak_ptr = RequestContext::saveContext(); + + observer = AsyncTimeout::schedule( + std::chrono::milliseconds(100), manager, [&]() noexcept { + value = expected; + }); + + observer->cancelTimeout(); + } - observer->cancelTimeout(); + // Ensure that RequestContext created for the scope has been released and + // deleted. + EXPECT_EQ(rctx_weak_ptr.expired(), true); manager.loop();