all: add tests for PingRequest implementation
Unit tests for Change (IsEmpty, Merge, Type, PingNode constructor), ping tracker (register/complete/cancel lifecycle, concurrency, latency), and end-to-end servertests exercising the full round-trip with real controlclient.Direct instances. Updates #2902 Updates #2129
This commit is contained in:
parent
b113655b71
commit
97778c9930
3 changed files with 367 additions and 0 deletions
|
|
@ -89,6 +89,11 @@ func TestChange_IsEmpty(t *testing.T) {
|
|||
response: Change{PeerPatches: []*tailcfg.PeerChange{{}}},
|
||||
want: false,
|
||||
},
|
||||
{
|
||||
name: "PingRequest not empty",
|
||||
response: Change{PingRequest: &tailcfg.PingRequest{URL: "https://example.com"}},
|
||||
want: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
|
|
@ -263,6 +268,24 @@ func TestChange_Merge(t *testing.T) {
|
|||
r2: Change{TargetNode: 42},
|
||||
want: Change{TargetNode: 42, IncludeSelf: true},
|
||||
},
|
||||
{
|
||||
name: "PingRequest preserved from first",
|
||||
r1: Change{PingRequest: &tailcfg.PingRequest{URL: "first"}},
|
||||
r2: Change{IncludeSelf: true},
|
||||
want: Change{PingRequest: &tailcfg.PingRequest{URL: "first"}, IncludeSelf: true},
|
||||
},
|
||||
{
|
||||
name: "PingRequest preserved from second when first is nil",
|
||||
r1: Change{IncludeSelf: true},
|
||||
r2: Change{PingRequest: &tailcfg.PingRequest{URL: "second"}},
|
||||
want: Change{PingRequest: &tailcfg.PingRequest{URL: "second"}, IncludeSelf: true},
|
||||
},
|
||||
{
|
||||
name: "PingRequest first wins when both set",
|
||||
r1: Change{PingRequest: &tailcfg.PingRequest{URL: "first"}},
|
||||
r2: Change{PingRequest: &tailcfg.PingRequest{URL: "second"}},
|
||||
want: Change{PingRequest: &tailcfg.PingRequest{URL: "first"}},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
|
|
@ -417,6 +440,14 @@ func TestChange_Type(t *testing.T) {
|
|||
response: PolicyOnly(),
|
||||
want: "config",
|
||||
},
|
||||
{
|
||||
name: "ping request",
|
||||
response: Change{
|
||||
PingRequest: &tailcfg.PingRequest{URL: "https://example.com"},
|
||||
TargetNode: 1,
|
||||
},
|
||||
want: "ping",
|
||||
},
|
||||
{
|
||||
name: "empty is unknown",
|
||||
response: Change{},
|
||||
|
|
@ -432,6 +463,17 @@ func TestChange_Type(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestPingNode(t *testing.T) {
|
||||
pr := &tailcfg.PingRequest{URL: "https://example.com/ping", URLIsNoise: true, Log: true}
|
||||
r := PingNode(42, pr)
|
||||
assert.Equal(t, "ping node", r.Reason)
|
||||
assert.Equal(t, types.NodeID(42), r.TargetNode)
|
||||
assert.Equal(t, pr, r.PingRequest)
|
||||
assert.True(t, r.IsTargetedToNode())
|
||||
assert.False(t, r.IsEmpty())
|
||||
assert.Equal(t, "ping", r.Type())
|
||||
}
|
||||
|
||||
func TestUniqueNodeIDs(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue