diff options
author | Andrew Morrow <acm@mongodb.com> | 2015-06-19 17:18:25 -0400 |
---|---|---|
committer | Andrew Morrow <acm@mongodb.com> | 2015-06-30 12:16:55 -0400 |
commit | 6abd1d0e9cdc691e6daf30ce3316ffb820b9bb70 (patch) | |
tree | 00b5311c157c3623f92e70234bf4e8cc687c4917 /src/mongo/db/range_deleter_test.cpp | |
parent | 112ab99be08e3217aa87586a697c576dba0de5fd (diff) | |
download | mongo-6abd1d0e9cdc691e6daf30ce3316ffb820b9bb70.tar.gz |
SERVER-19099 Consistently use concurrency and time names via stdx
Diffstat (limited to 'src/mongo/db/range_deleter_test.cpp')
-rw-r--r-- | src/mongo/db/range_deleter_test.cpp | 46 |
1 files changed, 27 insertions, 19 deletions
diff --git a/src/mongo/db/range_deleter_test.cpp b/src/mongo/db/range_deleter_test.cpp index 782b7235d60..3db312b7f98 100644 --- a/src/mongo/db/range_deleter_test.cpp +++ b/src/mongo/db/range_deleter_test.cpp @@ -36,8 +36,10 @@ #include "mongo/db/service_context.h" #include "mongo/db/write_concern_options.h" #include "mongo/stdx/functional.h" +#include "mongo/stdx/future.h" #include "mongo/stdx/thread.h" #include "mongo/unittest/unittest.h" +#include "mongo/util/scopeguard.h" namespace { @@ -49,10 +51,11 @@ using mongo::DeletedRange; using mongo::FieldParser; using mongo::KeyRange; using mongo::Notification; +using mongo::OperationContext; using mongo::RangeDeleter; using mongo::RangeDeleterMockEnv; using mongo::RangeDeleterOptions; -using mongo::OperationContext; +using mongo::MakeGuard; namespace stdx = mongo::stdx; @@ -163,13 +166,6 @@ TEST(QueuedDelete, StopWhileWaitingCursor) { ASSERT_FALSE(env->deleteOccured()); } -static void rangeDeleterDeleteNow(RangeDeleter* deleter, - OperationContext* txn, - const RangeDeleterOptions& deleterOptions, - std::string* errMsg) { - deleter->deleteNow(txn, deleterOptions, errMsg); -} - // Should not start delete if the set of cursors that were open when the // deleteNow method is called is still open. TEST(ImmediateDelete, ShouldWaitCursor) { @@ -191,8 +187,16 @@ TEST(ImmediateDelete, ShouldWaitCursor) { RangeDeleterOptions deleterOption( KeyRange(ns, BSON("x" << 0), BSON("x" << 10), BSON("x" << 1))); deleterOption.waitForOpenCursors = true; - stdx::thread deleterThread = stdx::thread( - mongo::stdx::bind(rangeDeleterDeleteNow, &deleter, noTxn, deleterOption, &errMsg)); + + stdx::packaged_task<void()> deleterTask( + [&] { deleter.deleteNow(noTxn, deleterOption, &errMsg); }); + stdx::future<void> deleterFuture = deleterTask.get_future(); + stdx::thread deleterThread(std::move(deleterTask)); + + auto guard = MakeGuard([&] { + deleter.stopWorkers(); + deleterThread.join(); + }); env->waitForNthGetCursor(1u); @@ -206,8 +210,8 @@ TEST(ImmediateDelete, ShouldWaitCursor) { env->addCursorId(ns, 200); env->removeCursorId(ns, 345); - ASSERT_TRUE( - deleterThread.timed_join(boost::posix_time::seconds(MAX_IMMEDIATE_DELETE_WAIT_SECS))); + ASSERT_TRUE(stdx::future_status::ready == + deleterFuture.wait_for(stdx::chrono::seconds(MAX_IMMEDIATE_DELETE_WAIT_SECS))); ASSERT_TRUE(env->deleteOccured()); const DeletedRange deletedChunk(env->getLastDelete()); @@ -216,8 +220,6 @@ TEST(ImmediateDelete, ShouldWaitCursor) { ASSERT_TRUE(deletedChunk.min.equal(BSON("x" << 0))); ASSERT_TRUE(deletedChunk.max.equal(BSON("x" << 10))); ASSERT_TRUE(deletedChunk.shardKeyPattern.equal(BSON("x" << 1))); - - deleter.stopWorkers(); } // Should terminate when stop is requested. @@ -240,8 +242,14 @@ TEST(ImmediateDelete, StopWhileWaitingCursor) { RangeDeleterOptions deleterOption( KeyRange(ns, BSON("x" << 0), BSON("x" << 10), BSON("x" << 1))); deleterOption.waitForOpenCursors = true; - stdx::thread deleterThread = stdx::thread( - mongo::stdx::bind(rangeDeleterDeleteNow, &deleter, noTxn, deleterOption, &errMsg)); + + stdx::packaged_task<void()> deleterTask( + [&] { deleter.deleteNow(noTxn, deleterOption, &errMsg); }); + stdx::future<void> deleterFuture = deleterTask.get_future(); + stdx::thread deleterThread(std::move(deleterTask)); + + auto join_thread_guard = MakeGuard([&] { deleterThread.join(); }); + auto stop_deleter_guard = MakeGuard([&] { deleter.stopWorkers(); }); env->waitForNthGetCursor(1u); @@ -251,10 +259,10 @@ TEST(ImmediateDelete, StopWhileWaitingCursor) { ASSERT_FALSE(env->deleteOccured()); - deleter.stopWorkers(); + stop_deleter_guard.Execute(); - ASSERT_TRUE( - deleterThread.timed_join(boost::posix_time::seconds(MAX_IMMEDIATE_DELETE_WAIT_SECS))); + ASSERT_TRUE(stdx::future_status::ready == + deleterFuture.wait_for(stdx::chrono::seconds(MAX_IMMEDIATE_DELETE_WAIT_SECS))); ASSERT_FALSE(env->deleteOccured()); } |