Skip to content

Refactor instance tests around a network harness - #508

Open
samliok wants to merge 6 commits into
transition-listenerfrom
instance-test-refactor
Open

Refactor instance tests around a network harness#508
samliok wants to merge 6 commits into
transition-listenerfrom
instance-test-refactor

Conversation

@samliok

@samliok samliok commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

Final PR of the cleanup-instance stack (4/4), on top of the transition listener PR.

  • All scaffolding moves to instance_testhelpers_test.go, rebuilt around a network harness: addNode, acceptNewBlock, waitUntilSealingBlock. The queue-based inMemNetwork is replaced by instanceComm, which delivers messages directly and re-parses blocks so recipients do not share mutable canoto state.
  • instance_test.go becomes short scenario tests. Epoch sealing tests now rely on production approval/aux info dissemination instead of hand-injecting approvals (removing the old TODO).
  • New coverage: validator set unchanged/decreased, a validator skipping an epoch, and signer-set assertions proving a promoted non-validator contributes its approval.
  • TestParseBlockSizeMatchesBytes moves verbatim to external_test.go next to external.go.
  • TestNonValidator_StaysNonValidator (replacing TestInstanceNonValidatorBootstraps) is skipped pending offline-node timeouts, and TestInstanceRestartAcrossEpochs is dropped (the node.restart() helper remains unused).

@samliok
samliok force-pushed the instance-test-refactor branch from 97c53ab to d147e3d Compare August 19, 2026 18:25
@samliok
samliok marked this pull request as ready for review August 20, 2026 21:53
@samliok samliok closed this Aug 21, 2026
@samliok
samliok force-pushed the instance-test-refactor branch from 4bb3bc9 to 5040547 Compare August 21, 2026 15:15
@samliok samliok reopened this Aug 21, 2026
Comment thread instance_test.go
// order to do so.
// We then check does so by checking they participated in signing
// Equivalent test as the previous TestInstanceMixedNodeType.
func TestNonValidator_BecomesValidator(t *testing.T) {

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

equivalent to the previous: TestInstanceMixedNodeType

Comment thread instance_test.go
// TestNonValidator_StaysNonValidator ensures that a non-validator does not restart when it is processing
// previous epoch changes.
// Equivalent to TestInstanceNonValidatorBootstraps
func TestNonValidator_StaysNonValidator(t *testing.T) {

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

previously was TestInstanceNonValidatorBootstraps

Comment thread instance_test.go
// then it is no longer a validator, and finally it is
// Equivalent to: TestInstanceValidatorSkipsAnEpoch. This also starts a validator when the tip is a sealing block so it covers an edge
// case previously caught from the logging test.
func TestInstanceValidatorSkipsAnEpoch(t *testing.T) {

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Equivalent to: TestInstanceValidatorSkipsAnEpoch. This also starts a validator when the tip is a sealing block so it covers an edge case previously caught from the logging test.

@samliok
samliok force-pushed the instance-test-refactor branch 2 times, most recently from 7ff7591 to ed0e6d5 Compare August 21, 2026 15:43
@samliok
samliok force-pushed the instance-test-refactor branch from ed0e6d5 to ac05817 Compare August 21, 2026 15:56
Replace the queue-based inMemNetwork with a network harness whose instanceComm
delivers messages directly and re-parses blocks so recipients do not share
canoto state. Scenario tests shrink to short flows against the harness, and
epoch sealing tests rely on production approval dissemination instead of
injecting approvals. Move TestParseBlockSizeMatchesBytes next to external.go.
@samliok
samliok force-pushed the instance-test-refactor branch from ac05817 to 070a524 Compare August 21, 2026 16:01
@samliok samliok linked an issue Aug 21, 2026 that may be closed by this pull request
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.

Test flake in TestInstanceRestartAcrossEpochs

1 participant