From 1cd83dd098ca8782465ea182db04d7e6d704869a Mon Sep 17 00:00:00 2001 From: jdl Date: Fri, 28 Feb 2025 21:31:43 +0100 Subject: [PATCH] wip: testing, etc. --- peer/state-client_test.go | 87 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 84 insertions(+), 3 deletions(-) diff --git a/peer/state-client_test.go b/peer/state-client_test.go index 88f4010..25441e8 100644 --- a/peer/state-client_test.go +++ b/peer/state-client_test.go @@ -105,8 +105,89 @@ func TestStateClient_onPing_timeout(t *testing.T) { assertType[packetInit](t, h.Sent[0].Packet) } -// probe direct +func TestStateClient_onProbe_direct(t *testing.T) { + h := NewPeerStateTestHarness() + h.ConfigClientDirect(t) -// probe relayed - no match + h.Sent = h.Sent[:0] + probe := controlMsg[packetProbe]{ + Packet: packetProbe{ + TraceID: newTraceID(), + }, + } -// probe relayed - match + h.OnProbe(probe) + assertType[*stateClient](t, h.State) + assertEqual(t, len(h.Sent), 0) +} + +func TestStateClient_onProbe_noMatch(t *testing.T) { + h := NewPeerStateTestHarness() + h.ConfigClientRelayed(t) + + h.Sent = h.Sent[:0] + probe := controlMsg[packetProbe]{ + Packet: packetProbe{ + TraceID: newTraceID(), + }, + } + + h.OnProbe(probe) + assertType[*stateClient](t, h.State) + assertEqual(t, len(h.Sent), 0) +} + +func TestStateClient_onProbe_directUpgrade(t *testing.T) { + h := NewPeerStateTestHarness() + h.ConfigClientRelayed(t) + + state := assertType[*stateClient](t, h.State) + traceID := newTraceID() + state.probes[traceID] = sentProbe{ + SentAt: time.Now(), + Addr: addrPort4(1, 2, 3, 4, 500), + } + + probe := controlMsg[packetProbe]{ + Packet: packetProbe{TraceID: traceID}, + } + + assertEqual(t, h.Published.Direct, false) + h.Sent = h.Sent[:0] + h.OnProbe(probe) + assertEqual(t, h.Published.Direct, true) + + assertEqual(t, len(h.Sent), 1) + assertType[packetSyn](t, h.Sent[0].Packet) +} + +func TestStateClient_onLocalDiscovery_direct(t *testing.T) { + h := NewPeerStateTestHarness() + h.ConfigClientDirect(t) + + h.Sent = h.Sent[:0] + pkt := controlMsg[packetLocalDiscovery]{ + Packet: packetLocalDiscovery{}, + } + + h.OnLocalDiscovery(pkt) + assertType[*stateClient](t, h.State) + assertEqual(t, len(h.Sent), 0) +} + +func TestStateClient_onLocalDiscovery_relayed(t *testing.T) { + h := NewPeerStateTestHarness() + h.ConfigClientRelayed(t) + + h.Sent = h.Sent[:0] + pkt := controlMsg[packetLocalDiscovery]{ + SrcAddr: addrPort4(1, 2, 3, 4, 500), + Packet: packetLocalDiscovery{}, + } + + h.OnLocalDiscovery(pkt) + assertType[*stateClient](t, h.State) + assertEqual(t, len(h.Sent), 1) + assertType[packetProbe](t, h.Sent[0].Packet) + assertEqual(t, h.Sent[0].Peer.DirectAddr, addrPort4(1, 2, 3, 4, 456)) +}