During the 5.0 development cycle, we added tests that specifically tested FCV upgrade/downgrade behavior from 4.4 to 5.0. Many, but not all, of these tests were marked with a TODO to indicate that they should be removed after branching. Since these tests failed when we attempted to upgrade to 5.1, they required manual intervention from the server teams that owned the tests.
Since these tests should always be removed when introducing new FCV constants to the server, we should create a directory that holds all of these tests, for example jstests/multiVersion/targetedDowngradeTests. This will let us easily delete all of these tests as part of the upgrade process, without needing to coordinate with server teams.
To ensure that engineers are adding their tests correctly, we will require developers to label every upgrade/downgrade test as “generic” or “targeted”. In addition, we can place multiversion tests into one of two directories inside jstests/multiVersion/, one for targeted tests and another for generic tests. We should do an audit of current multiversion tests and refactor them so that they live in the correct directory.
Targeted multiversion tests can be removed immediately after branch cut, since we’re officially on the next development cycle at that point.