wip: cleanup and testing
This commit is contained in:
		| @@ -30,3 +30,53 @@ func TestStateServer_onInit(t *testing.T) { | ||||
| 	assertEqual(t, msg.Packet.TraceID, resp.TraceID) | ||||
| 	assertEqual(t, resp.Version, version) | ||||
| } | ||||
|  | ||||
| func TestStateServer_onSynDirect(t *testing.T) { | ||||
| 	h := NewPeerStateTestHarness() | ||||
| 	h.ConfigServer_Public(t) | ||||
|  | ||||
| 	msg := controlMsg[packetSyn]{ | ||||
| 		SrcIP:   3, | ||||
| 		SrcAddr: addrPort4(1, 2, 3, 4, 1000), | ||||
| 		Packet: packetSyn{ | ||||
| 			TraceID: newTraceID(), | ||||
| 			Direct:  true, | ||||
| 		}, | ||||
| 	} | ||||
|  | ||||
| 	msg.Packet.PossibleAddrs[0] = addrPort4(1, 1, 1, 1, 1000) | ||||
| 	msg.Packet.PossibleAddrs[1] = addrPort4(1, 1, 1, 2, 2000) | ||||
|  | ||||
| 	h.OnSyn(msg) | ||||
| 	assertEqual(t, len(h.Sent), 1) | ||||
| 	assertEqual(t, h.Sent[0].Peer.DirectAddr, msg.SrcAddr) | ||||
| 	resp := assertType[packetAck](t, h.Sent[0].Packet) | ||||
| 	assertEqual(t, msg.Packet.TraceID, resp.TraceID) | ||||
| } | ||||
|  | ||||
| func TestStateServer_onSynRelayed(t *testing.T) { | ||||
| 	h := NewPeerStateTestHarness() | ||||
| 	h.ConfigServer_Relayed(t) | ||||
|  | ||||
| 	msg := controlMsg[packetSyn]{ | ||||
| 		SrcIP:   3, | ||||
| 		SrcAddr: addrPort4(1, 2, 3, 4, 1000), | ||||
| 		Packet: packetSyn{ | ||||
| 			TraceID: newTraceID(), | ||||
| 		}, | ||||
| 	} | ||||
|  | ||||
| 	msg.Packet.PossibleAddrs[0] = addrPort4(1, 1, 1, 1, 1000) | ||||
| 	msg.Packet.PossibleAddrs[1] = addrPort4(1, 1, 1, 2, 2000) | ||||
|  | ||||
| 	h.OnSyn(msg) | ||||
| 	assertEqual(t, len(h.Sent), 3) | ||||
| 	assertEqual(t, h.Sent[0].Peer.DirectAddr, msg.SrcAddr) | ||||
| 	resp := assertType[packetAck](t, h.Sent[0].Packet) | ||||
| 	assertEqual(t, msg.Packet.TraceID, resp.TraceID) | ||||
|  | ||||
| 	for i, pkt := range h.Sent[1:] { | ||||
| 		assertEqual(t, pkt.Peer.DirectAddr, msg.Packet.PossibleAddrs[i]) | ||||
| 		assertType[packetProbe](t, pkt.Packet) | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -9,6 +9,13 @@ func addrPort4(a, b, c, d byte, port uint16) netip.AddrPort { | ||||
| 	return netip.AddrPortFrom(netip.AddrFrom4([4]byte{a, b, c, d}), port) | ||||
| } | ||||
|  | ||||
| func assertNil(t *testing.T, err error) { | ||||
| 	t.Helper() | ||||
| 	if err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func assertType[T any](t *testing.T, obj any) T { | ||||
| 	t.Helper() | ||||
| 	x, ok := obj.(T) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user