83 lines
2.0 KiB
Go
83 lines
2.0 KiB
Go
package peer
|
|
|
|
import "testing"
|
|
|
|
func TestStateServer_peerUpdate(t *testing.T) {
|
|
h := NewPeerStateTestHarness()
|
|
h.ConfigServer_Public(t)
|
|
h.PeerUpdate(nil)
|
|
assertType[*stateDisconnected](t, h.State)
|
|
}
|
|
|
|
func TestStateServer_onInit(t *testing.T) {
|
|
h := NewPeerStateTestHarness()
|
|
h.ConfigServer_Public(t)
|
|
|
|
msg := controlMsg[packetInit]{
|
|
SrcIP: 3,
|
|
SrcAddr: addrPort4(1, 2, 3, 4, 1000),
|
|
Packet: packetInit{
|
|
TraceID: newTraceID(),
|
|
Direct: true,
|
|
Version: 4,
|
|
},
|
|
}
|
|
|
|
h.OnInit(msg)
|
|
assertEqual(t, len(h.Sent), 1)
|
|
assertEqual(t, h.Sent[0].Peer.DirectAddr, msg.SrcAddr)
|
|
resp := assertType[packetInit](t, h.Sent[0].Packet)
|
|
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)
|
|
}
|
|
}
|