summaryrefslogtreecommitdiff
path: root/src/mongo/dbtests/query_stage_count.cpp
diff options
context:
space:
mode:
authorBilly Donahue <billy.donahue@mongodb.com>2019-10-02 00:03:00 +0000
committerevergreen <evergreen@mongodb.com>2019-10-02 00:03:00 +0000
commit6adefc73b4990253e4f277b49b119db1a05b7490 (patch)
treecbad4fe8afa2418bd2b7b4bd33303b0e6be66bc6 /src/mongo/dbtests/query_stage_count.cpp
parentdfb22aca7b1e62693fd5272d37239a40000c3d0e (diff)
downloadmongo-6adefc73b4990253e4f277b49b119db1a05b7490.tar.gz
SERVER-43367 unittest framework refactor/fixes
- Segregate old-style dbtests into their own Suite initialization system: OldStyleSuiteSpecification. This is where the funky deprecated features can live on without interfering with the Suite API. It also gives us a searchable base class to identify them in the future. OldStyleSuite has `setupTests()` and an `add<T>()` that Suite does not have. Suite API can shrink when it doesn't have to support these dbtest adaptor features. Suite only needs non-template `add(name, callback)`. - Add OldStyleSuiteInitializer to some dbtests that were missing it! These didn't use SuiteInstance to register themselves and were incorrect. They would self register, resulting in _allSuites() holding a std::shared_ptr to a static-duration Suite object! - Change `getSuite()` to return `Suite&` instead of `Suite*`. - No more "self-registering" in Suite constructor. Registration must be done as a separate post-construction step. This removes some unusual lifetime management code and is easier to document. Suite::getSuite(name) is the only way to make a Suite, and it does the make_shared and registration calls with a pseudo-private ConstructorEnable idiom. - Suite->run() returns std::unique_ptr<Result> instead of raw `Result*`. It's virtual to support OldStyleSuite behavior. - Suite._ran does nothing. Removed. - Result.cur does nothing. Removed. - Switch to pass-by-value and std::move for most ctor args. - Add explicit on 1-arg ctors. - Get rid of TestHolder. It's just a 2-field struct. - use fmt instead of snprintf - TEST and TEST_F macros: generate TEST_TYPE once. - TEST and TEST_F macros: inline the _agent variable. - Mark _doRun as `override`. - Terminology: replace CASE_NAME with SUITE_NAME. - rename DeathTestImpl -> DeathTestBase - move getDeathTestPattern into the test as a static member function - refactor out some repetition from the comparator decl macros - use if-constexpr and diamond relops to clean up the ComparisonAssertion class. - dbtests: conditionally skip some add<T> calls - further dedup (DEATH_)TEST(_F) macros
Diffstat (limited to 'src/mongo/dbtests/query_stage_count.cpp')
-rw-r--r--src/mongo/dbtests/query_stage_count.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/mongo/dbtests/query_stage_count.cpp b/src/mongo/dbtests/query_stage_count.cpp
index 6444ee4b9ea..e8bdc4a0dba 100644
--- a/src/mongo/dbtests/query_stage_count.cpp
+++ b/src/mongo/dbtests/query_stage_count.cpp
@@ -359,9 +359,9 @@ public:
}
};
-class All : public Suite {
+class All : public OldStyleSuiteSpecification {
public:
- All() : Suite("query_stage_count") {}
+ All() : OldStyleSuiteSpecification("query_stage_count") {}
void setupTests() {
add<QueryStageCountNoChangeDuringYield>();
@@ -372,6 +372,8 @@ public:
add<QueryStageCountUpdateDuringYield>();
add<QueryStageCountMultiKeyDuringYield>();
}
-} QueryStageCountAll;
+};
+
+OldStyleSuiteInitializer<All> queryStageCountAll;
} // namespace QueryStageCount