summaryrefslogtreecommitdiff
path: root/src/mongo/db/range_deleter_test.cpp
diff options
context:
space:
mode:
authorAndrew Morrow <acm@mongodb.com>2015-06-19 17:18:25 -0400
committerAndrew Morrow <acm@mongodb.com>2015-06-30 12:16:55 -0400
commit6abd1d0e9cdc691e6daf30ce3316ffb820b9bb70 (patch)
tree00b5311c157c3623f92e70234bf4e8cc687c4917 /src/mongo/db/range_deleter_test.cpp
parent112ab99be08e3217aa87586a697c576dba0de5fd (diff)
downloadmongo-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.cpp46
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());
}