wip: testing
This commit is contained in:
		| @@ -24,7 +24,10 @@ func enterStateServer(data *peerData) peerState { | ||||
|  | ||||
| 	data.pingTimer.Reset(pingInterval) | ||||
|  | ||||
| 	state := &stateServer{peerData: data} | ||||
| 	state := &stateServer{ | ||||
| 		peerData: data, | ||||
| 		lastSeen: time.Now(), | ||||
| 	} | ||||
| 	state.logf("==> Server") | ||||
| 	return state | ||||
| } | ||||
|   | ||||
| @@ -1,6 +1,9 @@ | ||||
| package peer | ||||
|  | ||||
| import "testing" | ||||
| import ( | ||||
| 	"testing" | ||||
| 	"time" | ||||
| ) | ||||
|  | ||||
| func TestStateServer_peerUpdate(t *testing.T) { | ||||
| 	h := NewPeerStateTestHarness() | ||||
| @@ -80,3 +83,82 @@ func TestStateServer_onSynRelayed(t *testing.T) { | ||||
| 		assertType[packetProbe](t, pkt.Packet) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestStateServer_onProbe(t *testing.T) { | ||||
| 	h := NewPeerStateTestHarness() | ||||
| 	h.ConfigServer_Relayed(t) | ||||
|  | ||||
| 	msg := controlMsg[packetProbe]{ | ||||
| 		SrcIP: 3, | ||||
| 		Packet: packetProbe{ | ||||
| 			TraceID: newTraceID(), | ||||
| 		}, | ||||
| 	} | ||||
| 	h.Sent = h.Sent[:0] | ||||
|  | ||||
| 	h.OnProbe(msg) | ||||
| 	assertEqual(t, len(h.Sent), 0) | ||||
| } | ||||
|  | ||||
| func TestStateServer_onProbe_valid(t *testing.T) { | ||||
| 	h := NewPeerStateTestHarness() | ||||
| 	h.ConfigServer_Relayed(t) | ||||
|  | ||||
| 	msg := controlMsg[packetProbe]{ | ||||
| 		SrcIP:   3, | ||||
| 		SrcAddr: addrPort4(1, 2, 3, 4, 100), | ||||
| 		Packet: packetProbe{ | ||||
| 			TraceID: newTraceID(), | ||||
| 		}, | ||||
| 	} | ||||
| 	h.Sent = h.Sent[:0] | ||||
|  | ||||
| 	h.OnProbe(msg) | ||||
| 	assertEqual(t, len(h.Sent), 1) | ||||
| 	assertType[packetProbe](t, h.Sent[0].Packet) | ||||
| 	assertEqual(t, h.Sent[0].Peer.DirectAddr, msg.SrcAddr) | ||||
| } | ||||
|  | ||||
| func TestStateServer_onPing(t *testing.T) { | ||||
| 	h := NewPeerStateTestHarness() | ||||
| 	h.ConfigServer_Relayed(t) | ||||
| 	h.Sent = h.Sent[:0] | ||||
| 	h.OnPingTimer() | ||||
| 	assertEqual(t, len(h.Sent), 0) | ||||
| 	assertType[*stateServer](t, h.State) | ||||
| } | ||||
|  | ||||
| func TestStateServer_onPing_timeout(t *testing.T) { | ||||
| 	h := NewPeerStateTestHarness() | ||||
| 	h.ConfigServer_Relayed(t) | ||||
|  | ||||
| 	h.Sent = h.Sent[:0] | ||||
| 	state := assertType[*stateServer](t, h.State) | ||||
| 	state.staged.Up = true | ||||
| 	state.lastSeen = time.Now().Add(-2 * timeoutInterval) | ||||
|  | ||||
| 	h.OnPingTimer() | ||||
| 	state = assertType[*stateServer](t, h.State) | ||||
| 	assertEqual(t, len(h.Sent), 0) | ||||
| 	assertEqual(t, state.staged.Up, false) | ||||
| } | ||||
|  | ||||
| func TestStateServer_onLocalDiscovery(t *testing.T) { | ||||
| 	h := NewPeerStateTestHarness() | ||||
| 	h.ConfigServer_Relayed(t) | ||||
|  | ||||
| 	msg := controlMsg[packetLocalDiscovery]{ | ||||
| 		SrcIP:   3, | ||||
| 		SrcAddr: addrPort4(1, 2, 3, 4, 100), | ||||
| 	} | ||||
| 	h.OnLocalDiscovery(msg) | ||||
| 	assertType[*stateServer](t, h.State) | ||||
| } | ||||
|  | ||||
| func TestStateServer_onAck(t *testing.T) { | ||||
| 	h := NewPeerStateTestHarness() | ||||
| 	h.ConfigServer_Relayed(t) | ||||
| 	msg := controlMsg[packetAck]{} | ||||
| 	h.OnAck(msg) | ||||
| 	assertType[*stateServer](t, h.State) | ||||
| } | ||||
|   | ||||
| @@ -59,10 +59,18 @@ func (h *PeerStateTestHarness) OnSyn(msg controlMsg[packetSyn]) { | ||||
| 	h.State = h.State.OnMsg(msg) | ||||
| } | ||||
|  | ||||
| func (h *PeerStateTestHarness) OnAck(msg controlMsg[packetAck]) { | ||||
| 	h.State = h.State.OnMsg(msg) | ||||
| } | ||||
|  | ||||
| func (h *PeerStateTestHarness) OnProbe(msg controlMsg[packetProbe]) { | ||||
| 	h.State = h.State.OnMsg(msg) | ||||
| } | ||||
|  | ||||
| func (h *PeerStateTestHarness) OnLocalDiscovery(msg controlMsg[packetLocalDiscovery]) { | ||||
| 	h.State = h.State.OnMsg(msg) | ||||
| } | ||||
|  | ||||
| func (h *PeerStateTestHarness) OnPingTimer() { | ||||
| 	h.State = h.State.OnMsg(pingTimerMsg{}) | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user