Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add diffusion tests #4086

Merged
merged 17 commits into from
Oct 21, 2022
Merged

Add diffusion tests #4086

merged 17 commits into from
Oct 21, 2022

Conversation

coot
Copy link
Contributor

@coot coot commented Oct 19, 2022

Description

Added new tests:

  • prop_diffusion_target_active_local_below - a copy of a similar test of the
    outbound governor
  • prop_diffusion_async_demotions - a test which makes sure that if
    PeerStateActions report HotToCold demotion, the outbound governor will
    remove the peer from the active set.
  • unit_diffusion_async_demotions - a special case of the previous test, which
    reproduces the bug reported in Outbound governor does not remove a hot peer when mux errors #4064

The pull request refactors usage of traces by the diffusion tests, which
make it easier to get debugging output.

The pull request modifies keyedTimeout so that it does not ignores events
which did not timeout till the end of the simulation.

Requires #4004 to be merged first.

  • connection-manager: haddocks, code style & typos
  • net-sim: exported WithAddr
  • net-sim: protect from establishing connection twice
  • net-sim: code cleanup
  • diffusion-sim: added prop_diffusion_target_active_local_above
  • diffusion-sim: reproduce peer-state-action bug
  • diffusion-sim: set keep-alive and ping-pong intervals
  • diffusion-sim: refactor how a tracer is used
  • diffusion-sim: fix ping pong time limits
  • diffusion-sim: cleanup tracers
  • diffusion-sim: added debugTracer
  • peer-state-actions: export traces
  • signals: do not ignore tail in keyedTimeout
  • diffusion-sim: added async demotion test
  • diffusion-sim: refactor test cases

Checklist

  • Branch
    • Commit sequence broadly makes sense
    • Commits have useful messages
    • New tests are added if needed and existing tests are updated
    • If this branch changes Consensus and has any consequences for downstream repositories or end users, said changes must be documented in interface-CHANGELOG.md
    • If this branch changes Network and has any consequences for downstream repositories or end users, said changes must be documented in interface-CHANGELOG.md
    • If serialization changes, user-facing consequences (e.g. replay from genesis) are confirmed to be intentional.
  • Pull Request
    • Self-reviewed the diff
    • Useful pull request description at least containing the following information:
      • What does this PR change?
      • Why these changes were needed?
      • How does this affect downstream repositories and/or end-users?
      • Which ticket does this PR close (if any)? If it does, is it linked?
    • Reviewer requested

@coot coot linked an issue Oct 19, 2022 that may be closed by this pull request
5 tasks
@coot coot requested review from bolt12 and dcoutts October 19, 2022 09:43
Comment on lines +748 to +752
Just Connection { connState = SYN_SENT, connProvider }
| connProvider == localAddress ->
throwSTM (connectedIOError fd_)

Copy link
Contributor

Choose a reason for hiding this comment

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

Nice!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I am not sure if the error is the right one, I need to check what error real sockets would throw.

When we create a connection we set it's state to `SYN_SENT`, before it
is accepted by the other side, we could try to connect again.  In such
case we ought to error.
PingPong is used as a warm mini-protocol, and thus it's suspended in the
`StIdle` state.  For this reason it cannot have a timeout for this
state.
When `keyedTimeout` encounters the last event, let it include things
that haven't fired.
@coot coot force-pushed the coot/peer-selection-test-with-fix branch 2 times, most recently from aafaba9 to 954e16b Compare October 20, 2022 19:50
@coot coot force-pushed the coot/peer-selection-test-with-fix branch from 954e16b to 005a6c5 Compare October 20, 2022 20:21
Drop `diffusion` from test names.
Drop `multinodeSim` name space, but instead use `generators` name space.
This is especially useful when debugging a test counterexamples, when
additional constructors usually comes handy.
@coot coot force-pushed the coot/peer-selection-test-with-fix branch from 005a6c5 to 72caf70 Compare October 21, 2022 06:51
@coot
Copy link
Contributor Author

coot commented Oct 21, 2022

bors merge

@iohk-bors
Copy link
Contributor

iohk-bors bot commented Oct 21, 2022

@iohk-bors iohk-bors bot merged commit 0eeacec into master Oct 21, 2022
@iohk-bors iohk-bors bot deleted the coot/peer-selection-test-with-fix branch October 21, 2022 09:51
iohk-bors bot added a commit that referenced this pull request Nov 9, 2022
4120: Cherry picked network changes for cardano-node-1.35.5 release r=coot a=coot

This cherry-picked patches from the following PRs:

* #3794
* #3844
* #3785
* #3904
* #3915
* #3852
* #3970
* #3979
* #4015
* #4067
* #4004
* #4086
* #4113
* #4106
* #4127
* #4103

Also cherry-picked almost all the commits which modify GitHub actions:
* 18c5244 Run GitHub Actions on pull requests   
* 3adf5a9 Use newer version of io-sim           
* ee9b7a6 Fix GH Actions Windows CI: switch from pkgconf to pkg-config 
* e6cf074 github-actions: use `ubuntu-latest`   
* 9a8b959 Updated versions of github actions    
* fc8f8f0 Fix GH Actions Windows CI caching     
* 7f07c40 Windows Github Actions now use MSYS2  
* b21a7ce Fix chocolatey CI error
* #4134               

TODO:

* [x] bump versions of packages
* [x] input-output-hk/cardano-haskell-packages#84

Co-authored-by: Mark Tullsen <tullsen@galois.com>
Co-authored-by: Marcin Szamotulski <coot@coot.me>
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.

Create a test which could detect #4064
2 participants