diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-10-11 15:42:52 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-10-11 15:43:06 +0200 |
| commit | 9d38418817d1894b31c93ece0113e503d82167cd (patch) | |
| tree | adf4c8126c90d60f6a16724d14eafb80f33d5289 /packages/meshbay-node/tests/test_lease_enforcement.py | |
| parent | b39e73cbb279ab0274e8cd0b84304a602fe1d5ef (diff) | |
| download | meshbay-9d38418817d1894b31c93ece0113e503d82167cd.tar.gz | |
feat(node): log what a transfer moved when it ends
One INFO line per lease: bytes, duration, rate, and the SCTP
association's window, round trip, losses and T3 expirations.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-node/tests/test_lease_enforcement.py')
| -rw-r--r-- | packages/meshbay-node/tests/test_lease_enforcement.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/packages/meshbay-node/tests/test_lease_enforcement.py b/packages/meshbay-node/tests/test_lease_enforcement.py index 2b1014b..7b636ac 100644 --- a/packages/meshbay-node/tests/test_lease_enforcement.py +++ b/packages/meshbay-node/tests/test_lease_enforcement.py @@ -273,3 +273,36 @@ async def test_the_sweeper_does_not_reclaim_a_transfer_that_is_moving(group): await _request(peer, _ids(group)[0], tr="t1") assert slots.leases["t1"].used is True await asyncio.sleep(0) + + +# ── the line the node logs when a transfer ends ───────────────────────────── + +async def test_a_served_chunk_is_counted_on_its_lease(group): + peer = _Session(group) + group["_peers"]["s1"] = peer + peer._do_transfer_open({"tr": "t1", "kind": DOWNLOAD, "bytes": 2_000_000}) + await _request(peer, _ids(group)[0], tr="t1") + await _request(peer, _ids(group)[0], tr="invented") + + lease = peer._slots().leases["t1"] + assert lease.moved == len(peer.chunks()[0]["ct"]) + line = peer._transfer_end_line(lease, "done") + assert line.startswith("transfer: end download t1 done 1.0 MB"), line + + +async def test_a_closed_transfer_is_logged_once(group): + peer = _Session(group) + group["_peers"]["s1"] = peer + lines: list[str] = [] + end_line = peer._transfer_end_line + peer._transfer_end_line = ( + lambda lease, reason: lines.append(end_line(lease, reason)) or lines[-1]) + + peer._do_transfer_open({"tr": "t1", "kind": DOWNLOAD, "bytes": 2_000_000}) + peer._do_transfer_open({"tr": "t2", "kind": DOWNLOAD, "bytes": 2_000_000}) + peer._do_transfer_close({"tr": "t1", "reason": "cancelled"}) + peer._release_transfers() + peer._release_transfers() + + assert [x.split()[3:5] for x in lines] == [ + ["t1", "cancelled"], ["t2", "session_gone"]], lines |