<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:03:00 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[SERVER-43367] unittest framework enhancements/bugfixes</title>
                <link>https://jira.mongodb.org/browse/SERVER-43367</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;    unittest: Suite refactor&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Segregate old-style dbtests into their own Suite initialization&lt;br/&gt;
        system: OldStyleSuiteSpecification. This is where the funky&lt;br/&gt;
        deprecated features can live on without interfering with the&lt;br/&gt;
        Suite API.  It also gives us a searchable base class to identify&lt;br/&gt;
        them in the future.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;OldStyleSuite has `setupTests()` and an `add&amp;lt;T&amp;gt;()` that&lt;br/&gt;
        Suite does not have.  Suite API can shrink when it doesn&apos;t&lt;br/&gt;
        have to support these dbtest adaptor features.&lt;br/&gt;
        Suite only needs non-template `add(name, callback)`.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Add OldStyleSuiteInitializer to some dbtests that were missing it!&lt;br/&gt;
        These didn&apos;t use SuiteInstance to register themselves and were incorrect.&lt;br/&gt;
        They would self register, resulting in _allSuites() holding a std::shared_ptr&lt;br/&gt;
        to a static-duration Suite object!&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Change `getSuite()` to return `Suite&amp;amp;` instead of `Suite*`.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;No more &quot;self-registering&quot; in Suite constructor. Registration&lt;br/&gt;
        must be done as a separate post-construction step. This removes&lt;br/&gt;
        some unusual lifetime management code and is easier to document.&lt;br/&gt;
        Suite::getSuite(name) is the only way to make a Suite, and it&lt;br/&gt;
        does the make_shared and registration calls with a pseudo-private&lt;br/&gt;
        ConstructorEnable idiom.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Suite-&amp;gt;run() returns std::unique_ptr&amp;lt;Result&amp;gt; instead of&lt;br/&gt;
        raw `Result*`.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Suite._ran does nothing. Removed.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Result.cur does nothing. Removed.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Switch to pass-by-value and std::move for most ctor args.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Add explicit on 1-arg ctors.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Get rid of TestHolder. It&apos;s just a 2-field struct.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;use fmt instead of snprintf&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;TEST and TEST_F macros: generate TEST_TYPE once.&lt;/li&gt;
	&lt;li&gt;TEST and TEST_F macros: inline the _agent variable.&lt;/li&gt;
	&lt;li&gt;Mark _doRun as `override`.&lt;/li&gt;
	&lt;li&gt;Terminology: replace CASE_NAME with SUITE_NAME.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;rename DeathTestImpl -&amp;gt; DeathTestBase&lt;/li&gt;
	&lt;li&gt;move getDeathTestPattern into the test as a static member function&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;refactor out some repetition from the comparator decl macros&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;use constexpr if and diamond relops to clean up the&lt;br/&gt;
        ComparisonAssertion class.&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="931503">SERVER-43367</key>
            <summary>unittest framework enhancements/bugfixes</summary>
                <type id="3" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14718&amp;avatarType=issuetype">Task</type>
                                            <priority id="4" iconUrl="https://jira.mongodb.org/images/icons/priorities/minor.svg">Minor - P4</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="13201">Fixed</resolution>
                                        <assignee username="billy.donahue@mongodb.com">Billy Donahue</assignee>
                                    <reporter username="billy.donahue@mongodb.com">Billy Donahue</reporter>
                        <labels>
                    </labels>
                <created>Tue, 17 Sep 2019 21:52:04 +0000</created>
                <updated>Sun, 29 Oct 2023 22:17:08 +0000</updated>
                            <resolved>Wed, 2 Oct 2019 02:15:25 +0000</resolved>
                                                    <fixVersion>4.3.1</fixVersion>
                                    <component>Internal Code</component>
                                        <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="2444694" author="xgen-internal-githook" created="Wed, 2 Oct 2019 00:03:07 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;username&apos;: &apos;BillyDonahue&apos;, &apos;email&apos;: &apos;billy.donahue@mongodb.com&apos;, &apos;name&apos;: &apos;Billy Donahue&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-43367&quot; title=&quot;unittest framework enhancements/bugfixes&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-43367&quot;&gt;&lt;del&gt;SERVER-43367&lt;/del&gt;&lt;/a&gt; unittest framework refactor/fixes&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Segregate old-style dbtests into their own Suite initialization&lt;br/&gt;
    system: OldStyleSuiteSpecification. This is where the funky&lt;br/&gt;
    deprecated features can live on without interfering with the&lt;br/&gt;
    Suite API.  It also gives us a searchable base class to identify&lt;br/&gt;
    them in the future.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;    OldStyleSuite has `setupTests()` and an `add&amp;lt;T&amp;gt;()` that&lt;br/&gt;
    Suite does not have.  Suite API can shrink when it doesn&apos;t&lt;br/&gt;
    have to support these dbtest adaptor features.&lt;br/&gt;
    Suite only needs non-template `add(name, callback)`.&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Add OldStyleSuiteInitializer to some dbtests that were missing it!&lt;br/&gt;
    These didn&apos;t use SuiteInstance to register themselves and were&lt;br/&gt;
    incorrect.  They would self register, resulting in _allSuites()&lt;br/&gt;
    holding a std::shared_ptr to a static-duration Suite object!&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Change `getSuite()` to return `Suite&amp;amp;` instead of `Suite*`.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;No more &quot;self-registering&quot; in Suite constructor. Registration&lt;br/&gt;
    must be done as a separate post-construction step. This removes&lt;br/&gt;
    some unusual lifetime management code and is easier to document.&lt;br/&gt;
    Suite::getSuite(name) is the only way to make a Suite, and it&lt;br/&gt;
    does the make_shared and registration calls with a pseudo-private&lt;br/&gt;
    ConstructorEnable idiom.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Suite-&amp;gt;run() returns std::unique_ptr&amp;lt;Result&amp;gt; instead of&lt;br/&gt;
    raw `Result*`. It&apos;s virtual to support OldStyleSuite behavior.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Suite._ran does nothing. Removed.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Result.cur does nothing. Removed.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Switch to pass-by-value and std::move for most ctor args.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Add explicit on 1-arg ctors.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Get rid of TestHolder. It&apos;s just a 2-field struct.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;use fmt instead of snprintf&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;TEST and TEST_F macros: generate TEST_TYPE once.&lt;/li&gt;
	&lt;li&gt;TEST and TEST_F macros: inline the _agent variable.&lt;/li&gt;
	&lt;li&gt;Mark _doRun as `override`.&lt;/li&gt;
	&lt;li&gt;Terminology: replace CASE_NAME with SUITE_NAME.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;rename DeathTestImpl -&amp;gt; DeathTestBase&lt;/li&gt;
	&lt;li&gt;move getDeathTestPattern into the test as a static member function&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;refactor out some repetition from the comparator decl macros&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;use if-constexpr and diamond relops to clean up the&lt;br/&gt;
    ComparisonAssertion class.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;dbtests: conditionally skip some add&amp;lt;T&amp;gt; calls&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;further dedup (DEATH_)TEST(_F) macros&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/6adefc73b4990253e4f277b49b119db1a05b7490&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/6adefc73b4990253e4f277b49b119db1a05b7490&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="2424566" author="billy.donahue" created="Wed, 18 Sep 2019 18:59:04 +0000"  >&lt;p&gt;&lt;a href=&quot;https://mongodbcr.appspot.com/489260001/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://mongodbcr.appspot.com/489260001/&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10011" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Backwards Compatibility</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10038"><![CDATA[Fully Compatible]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 2 Oct 2019 00:03:07 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        4 years, 19 weeks, 1 day ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_17050" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Downstream Team Attention</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="16941"><![CDATA[Not Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>luke.bonanomi@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            4 years, 19 weeks, 1 day ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>billy.donahue@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hvr0pj:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hvfnvj:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_23361" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Requested By</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="3280">Dev Tools 2019-09-23</customfieldvalue>
    <customfieldvalue id="3281">Dev Tools 2019-10-07</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10053" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time In Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_22870" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Triagers</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hvqmyv:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>