diff options
Diffstat (limited to 'src/mongo/dbtests/query_single_solution_runner.cpp')
-rw-r--r-- | src/mongo/dbtests/query_single_solution_runner.cpp | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/src/mongo/dbtests/query_single_solution_runner.cpp b/src/mongo/dbtests/query_single_solution_runner.cpp index 30d7ca0535f..3e2e1330323 100644 --- a/src/mongo/dbtests/query_single_solution_runner.cpp +++ b/src/mongo/dbtests/query_single_solution_runner.cpp @@ -39,6 +39,7 @@ #include "mongo/db/query/query_solution.h" #include "mongo/db/query/single_solution_runner.h" #include "mongo/db/catalog/collection.h" +#include "mongo/db/operation_context_impl.h" #include "mongo/dbtests/dbtests.h" namespace QuerySingleSolutionRunner { @@ -147,7 +148,7 @@ namespace QuerySingleSolutionRunner { static const char* ns() { return "unittests.QueryStageSingleSolutionRunner"; } size_t numCursors() { - Client::ReadContext ctx( ns() ); + Client::ReadContext ctx(&_txn, ns() ); Collection* collection = ctx.ctx().db()->getCollection( ns() ); if ( !collection ) return 0; @@ -155,28 +156,29 @@ namespace QuerySingleSolutionRunner { } void registerRunner( Runner* runner ) { - Client::ReadContext ctx( ns() ); + Client::ReadContext ctx(&_txn, ns()); Collection* collection = ctx.ctx().db()->getOrCreateCollection( ns() ); return collection->cursorCache()->registerRunner( runner ); } void deregisterRunner( Runner* runner ) { - Client::ReadContext ctx( ns() ); + Client::ReadContext ctx(&_txn, ns()); Collection* collection = ctx.ctx().db()->getOrCreateCollection( ns() ); return collection->cursorCache()->deregisterRunner( runner ); } + protected: + OperationContextImpl _txn; + private: IndexDescriptor* getIndex(Database* db, const BSONObj& obj) { Collection* collection = db->getCollection( ns() ); return collection->getIndexCatalog()->findIndexByKeyPattern(obj); } - static DBDirectClient _client; + DBDirectClient _client; }; - DBDirectClient SingleSolutionRunnerBase::_client; - /** * Test dropping the collection while the * SingleSolutionRunner is doing a collection scan. @@ -184,7 +186,7 @@ namespace QuerySingleSolutionRunner { class DropCollScan : public SingleSolutionRunnerBase { public: void run() { - Client::WriteContext ctx(ns()); + Client::WriteContext ctx(&_txn, ns()); insert(BSON("_id" << 1)); insert(BSON("_id" << 2)); @@ -212,7 +214,7 @@ namespace QuerySingleSolutionRunner { class DropIndexScan : public SingleSolutionRunnerBase { public: void run() { - Client::WriteContext ctx(ns()); + Client::WriteContext ctx(&_txn, ns()); insert(BSON("_id" << 1 << "a" << 6)); insert(BSON("_id" << 2 << "a" << 7)); insert(BSON("_id" << 3 << "a" << 8)); @@ -283,7 +285,7 @@ namespace QuerySingleSolutionRunner { class SnapshotControl : public SnapshotBase { public: void run() { - Client::WriteContext ctx(ns()); + Client::WriteContext ctx(&_txn, ns()); setupCollection(); BSONObj filterObj = fromjson("{a: {$gte: 2}}"); @@ -308,7 +310,7 @@ namespace QuerySingleSolutionRunner { class SnapshotTest : public SnapshotBase { public: void run() { - Client::WriteContext ctx(ns()); + Client::WriteContext ctx(&_txn, ns()); setupCollection(); BSONObj indexSpec = BSON("_id" << 1); addIndex(indexSpec); @@ -339,7 +341,7 @@ namespace QuerySingleSolutionRunner { class Invalidate : public SingleSolutionRunnerBase { public: void run() { - Client::WriteContext ctx(ns()); + Client::WriteContext ctx(&_txn, ns()); insert(BSON("a" << 1 << "b" << 1)); BSONObj filterObj = fromjson("{_id: {$gt: 0}, b: {$gt: 0}}"); @@ -364,7 +366,7 @@ namespace QuerySingleSolutionRunner { class InvalidatePinned : public SingleSolutionRunnerBase { public: void run() { - Client::WriteContext ctx(ns()); + Client::WriteContext ctx(&_txn, ns()); insert(BSON("a" << 1 << "b" << 1)); Collection* collection = ctx.ctx().db()->getCollection(ns()); @@ -402,12 +404,12 @@ namespace QuerySingleSolutionRunner { public: void run() { { - Client::WriteContext ctx(ns()); + Client::WriteContext ctx(&_txn, ns()); insert(BSON("a" << 1 << "b" << 1)); } { - Client::ReadContext ctx(ns()); + Client::ReadContext ctx(&_txn, ns()); Collection* collection = ctx.ctx().db()->getCollection(ns()); BSONObj filterObj = fromjson("{_id: {$gt: 0}, b: {$gt: 0}}"); @@ -420,7 +422,7 @@ namespace QuerySingleSolutionRunner { // There should be one cursor before timeout, // and zero cursors after timeout. ASSERT_EQUALS(1U, numCursors()); - CollectionCursorCache::timeoutCursorsGlobal(600001); + CollectionCursorCache::timeoutCursorsGlobal(&_txn, 600001); ASSERT_EQUALS(0U, numCursors()); } }; |