Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-43367

unittest framework enhancements/bugfixes

    • Type: Icon: Task Task
    • Resolution: Fixed
    • Priority: Icon: Minor - P4 Minor - P4
    • 4.3.1
    • Affects Version/s: None
    • Component/s: Internal Code
    • Labels:
      None
    • Fully Compatible
    • Dev Tools 2019-09-23, Dev Tools 2019-10-07

      unittest: Suite refactor

      • 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*`.
      • 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 constexpr if and diamond relops to clean up the
        ComparisonAssertion class.

            Assignee:
            billy.donahue@mongodb.com Billy Donahue
            Reporter:
            billy.donahue@mongodb.com Billy Donahue
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: