Skip to content

tests: minor patchbay test improvements#4091

Merged
Frando merged 5 commits into
mainfrom
Frando/patchbay-fixes
Apr 9, 2026
Merged

tests: minor patchbay test improvements#4091
Frando merged 5 commits into
mainfrom
Frando/patchbay-fixes

Conversation

@Frando
Copy link
Copy Markdown
Member

@Frando Frando commented Apr 9, 2026

Description

  • Collect nextest output in the downloadable dump together with the testdir for easier debugging
  • Remove stale "currently ignored" comments
  • Add explicit connection closing to all tests
  • Increase timeouts for degrade tests
  • Fix formatting by reducing info! line length in async blocks so that rustfmt doesn't silently ignore the block

@Frando Frando requested a review from matheus23 April 9, 2026 10:06
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 9, 2026

Documentation for this PR has been generated and is available at: https://n0-computer.github.io/iroh/pr/4091/docs/iroh/

Last updated: 2026-04-09T20:15:51Z

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 9, 2026

Netsim report & logs for this PR have been generated and is available at: LOGS
This report will remain available for 3 days.

Last updated for commit: f475a6e

Copy link
Copy Markdown
Member

@matheus23 matheus23 left a comment

Choose a reason for hiding this comment

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

I don't understand where we call Endpoint::close in this version.

We should be calling Endpoint::close to ensure we actually properly send the close frame.

With the current version this kinda works out because you can "wait" for the conn.closed().await on the other side "out-of-band" via the barrier as the communication mechanism.

But we don't need the barrier at all, if we just endpoint.close().await on both sides of Pair::run.
You seem to intentionally avoid doing this, what's the reasoning for that?

@n0bot n0bot Bot added this to iroh Apr 9, 2026
@github-project-automation github-project-automation Bot moved this to 🏗 In progress in iroh Apr 9, 2026
@Frando
Copy link
Copy Markdown
Member Author

Frando commented Apr 9, 2026

I don't understand where we call Endpoint::close in this version.

We don't. We also don't on main. I removed it after a suggestion from @flub that we don't need it, because we are not testing for closing behavior but for holepunching here. Removing the endpoint close makes the tests run faster, too.

All tests await connection.closed() on one side before the run function returns, and the barrier makes sure no endpoint is dropped before both run functions are complete. Afterwards, the test is considered complete, and both endpoints are dropped dead on the floor.

I can change it back to calling endpoint.close() but I think I agree with flub that it is cleaner and faster not to await this if the tests are not about testing shutdown behavior.

@matheus23
Copy link
Copy Markdown
Member

matheus23 commented Apr 9, 2026

We don't. We also don't on main. I removed it after a suggestion from @flub that we don't need it, because we are not testing for closing behavior but for holepunching here. Removing the endpoint close makes the tests run faster, too.

I see. I intentionally added it back, thinking "we don't close properly, so obviously this will take longer than necessary". The idea being here that if we don't close properly, we might not even send the close message, leaving the other side hanging.

Can you add a comment next the barrier use, essentially explaining that we use this as an alternative mechanism to Endpoint::close, so we avoid having to wait for the draining period (which can get quite long in tests with lots of loss & delay).
Otherwise I'll just look at this in a month and think "we should actually call Endpoint::close!".

@flub
Copy link
Copy Markdown
Contributor

flub commented Apr 9, 2026

FWIW I'd love those patchbay close tests on noq ;)

@Frando Frando merged commit 0cc2441 into main Apr 9, 2026
30 of 34 checks passed
@github-project-automation github-project-automation Bot moved this from 🏗 In progress to ✅ Done in iroh Apr 9, 2026
@matheus23 matheus23 deleted the Frando/patchbay-fixes branch April 10, 2026 08:25
eleboucher pushed a commit to eleboucher/towonel that referenced this pull request Apr 18, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [iroh](https://github.com/n0-computer/iroh) | workspace.dependencies | minor | `0.97.0` → `0.98.0` |

---

### Release Notes

<details>
<summary>n0-computer/iroh (iroh)</summary>

### [`v0.98.0`](https://github.com/n0-computer/iroh/blob/HEAD/CHANGELOG.md#0980---2026-04-17)

[Compare Source](n0-computer/iroh@v0.97.0...v0.98.0)

##### ⛰️  Features

- *(iroh)* Avoid allocations in `AddrFilter` ([#&#8203;4018](n0-computer/iroh#4018)) - ([d26cbd2](n0-computer/iroh@d26cbd2))
- *(iroh)* Pluggable crypto backends ([#&#8203;3992](n0-computer/iroh#3992)) - ([387c2e4](n0-computer/iroh@387c2e4))
- *(iroh)* Add ability to configure external addrs ([#&#8203;4098](n0-computer/iroh#4098)) - ([372aab9](n0-computer/iroh@372aab9))
- *(iroh)* Do not advertise deprecated IPv6 addrs ([#&#8203;4106](n0-computer/iroh#4106)) - ([b2b1d46](n0-computer/iroh@b2b1d46))
- *(iroh-relay)* Expose more metrics on the relay server ([#&#8203;4085](n0-computer/iroh#4085)) - ([ee844a6](n0-computer/iroh@ee844a6))
- Expose the new fn decrypt on noq. ([#&#8203;4002](n0-computer/iroh#4002)) - ([197d8db](n0-computer/iroh@197d8db))
- Update noq and net-tools to latest ([#&#8203;4088](n0-computer/iroh#4088)) - ([159a5cf](n0-computer/iroh@159a5cf))
- Rate limiting in router ([#&#8203;3951](n0-computer/iroh#3951)) - ([ea7a634](n0-computer/iroh@ea7a634))
- Update relay protocol to iroh-relay-v2, add new Health frame, test protocol update mechanism ([#&#8203;3955](n0-computer/iroh#3955)) - ([0a22d76](n0-computer/iroh@0a22d76))
- Update to noq\@&#8203;0.18 ([#&#8203;4121](n0-computer/iroh#4121)) - ([72e4538](n0-computer/iroh@72e4538))
- Vendor pkarr implementation ([#&#8203;4026](n0-computer/iroh#4026)) - ([3ab6222](n0-computer/iroh@3ab6222))

##### 🐛 Bug Fixes

- *(ci)* Install cmake and nasm for aws-lc-sys on Windows ([#&#8203;4032](n0-computer/iroh#4032)) - ([405de1d](n0-computer/iroh@405de1d))
- *(iroh)* \[**breaking**] Faster relay health check after network change ([#&#8203;4041](n0-computer/iroh#4041)) - ([b11b0eb](n0-computer/iroh@b11b0eb))
- *(iroh)* `Endpoint::online` should only return once connected to a relay ([#&#8203;4115](n0-computer/iroh#4115)) - ([3424c6d](n0-computer/iroh@3424c6d))
- *(iroh)* \[**breaking**] Don't stop address lookup when one service errors ([#&#8203;4126](n0-computer/iroh#4126)) - ([321443d](n0-computer/iroh@321443d))
- *(iroh)* Don't falsely report home relay as connected on change ([#&#8203;4136](n0-computer/iroh#4136)) - ([1b04d34](n0-computer/iroh@1b04d34))
- *(iroh-relay)* Send EndpointGone message to the right peers ([#&#8203;4079](n0-computer/iroh#4079)) - ([6be4b3c](n0-computer/iroh@6be4b3c))
- *(iroh-relay)* Treat frames not allowed in a protocol version as error ([#&#8203;4127](n0-computer/iroh#4127)) - ([1c92a39](n0-computer/iroh@1c92a39))
- Improve holepunching after network changes ([#&#8203;3928](n0-computer/iroh#3928)) - ([cc21f51](n0-computer/iroh@cc21f51))
- Poll for default route with exponential backoff after network change ([#&#8203;4039](n0-computer/iroh#4039)) - ([dc01a77](n0-computer/iroh@dc01a77))
- Modify test\_ip\_wins\_over\_custom so it is a noop if no ip transport is… ([#&#8203;4048](n0-computer/iroh#4048)) - ([b141e02](n0-computer/iroh@b141e02))
- Increase path idle timeouts and configure relay paths ([#&#8203;4038](n0-computer/iroh#4038)) - ([eba6afc](n0-computer/iroh@eba6afc))
- Handle wine properly ([#&#8203;3902](n0-computer/iroh#3902)) - ([8bf7002](n0-computer/iroh@8bf7002))
- Set default crypto provider for iroh-relay binary ([#&#8203;4087](n0-computer/iroh#4087)) - ([2433645](n0-computer/iroh@2433645))

##### 🚜 Refactor

- *(iroh)* \[**breaking**] Improve address lookup registry ([#&#8203;4130](n0-computer/iroh#4130)) - ([481c870](n0-computer/iroh@481c870))
- *(iroh, iroh-relay)* \[**breaking**] Mark public types as non\_exhaustive ([#&#8203;4107](n0-computer/iroh#4107)) - ([86d3ac6](n0-computer/iroh@86d3ac6))
- *(iroh-base)* \[**breaking**] Don't expose third-party error types in iroh-base ([#&#8203;4073](n0-computer/iroh#4073)) - ([d803dfe](n0-computer/iroh@d803dfe))
- *(iroh-base)* \[**breaking**] Rename `CustomAddr::as_vec`  to `CustomAddr::to_vec` and improve docs ([#&#8203;4074](n0-computer/iroh#4074)) - ([3077f17](n0-computer/iroh@3077f17))
- *(iroh-base)* \[**breaking**] Change `SecretKey::generate` to not take an `Rng` arg ([#&#8203;4075](n0-computer/iroh#4075)) - ([36781ad](n0-computer/iroh@36781ad))
- *(iroh-relay)* \[**breaking**] Proper timeouts on relay connections ([#&#8203;4083](n0-computer/iroh#4083)) - ([79bb0e4](n0-computer/iroh@79bb0e4))
- Use latest noq api ([#&#8203;4057](n0-computer/iroh#4057)) - ([8af8370](n0-computer/iroh@8af8370))
- Remove needless alloc in relay server ([#&#8203;4084](n0-computer/iroh#4084)) - ([40b50a1](n0-computer/iroh@40b50a1))
- Move to\_z32/from\_z32 into iroh-base and remove EndpointIdExt trait ([#&#8203;4133](n0-computer/iroh#4133)) - ([382bf36](n0-computer/iroh@382bf36))

##### 🧪 Testing

- *(iroh)* Add patchbay test matrix for switching uplinks ([#&#8203;4095](n0-computer/iroh#4095)) - ([d72f1cb](n0-computer/iroh@d72f1cb))
- *(iroh)* Add more patchbay tests and improve existing tests ([#&#8203;4118](n0-computer/iroh#4118)) - ([f5ec24a](n0-computer/iroh@f5ec24a))
- *(iroh)* Improve patchbay NAT matrix ([#&#8203;4135](n0-computer/iroh#4135)) - ([2ad657a](n0-computer/iroh@2ad657a))
- Fix ip\_wins\_over\_custom flakiness ([#&#8203;4047](n0-computer/iroh#4047)) - ([174b58b](n0-computer/iroh@174b58b))
- Add patchbay tests ([#&#8203;3986](n0-computer/iroh#3986)) - ([2ab1240](n0-computer/iroh@2ab1240))
- Improve patchbay test setup ([#&#8203;4078](n0-computer/iroh#4078)) - ([9b01751](n0-computer/iroh@9b01751))
- Minor patchbay test improvements ([#&#8203;4091](n0-computer/iroh#4091)) - ([0cc2441](n0-computer/iroh@0cc2441))

##### ⚙️ Miscellaneous Tasks

- *(ci)* Move more CI jobs to self hosted runners ([#&#8203;4072](n0-computer/iroh#4072)) - ([54442c3](n0-computer/iroh@54442c3))
- *(iroh)* Update hickory to 0.26.0-beta.4 and use exact-version deps for prereleased crates ([#&#8203;4117](n0-computer/iroh#4117)) - ([f829593](n0-computer/iroh@f829593))
- *(iroh-bench)* Allow configuring the number of worker threads for each endpoint in iroh-bench ([#&#8203;4063](n0-computer/iroh#4063)) - ([065b448](n0-computer/iroh@065b448))
- Update to netwatch\@&#8203;0.16 and portmapper\@&#8203;0.16 ([#&#8203;4128](n0-computer/iroh#4128)) - ([24efedf](n0-computer/iroh@24efedf))
- Fix changelog generation - ([08c6454](n0-computer/iroh@08c6454))

##### Deps

- *(iroh)* Update patchbay to 0.5 ([#&#8203;4097](n0-computer/iroh#4097)) - ([811a062](n0-computer/iroh@811a062))
- Bump noq and net-tools ([#&#8203;4113](n0-computer/iroh#4113)) - ([184e378](n0-computer/iroh@184e378))

##### Examples

- *(iroh)* Allow to configure the receive window in the transfer example ([#&#8203;4082](n0-computer/iroh#4082)) - ([c865251](n0-computer/iroh@c865251))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJ0eXBlL21pbm9yIl19-->

Reviewed-on: https://git.erwanleboucher.dev/eleboucher/towonel/pulls/19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: ✅ Done

Development

Successfully merging this pull request may close these issues.

3 participants