Skip to content

Conversation

@matthewdale
Copy link
Contributor

@matthewdale matthewdale commented Jun 11, 2025

DRIVERS-3114

We're sunsetting the Drivers Atlas Testing (Astrolabe) project. Some unified spec test behaviors are only used by Astrolabe and can be removed:

  • storeEventsAsEntities option for client entities
  • loop operation

Changes:

  • Remove storeEventsAsEntities option for client entities and loop operation from the Unified Test Format spec.
  • Add unified spec test schema 1.24 that uses JSON Schema draft "2019-09" and deprecates the above values.
  • Update schema-latest.json.
  • Remove all Unified Test Format spec tests that require the deprecated values.

Please complete the following before merging:

  • Update changelog.
  • N/A Test changes in at least one language driver.
  • N/A Test these changes against all server versions and topologies (including standalone, replica set, and sharded
    clusters).

@matthewdale matthewdale requested a review from a team as a code owner June 11, 2025 00:26
@matthewdale matthewdale requested review from alcaeus and removed request for a team June 11, 2025 00:26
Copy link
Member

@alcaeus alcaeus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe this is the first time we're trying to remove functionality from the unified test format (I previously only deprecated the serverless option in runOnRequirements). While we never specified whether the test format follows something like semantic versioning, so far the assumption has held true that a test file that validates in schema version 1.x will validate in any schema version 1.y where y > x. This change would break that previous assumption. On the other hand, IIRC there are no tests other than astrolabe test files that use either loop or storeEventsAsEntities functionality, so removing the functionality from the schema would allow drivers to remove the logic from their test runners without fear of other tests re-introducing them.

@baileympearson
Copy link
Contributor

@alcaeus My preference would be to remove any unused code because:

  1. less code to maintain = happier me
  2. less confusion for new engineers, who need the full context about why these were added in the first place and then removed but left in the spec

Could your concerns be resolved by bumping to schema version 2.0? Seems like the right use of a major version 🙂

@matthewdale
Copy link
Contributor Author

Another option is to remove the requirement to implement those behaviors from the Unified Test Format spec, but leave the properties in the JSON schema (with a note about why they're not in the spec). That would maintain the existing compatibility but allow teams to remove (or ignore) those behaviors from their unified test runners.

Additionally, JSON Schema draft 2019-09 adds a new "deprecated" property. We could consider using the newer JSON Schema and mark the unused properties as "deprecated": true.

@matthewdale matthewdale requested a review from alcaeus June 13, 2025 04:07
@matthewdale matthewdale force-pushed the drivers3114-sunset-astrolabe branch from 42012de to ffb5dea Compare June 13, 2025 04:13
@matthewdale
Copy link
Contributor Author

Updated the PR to bump JSON Schema to draft 2019-09 for schema 1.24, and deprecated the loop and storeEventsAsEntities instead of removing them.

@matthewdale matthewdale merged commit db69351 into mongodb:master Jun 17, 2025
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants