refactor-for-testability #3
| @@ -105,8 +105,89 @@ func TestStateClient_onPing_timeout(t *testing.T) { | |||||||
| 	assertType[packetInit](t, h.Sent[0].Packet) | 	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)) | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user