Skip to content

Conversation

@rafal-ch
Copy link
Contributor

@rafal-ch rafal-ch commented Mar 14, 2025

Closes #2837

Description

This PR makes the tests for TxStatusManager more lean. Mainly it removes duplication of tests (some tests were testing for the same thing, but in slightly different way) and covers some more cases.

Checklist

  • New behavior is reflected in tests

Before requesting review

  • I have reviewed the code myself

@rafal-ch rafal-ch added the no changelog Skip the CI check of the changelog modification label Mar 14, 2025
@rafal-ch rafal-ch marked this pull request as ready for review March 14, 2025 15:41
@rafal-ch rafal-ch changed the title Rafal/2837/rework tx status manager tests Rework TxStatusManager tests Mar 14, 2025
@rafal-ch rafal-ch requested a review from a team March 14, 2025 15:42
Rafał Chabowski added 2 commits March 14, 2025 16:46
Copy link
Member

@MitchTurner MitchTurner left a comment

Choose a reason for hiding this comment

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

Much much better.

One thing to point out, a lot of your test names are things like management__ and pruning__, where those aren't interfaces we have. It seems like most of them are working with the interface status_update, so in those cases maybe the names of the tests should be status_update__....

However, I'd like to point out that TxStatusManager isn't a public type really (it's technically pub, but it's concrete and it's only consumer is the Task) I mentioned this briefly in the last PR, but could we consider testing against the Task for these tests? Similar to what we did here: #2856

AurelienFT
AurelienFT previously approved these changes Mar 17, 2025
Copy link
Contributor

@AurelienFT AurelienFT left a comment

Choose a reason for hiding this comment

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

Yeahhhh ! I like the way you use less HALF TLL etc.. Nice !

@rafal-ch
Copy link
Contributor Author

Yeahhhh ! I like the way you use less HALF TLL etc.. Nice !

For this change credits go to @xgreenx :-)

Copy link
Member

@MitchTurner MitchTurner left a comment

Choose a reason for hiding this comment

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

Awesome.

Love the declarative helpers ❤️

@rafal-ch rafal-ch merged commit 35c5879 into master Mar 19, 2025
33 checks passed
@rafal-ch rafal-ch deleted the rafal/2837/rework_tx_status_manager_tests branch March 19, 2025 07:26
@xgreenx xgreenx mentioned this pull request Apr 9, 2025
xgreenx pushed a commit that referenced this pull request Apr 9, 2025
## Version 0.43.0

### Breaking
- [2882](#2882): Changed the
type of the `resolved_outputs` for pre-confirmations. Now it also
includes `Utxoid`. `resolved_outputs` field contains only `Change` and
`Variable` outputs, so the `UtxoId` for them could be hard to derive, if
transaction has known inputs. This information should help to create
dependent transactions more easily.
- [2900](#2900): Get rid of
`Deref` impl on `ImportResult` by introducing wrapper type.
- [2909](#2909): Compressed
block headers now include a merkle root of the temporal registry after
compression was performed.
- [2931](#2931): In
`fuel-core-compression`, the `compress` function now takes a reference
to `Config` instead of the value.

### Added
- [2848](#2848): Link all
components of preconfirmations and add E2E tests.
- [2882](#2882): Listen to tx
status update from `TxStatusManager` in `TxPool`. Added logic to clean
up transactions from the pool if received squeezed out pre
confirmations. Added logic to promote transactions on sentry nodes when
receive pre-confirmation.
- [2885](#2885): Notify P2P
from `TxStatusManager` in case of bad preconfirmation message.
- [2901](#2901): New query
`dryRunRecordStorageReads` which works like `dryRun` but also returns
storage reads, allowing use of execution tracer or local debugger
- [2912](#2912): Add the
`allow_partial` parameter to the `coinsToSpend` query. The default value
of this parameters is `false` to preserve the old behavior. If set to
`true`, the query returns available coins instead of failing when the
requested amount is unavailable.
- [2914](#2914): Tests
ensuring the proof generation and validation of tables with sparse and
merklized blueprints work.

### Changed
- [2859](#2859): Swap out
off-chain worker compression for dedicated compression service in
`fuel-core-bin`.
- [2914](#2914): Break out
test logic to trait methods for `root_storage_tests` and
`basic_merkleized_storage_tests` test macros.
- [2925](#2925): Make
preconfirmation optional on API endpoints.

### Fixed
- [2918](#2918): Only cancel
background work if primary RocksDB instance is dropped
- [2935](#2935): The change
rejects transactions immediately, if they use spent coins. `TxPool` has
a SpentInputs LRU cache, storing all spent coins.

### Removed
- [2859](#2859): Removed DA
compression from off-chain worker in favor of dedicated compression
service in `fuel-core-bin`.

## What's Changed
* Rework `TxStatusManager` tests by @rafal-ch in
#2871
* fix(storage): custom impl of EnumCount for MerkleizedColumn by @rymnc
in #2875
* Update network versions on README by @github-actions in
#2889
* fix(version-compatibility): pin async-graphql to 7.0.15 by @rymnc in
#2891
* Fix proptest for tx status manager by @rafal-ch in
#2893
* fault_proving(compression): glue code for integ into fuel-core by
@rymnc in #2859
* Link and activate preconfirmations and add integrations tests by
@AurelienFT in #2848
* refactor: Get rid of `Deref` impl on `ImportResult` by introducing
wrapper type. by @netrome in
#2900
* fix(compression_service): post merge reviews by @rymnc in
#2895
* Listen status updates from in TxStatusManager in TxPool by @AurelienFT
in #2882
* chore(compression): include registry root in compressed block header
by @rymnc in #2909
* Improve TxStatusManager tests coverage by @AurelienFT in
#2911
* ci(benchmarks): run nightly benchmark and create PR by @rymnc in
#2915
* fix: Only cancel background work if primary RocksDB instance is
dropped by @netrome in #2918
* fix(ci): nightly benchmark by @rymnc in
#2922
* fix(ci): explicitly push before creating PR by @rymnc in
#2926
* Add allow_partial parameter to the "coins to spend" query by
@AurelienFT in #2912
* fix(compression): improve robustness on startup and shutdown by @rymnc
in #2923
* chore(compression): metrics for compression service by @rymnc in
#2920
* chore(compression): pass compression config by reference by @rymnc in
#2931
* Dry run execution tracing by @Dentosal in
#2901
* Make preconfirmation optional on API endpoints by @AurelienFT in
#2925
* Notify P2P in case of bad preconfirmation message by @AurelienFT in
#2885
* chore(1.85): 1.85.0 readiness by @rymnc in
#2937
* Reject transactions for already spent coins by @xgreenx in
#2935
* feat: add tests for sparse and merkleized blueprint proof generation
by @netrome in #2914


**Full Changelog**:
v0.42.0...v0.43.0

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
ChapmaBeerbohm added a commit to ChapmaBeerbohm/holo-kit that referenced this pull request Sep 26, 2025
## Version 0.43.0

### Breaking
- [2882](FuelLabs/fuel-core#2882): Changed the
type of the `resolved_outputs` for pre-confirmations. Now it also
includes `Utxoid`. `resolved_outputs` field contains only `Change` and
`Variable` outputs, so the `UtxoId` for them could be hard to derive, if
transaction has known inputs. This information should help to create
dependent transactions more easily.
- [2900](FuelLabs/fuel-core#2900): Get rid of
`Deref` impl on `ImportResult` by introducing wrapper type.
- [2909](FuelLabs/fuel-core#2909): Compressed
block headers now include a merkle root of the temporal registry after
compression was performed.
- [2931](FuelLabs/fuel-core#2931): In
`fuel-core-compression`, the `compress` function now takes a reference
to `Config` instead of the value.

### Added
- [2848](FuelLabs/fuel-core#2848): Link all
components of preconfirmations and add E2E tests.
- [2882](FuelLabs/fuel-core#2882): Listen to tx
status update from `TxStatusManager` in `TxPool`. Added logic to clean
up transactions from the pool if received squeezed out pre
confirmations. Added logic to promote transactions on sentry nodes when
receive pre-confirmation.
- [2885](FuelLabs/fuel-core#2885): Notify P2P
from `TxStatusManager` in case of bad preconfirmation message.
- [2901](FuelLabs/fuel-core#2901): New query
`dryRunRecordStorageReads` which works like `dryRun` but also returns
storage reads, allowing use of execution tracer or local debugger
- [2912](FuelLabs/fuel-core#2912): Add the
`allow_partial` parameter to the `coinsToSpend` query. The default value
of this parameters is `false` to preserve the old behavior. If set to
`true`, the query returns available coins instead of failing when the
requested amount is unavailable.
- [2914](FuelLabs/fuel-core#2914): Tests
ensuring the proof generation and validation of tables with sparse and
merklized blueprints work.

### Changed
- [2859](FuelLabs/fuel-core#2859): Swap out
off-chain worker compression for dedicated compression service in
`fuel-core-bin`.
- [2914](FuelLabs/fuel-core#2914): Break out
test logic to trait methods for `root_storage_tests` and
`basic_merkleized_storage_tests` test macros.
- [2925](FuelLabs/fuel-core#2925): Make
preconfirmation optional on API endpoints.

### Fixed
- [2918](FuelLabs/fuel-core#2918): Only cancel
background work if primary RocksDB instance is dropped
- [2935](FuelLabs/fuel-core#2935): The change
rejects transactions immediately, if they use spent coins. `TxPool` has
a SpentInputs LRU cache, storing all spent coins.

### Removed
- [2859](FuelLabs/fuel-core#2859): Removed DA
compression from off-chain worker in favor of dedicated compression
service in `fuel-core-bin`.

## What's Changed
* Rework `TxStatusManager` tests by @rafal-ch in
FuelLabs/fuel-core#2871
* fix(storage): custom impl of EnumCount for MerkleizedColumn by @rymnc
in FuelLabs/fuel-core#2875
* Update network versions on README by @github-actions in
FuelLabs/fuel-core#2889
* fix(version-compatibility): pin async-graphql to 7.0.15 by @rymnc in
FuelLabs/fuel-core#2891
* Fix proptest for tx status manager by @rafal-ch in
FuelLabs/fuel-core#2893
* fault_proving(compression): glue code for integ into fuel-core by
@rymnc in FuelLabs/fuel-core#2859
* Link and activate preconfirmations and add integrations tests by
@AurelienFT in FuelLabs/fuel-core#2848
* refactor: Get rid of `Deref` impl on `ImportResult` by introducing
wrapper type. by @netrome in
FuelLabs/fuel-core#2900
* fix(compression_service): post merge reviews by @rymnc in
FuelLabs/fuel-core#2895
* Listen status updates from in TxStatusManager in TxPool by @AurelienFT
in FuelLabs/fuel-core#2882
* chore(compression): include registry root in compressed block header
by @rymnc in FuelLabs/fuel-core#2909
* Improve TxStatusManager tests coverage by @AurelienFT in
FuelLabs/fuel-core#2911
* ci(benchmarks): run nightly benchmark and create PR by @rymnc in
FuelLabs/fuel-core#2915
* fix: Only cancel background work if primary RocksDB instance is
dropped by @netrome in FuelLabs/fuel-core#2918
* fix(ci): nightly benchmark by @rymnc in
FuelLabs/fuel-core#2922
* fix(ci): explicitly push before creating PR by @rymnc in
FuelLabs/fuel-core#2926
* Add allow_partial parameter to the "coins to spend" query by
@AurelienFT in FuelLabs/fuel-core#2912
* fix(compression): improve robustness on startup and shutdown by @rymnc
in FuelLabs/fuel-core#2923
* chore(compression): metrics for compression service by @rymnc in
FuelLabs/fuel-core#2920
* chore(compression): pass compression config by reference by @rymnc in
FuelLabs/fuel-core#2931
* Dry run execution tracing by @Dentosal in
FuelLabs/fuel-core#2901
* Make preconfirmation optional on API endpoints by @AurelienFT in
FuelLabs/fuel-core#2925
* Notify P2P in case of bad preconfirmation message by @AurelienFT in
FuelLabs/fuel-core#2885
* chore(1.85): 1.85.0 readiness by @rymnc in
FuelLabs/fuel-core#2937
* Reject transactions for already spent coins by @xgreenx in
FuelLabs/fuel-core#2935
* feat: add tests for sparse and merkleized blueprint proof generation
by @netrome in FuelLabs/fuel-core#2914


**Full Changelog**:
FuelLabs/fuel-core@v0.42.0...v0.43.0

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
GeorgeBake added a commit to GeorgeBake/pipeline-cli that referenced this pull request Sep 29, 2025
## Version 0.43.0

### Breaking
- [2882](FuelLabs/fuel-core#2882): Changed the
type of the `resolved_outputs` for pre-confirmations. Now it also
includes `Utxoid`. `resolved_outputs` field contains only `Change` and
`Variable` outputs, so the `UtxoId` for them could be hard to derive, if
transaction has known inputs. This information should help to create
dependent transactions more easily.
- [2900](FuelLabs/fuel-core#2900): Get rid of
`Deref` impl on `ImportResult` by introducing wrapper type.
- [2909](FuelLabs/fuel-core#2909): Compressed
block headers now include a merkle root of the temporal registry after
compression was performed.
- [2931](FuelLabs/fuel-core#2931): In
`fuel-core-compression`, the `compress` function now takes a reference
to `Config` instead of the value.

### Added
- [2848](FuelLabs/fuel-core#2848): Link all
components of preconfirmations and add E2E tests.
- [2882](FuelLabs/fuel-core#2882): Listen to tx
status update from `TxStatusManager` in `TxPool`. Added logic to clean
up transactions from the pool if received squeezed out pre
confirmations. Added logic to promote transactions on sentry nodes when
receive pre-confirmation.
- [2885](FuelLabs/fuel-core#2885): Notify P2P
from `TxStatusManager` in case of bad preconfirmation message.
- [2901](FuelLabs/fuel-core#2901): New query
`dryRunRecordStorageReads` which works like `dryRun` but also returns
storage reads, allowing use of execution tracer or local debugger
- [2912](FuelLabs/fuel-core#2912): Add the
`allow_partial` parameter to the `coinsToSpend` query. The default value
of this parameters is `false` to preserve the old behavior. If set to
`true`, the query returns available coins instead of failing when the
requested amount is unavailable.
- [2914](FuelLabs/fuel-core#2914): Tests
ensuring the proof generation and validation of tables with sparse and
merklized blueprints work.

### Changed
- [2859](FuelLabs/fuel-core#2859): Swap out
off-chain worker compression for dedicated compression service in
`fuel-core-bin`.
- [2914](FuelLabs/fuel-core#2914): Break out
test logic to trait methods for `root_storage_tests` and
`basic_merkleized_storage_tests` test macros.
- [2925](FuelLabs/fuel-core#2925): Make
preconfirmation optional on API endpoints.

### Fixed
- [2918](FuelLabs/fuel-core#2918): Only cancel
background work if primary RocksDB instance is dropped
- [2935](FuelLabs/fuel-core#2935): The change
rejects transactions immediately, if they use spent coins. `TxPool` has
a SpentInputs LRU cache, storing all spent coins.

### Removed
- [2859](FuelLabs/fuel-core#2859): Removed DA
compression from off-chain worker in favor of dedicated compression
service in `fuel-core-bin`.

## What's Changed
* Rework `TxStatusManager` tests by @rafal-ch in
FuelLabs/fuel-core#2871
* fix(storage): custom impl of EnumCount for MerkleizedColumn by @rymnc
in FuelLabs/fuel-core#2875
* Update network versions on README by @github-actions in
FuelLabs/fuel-core#2889
* fix(version-compatibility): pin async-graphql to 7.0.15 by @rymnc in
FuelLabs/fuel-core#2891
* Fix proptest for tx status manager by @rafal-ch in
FuelLabs/fuel-core#2893
* fault_proving(compression): glue code for integ into fuel-core by
@rymnc in FuelLabs/fuel-core#2859
* Link and activate preconfirmations and add integrations tests by
@AurelienFT in FuelLabs/fuel-core#2848
* refactor: Get rid of `Deref` impl on `ImportResult` by introducing
wrapper type. by @netrome in
FuelLabs/fuel-core#2900
* fix(compression_service): post merge reviews by @rymnc in
FuelLabs/fuel-core#2895
* Listen status updates from in TxStatusManager in TxPool by @AurelienFT
in FuelLabs/fuel-core#2882
* chore(compression): include registry root in compressed block header
by @rymnc in FuelLabs/fuel-core#2909
* Improve TxStatusManager tests coverage by @AurelienFT in
FuelLabs/fuel-core#2911
* ci(benchmarks): run nightly benchmark and create PR by @rymnc in
FuelLabs/fuel-core#2915
* fix: Only cancel background work if primary RocksDB instance is
dropped by @netrome in FuelLabs/fuel-core#2918
* fix(ci): nightly benchmark by @rymnc in
FuelLabs/fuel-core#2922
* fix(ci): explicitly push before creating PR by @rymnc in
FuelLabs/fuel-core#2926
* Add allow_partial parameter to the "coins to spend" query by
@AurelienFT in FuelLabs/fuel-core#2912
* fix(compression): improve robustness on startup and shutdown by @rymnc
in FuelLabs/fuel-core#2923
* chore(compression): metrics for compression service by @rymnc in
FuelLabs/fuel-core#2920
* chore(compression): pass compression config by reference by @rymnc in
FuelLabs/fuel-core#2931
* Dry run execution tracing by @Dentosal in
FuelLabs/fuel-core#2901
* Make preconfirmation optional on API endpoints by @AurelienFT in
FuelLabs/fuel-core#2925
* Notify P2P in case of bad preconfirmation message by @AurelienFT in
FuelLabs/fuel-core#2885
* chore(1.85): 1.85.0 readiness by @rymnc in
FuelLabs/fuel-core#2937
* Reject transactions for already spent coins by @xgreenx in
FuelLabs/fuel-core#2935
* feat: add tests for sparse and merkleized blueprint proof generation
by @netrome in FuelLabs/fuel-core#2914


**Full Changelog**:
FuelLabs/fuel-core@v0.42.0...v0.43.0

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
BugSeeker84 added a commit to BugSeeker84/fuel-core that referenced this pull request Nov 16, 2025
## Version 0.43.0

### Breaking
- [2882](FuelLabs/fuel-core#2882): Changed the
type of the `resolved_outputs` for pre-confirmations. Now it also
includes `Utxoid`. `resolved_outputs` field contains only `Change` and
`Variable` outputs, so the `UtxoId` for them could be hard to derive, if
transaction has known inputs. This information should help to create
dependent transactions more easily.
- [2900](FuelLabs/fuel-core#2900): Get rid of
`Deref` impl on `ImportResult` by introducing wrapper type.
- [2909](FuelLabs/fuel-core#2909): Compressed
block headers now include a merkle root of the temporal registry after
compression was performed.
- [2931](FuelLabs/fuel-core#2931): In
`fuel-core-compression`, the `compress` function now takes a reference
to `Config` instead of the value.

### Added
- [2848](FuelLabs/fuel-core#2848): Link all
components of preconfirmations and add E2E tests.
- [2882](FuelLabs/fuel-core#2882): Listen to tx
status update from `TxStatusManager` in `TxPool`. Added logic to clean
up transactions from the pool if received squeezed out pre
confirmations. Added logic to promote transactions on sentry nodes when
receive pre-confirmation.
- [2885](FuelLabs/fuel-core#2885): Notify P2P
from `TxStatusManager` in case of bad preconfirmation message.
- [2901](FuelLabs/fuel-core#2901): New query
`dryRunRecordStorageReads` which works like `dryRun` but also returns
storage reads, allowing use of execution tracer or local debugger
- [2912](FuelLabs/fuel-core#2912): Add the
`allow_partial` parameter to the `coinsToSpend` query. The default value
of this parameters is `false` to preserve the old behavior. If set to
`true`, the query returns available coins instead of failing when the
requested amount is unavailable.
- [2914](FuelLabs/fuel-core#2914): Tests
ensuring the proof generation and validation of tables with sparse and
merklized blueprints work.

### Changed
- [2859](FuelLabs/fuel-core#2859): Swap out
off-chain worker compression for dedicated compression service in
`fuel-core-bin`.
- [2914](FuelLabs/fuel-core#2914): Break out
test logic to trait methods for `root_storage_tests` and
`basic_merkleized_storage_tests` test macros.
- [2925](FuelLabs/fuel-core#2925): Make
preconfirmation optional on API endpoints.

### Fixed
- [2918](FuelLabs/fuel-core#2918): Only cancel
background work if primary RocksDB instance is dropped
- [2935](FuelLabs/fuel-core#2935): The change
rejects transactions immediately, if they use spent coins. `TxPool` has
a SpentInputs LRU cache, storing all spent coins.

### Removed
- [2859](FuelLabs/fuel-core#2859): Removed DA
compression from off-chain worker in favor of dedicated compression
service in `fuel-core-bin`.

## What's Changed
* Rework `TxStatusManager` tests by @rafal-ch in
FuelLabs/fuel-core#2871
* fix(storage): custom impl of EnumCount for MerkleizedColumn by @rymnc
in FuelLabs/fuel-core#2875
* Update network versions on README by @github-actions in
FuelLabs/fuel-core#2889
* fix(version-compatibility): pin async-graphql to 7.0.15 by @rymnc in
FuelLabs/fuel-core#2891
* Fix proptest for tx status manager by @rafal-ch in
FuelLabs/fuel-core#2893
* fault_proving(compression): glue code for integ into fuel-core by
@rymnc in FuelLabs/fuel-core#2859
* Link and activate preconfirmations and add integrations tests by
@AurelienFT in FuelLabs/fuel-core#2848
* refactor: Get rid of `Deref` impl on `ImportResult` by introducing
wrapper type. by @netrome in
FuelLabs/fuel-core#2900
* fix(compression_service): post merge reviews by @rymnc in
FuelLabs/fuel-core#2895
* Listen status updates from in TxStatusManager in TxPool by @AurelienFT
in FuelLabs/fuel-core#2882
* chore(compression): include registry root in compressed block header
by @rymnc in FuelLabs/fuel-core#2909
* Improve TxStatusManager tests coverage by @AurelienFT in
FuelLabs/fuel-core#2911
* ci(benchmarks): run nightly benchmark and create PR by @rymnc in
FuelLabs/fuel-core#2915
* fix: Only cancel background work if primary RocksDB instance is
dropped by @netrome in FuelLabs/fuel-core#2918
* fix(ci): nightly benchmark by @rymnc in
FuelLabs/fuel-core#2922
* fix(ci): explicitly push before creating PR by @rymnc in
FuelLabs/fuel-core#2926
* Add allow_partial parameter to the "coins to spend" query by
@AurelienFT in FuelLabs/fuel-core#2912
* fix(compression): improve robustness on startup and shutdown by @rymnc
in FuelLabs/fuel-core#2923
* chore(compression): metrics for compression service by @rymnc in
FuelLabs/fuel-core#2920
* chore(compression): pass compression config by reference by @rymnc in
FuelLabs/fuel-core#2931
* Dry run execution tracing by @Dentosal in
FuelLabs/fuel-core#2901
* Make preconfirmation optional on API endpoints by @AurelienFT in
FuelLabs/fuel-core#2925
* Notify P2P in case of bad preconfirmation message by @AurelienFT in
FuelLabs/fuel-core#2885
* chore(1.85): 1.85.0 readiness by @rymnc in
FuelLabs/fuel-core#2937
* Reject transactions for already spent coins by @xgreenx in
FuelLabs/fuel-core#2935
* feat: add tests for sparse and merkleized blueprint proof generation
by @netrome in FuelLabs/fuel-core#2914


**Full Changelog**:
FuelLabs/fuel-core@v0.42.0...v0.43.0

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no changelog Skip the CI check of the changelog modification

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Can we be clearer in these tests under what conditions the different scenarios are met. i.e. put these in terms of "given/when/then".

5 participants