Skip to content

Conversation

@Alenar
Copy link
Collaborator

@Alenar Alenar commented Nov 26, 2025

Content

This PR enhances the end to end runner by adding two mechanisms:

  • Test scenarios can now differs based on the nodes version, allowing to keep compatibility with older nodes by removing/adding parameters (i.e. --backend to the cli), checks, or scenario steps.
  • The end to end runner will now exit immediately if it detects that nodes have incompatible versions either between each other or with the runner itself (with a dedicated exit code: 3)

Compatibility check details

Backward-compatibilty: Supported changes

  • mithril-client:
    • check of the cardano-db snapshot list --epoch latest-5 is skip on versions that don't have the --epoch flag (below 0.12.34 )
    • for version below 0.12.11 use cardano-db-v2 download instead of cardano-db download --backend v2
    • for version below 0.11.14 remove not yet implemented --include-ancillary flag
    • for version below 0.11.13 remove not yet implemented --origin-tag flag
  • mithril-aggregator:
    • since 0.7.94 only the leader aggregator must be restarted when updating protocol parameters, if below this version all aggregators are restarted

Incompatible versions check details

  • mithril-client:
    • versions below 0.11.14 (2517.0) are not compatible with aggregator 0.7.31 and up (same distribution): it introduces the split of ancillary files from the cardano db archive and there's was a bug that make the download verification fails because without ancillaries the incomplete immutable trio is missing.
  • mithril-aggregator:
    • version below 0.7.91 (next distribution) are not compatible with signer 0.2.277 and up (next distribution): those signers needs the new /protocol-configuration/{epoch} route
    • version below 0.7.55 (2524.0) are not compatible with cardano node 10.4.1 and up: this cardano node version switch the ledger to the UTxO-HD format which was not supported before
  • mithril-signer:
  • versions below 0.2.221 (2450.0) are not compatible with newer distributions: there was a bug that makes signers fails if a unknown signed entity type discriminant was propagated in the network (triggered by the addition the CardanoDatabase signed entity)

Other changes

  • backward compatibility CI workflow:
    • don't fail but exit immediately with a success code if an incompatibility was detected and report the node as incompatible in the summary: this filter out known incompatibilities from the workflow results, allowing easier detection of unwanted breaking change
    • fix: missing cardano-node version in summary
  • Nightly workflow: make failing backward compatibility workflow send the alert email if it fails, this was not doable previously as it was regularly failing because of known incompatibilities

Pre-submit checklist

  • Branch
    • Tests are provided (if possible)
    • Crates versions are updated (if relevant)
    • CHANGELOG file is updated (if relevant)
    • Commit sequence broadly makes sense
    • Key commits have useful messages
  • PR
    • All check jobs of the CI have succeeded
    • Self-reviewed the diff
    • Useful pull request description
    • Reviewer requested
  • Documentation
    • Update README file (if relevant)
    • No new TODOs introduced

Comments

Issue(s)

Closes #2781, Closes #2760

@Alenar Alenar requested a review from jpraynaud November 26, 2025 12:47
@Alenar Alenar self-assigned this Nov 26, 2025
@Alenar Alenar added CI/CD 🏭 CI/CD testing 🔁 Something related to tests labels Nov 26, 2025
@github-actions
Copy link

github-actions bot commented Nov 26, 2025

Test Results

    4 files  ± 0    168 suites  ±0   23m 3s ⏱️ -51s
2 222 tests + 8  2 222 ✅ + 8  0 💤 ±0  0 ❌ ±0 
6 929 runs  +24  6 929 ✅ +24  0 💤 ±0  0 ❌ ±0 

Results for commit 1d65b16. ± Comparison against base commit 2943337.

♻️ This comment has been updated with latest results.

Comment on lines +44 to +45
List of breaking changes that are NOT supported by the end-to-end tests, running a node with those versions against
`unstable` will result in an error and an exit code of `3`.
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Suggested change
List of breaking changes that are NOT supported by the end-to-end tests, running a node with those versions against
`unstable` will result in an error and an exit code of `3`.
List of breaking changes that are NOT supported by the end-to-end tests, running the tests with nodes versions
violating at least one of the case below will result in an error and an exit code of `3`.

} => {
write!(
f,
"{other_node_name} version `{other_node_min_compatible_version}` is incompatible with {name} with a version below `{min_compatible_version}`{context}",
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Suggested change
"{other_node_name} version `{other_node_min_compatible_version}` is incompatible with {name} with a version below `{min_compatible_version}`{context}",
"{other_node_name} starting version `{other_node_min_compatible_version}` is incompatible with {name} with a version below `{min_compatible_version}`{context}",

@Alenar Alenar force-pushed the djo/2781/e2e-backcompat branch from 5a7b8b8 to 1d65b16 Compare November 26, 2025 15:55
@Alenar Alenar temporarily deployed to testing-preview November 26, 2025 16:06 — with GitHub Actions Inactive
Copy link
Member

@jpraynaud jpraynaud left a comment

Choose a reason for hiding this comment

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

LGTM 🔥

There are multiple ways to do this:

- disabling part of the scenarios
- adding or removing arguments to the binaries (i.e. `--backend` flag for the client-cli)
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
- adding or removing arguments to the binaries (i.e. `--backend` flag for the client-cli)
- adding or removing arguments to the binaries (e.g. `--backend` flag for the client-cli)

Comment on lines +13 to +14
> Node versions and distribution versions below are the ones that first included the changes, has node versions evolve
> faster than distribution versions the actual node version included in the distribution may be higher.
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
> Node versions and distribution versions below are the ones that first included the changes, has node versions evolve
> faster than distribution versions the actual node version included in the distribution may be higher.
> Node versions and distribution versions below are the ones that first included the changes, as node versions evolve
> faster than distribution versions the actual node version included in the distribution may be higher.

> Node versions and distribution versions below are the ones that first included the changes, has node versions evolve
> faster than distribution versions the actual node version included in the distribution may be higher.
>
> i.e. `--origin-tag` flag for the client-cli was introduced in version `0.11.13`, the first distribution that included
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
> i.e. `--origin-tag` flag for the client-cli was introduced in version `0.11.13`, the first distribution that included
> e.g. `--origin-tag` flag for the client-cli was introduced in version `0.11.13`, the first distribution that included


---

## Not supported changes
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
## Not supported changes
## Unsupported changes


### Mithril client

- since `0.12.34` (2543.0): test of new `--epoch` filter to `cardano-db list` (disabled on lower versions)
Copy link
Member

Choose a reason for hiding this comment

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

This will make the lists a bit more readable:

Suggested change
- since `0.12.34` (2543.0): test of new `--epoch` filter to `cardano-db list` (disabled on lower versions)
- **since `0.12.34` (2543.0)**: test of new `--epoch` filter to `cardano-db list` (disabled on lower versions)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI/CD 🏭 CI/CD testing 🔁 Something related to tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enhance e2e test to support the introduction of new features Enhance reliability of backward compatibility test

3 participants