Add assert func for verifying status, netmap and netcheck (#1723)
This commit is contained in:
parent
83769ba715
commit
00e7550e76
11 changed files with 534 additions and 18 deletions
|
@ -201,9 +201,15 @@ func (h *Headscale) handlePoll(
|
|||
return
|
||||
}
|
||||
|
||||
// TODO(kradalby): Figure out why patch changes does
|
||||
// not show up in output from `tailscale debug netmap`.
|
||||
// stateUpdate := types.StateUpdate{
|
||||
// Type: types.StatePeerChangedPatch,
|
||||
// ChangePatches: []*tailcfg.PeerChange{&change},
|
||||
// }
|
||||
stateUpdate := types.StateUpdate{
|
||||
Type: types.StatePeerChangedPatch,
|
||||
ChangePatches: []*tailcfg.PeerChange{&change},
|
||||
Type: types.StatePeerChanged,
|
||||
ChangeNodes: types.Nodes{node},
|
||||
}
|
||||
if stateUpdate.Valid() {
|
||||
ctx := types.NotifyCtx(context.Background(), "poll-nodeupdate-peers-patch", node.Hostname)
|
||||
|
|
|
@ -6,6 +6,7 @@ import (
|
|||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/google/go-cmp/cmp/cmpopts"
|
||||
"github.com/juanfont/headscale/hscontrol/util"
|
||||
"tailscale.com/tailcfg"
|
||||
"tailscale.com/types/key"
|
||||
)
|
||||
|
@ -366,3 +367,110 @@ func TestPeerChangeFromMapRequest(t *testing.T) {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestApplyPeerChange(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
nodeBefore Node
|
||||
change *tailcfg.PeerChange
|
||||
want Node
|
||||
}{
|
||||
{
|
||||
name: "hostinfo-and-netinfo-not-exists",
|
||||
nodeBefore: Node{},
|
||||
change: &tailcfg.PeerChange{
|
||||
DERPRegion: 1,
|
||||
},
|
||||
want: Node{
|
||||
Hostinfo: &tailcfg.Hostinfo{
|
||||
NetInfo: &tailcfg.NetInfo{
|
||||
PreferredDERP: 1,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "hostinfo-netinfo-not-exists",
|
||||
nodeBefore: Node{
|
||||
Hostinfo: &tailcfg.Hostinfo{
|
||||
Hostname: "test",
|
||||
},
|
||||
},
|
||||
change: &tailcfg.PeerChange{
|
||||
DERPRegion: 3,
|
||||
},
|
||||
want: Node{
|
||||
Hostinfo: &tailcfg.Hostinfo{
|
||||
Hostname: "test",
|
||||
NetInfo: &tailcfg.NetInfo{
|
||||
PreferredDERP: 3,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "hostinfo-netinfo-exists-derp-set",
|
||||
nodeBefore: Node{
|
||||
Hostinfo: &tailcfg.Hostinfo{
|
||||
Hostname: "test",
|
||||
NetInfo: &tailcfg.NetInfo{
|
||||
PreferredDERP: 999,
|
||||
},
|
||||
},
|
||||
},
|
||||
change: &tailcfg.PeerChange{
|
||||
DERPRegion: 2,
|
||||
},
|
||||
want: Node{
|
||||
Hostinfo: &tailcfg.Hostinfo{
|
||||
Hostname: "test",
|
||||
NetInfo: &tailcfg.NetInfo{
|
||||
PreferredDERP: 2,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "endpoints-not-set",
|
||||
nodeBefore: Node{},
|
||||
change: &tailcfg.PeerChange{
|
||||
Endpoints: []netip.AddrPort{
|
||||
netip.MustParseAddrPort("8.8.8.8:88"),
|
||||
},
|
||||
},
|
||||
want: Node{
|
||||
Endpoints: []netip.AddrPort{
|
||||
netip.MustParseAddrPort("8.8.8.8:88"),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "endpoints-set",
|
||||
nodeBefore: Node{
|
||||
Endpoints: []netip.AddrPort{
|
||||
netip.MustParseAddrPort("6.6.6.6:66"),
|
||||
},
|
||||
},
|
||||
change: &tailcfg.PeerChange{
|
||||
Endpoints: []netip.AddrPort{
|
||||
netip.MustParseAddrPort("8.8.8.8:88"),
|
||||
},
|
||||
},
|
||||
want: Node{
|
||||
Endpoints: []netip.AddrPort{
|
||||
netip.MustParseAddrPort("8.8.8.8:88"),
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
tt.nodeBefore.ApplyPeerChange(tt.change)
|
||||
|
||||
if diff := cmp.Diff(tt.want, tt.nodeBefore, util.Comparers...); diff != "" {
|
||||
t.Errorf("Patch unexpected result (-want +got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,10 @@ var IPComparer = cmp.Comparer(func(x, y netip.Addr) bool {
|
|||
return x.Compare(y) == 0
|
||||
})
|
||||
|
||||
var AddrPortComparer = cmp.Comparer(func(x, y netip.AddrPort) bool {
|
||||
return x == y
|
||||
})
|
||||
|
||||
var MkeyComparer = cmp.Comparer(func(x, y key.MachinePublic) bool {
|
||||
return x.String() == y.String()
|
||||
})
|
||||
|
@ -28,5 +32,5 @@ var DkeyComparer = cmp.Comparer(func(x, y key.DiscoPublic) bool {
|
|||
})
|
||||
|
||||
var Comparers []cmp.Option = []cmp.Option{
|
||||
IPComparer, PrefixComparer, MkeyComparer, NkeyComparer, DkeyComparer,
|
||||
IPComparer, PrefixComparer, AddrPortComparer, MkeyComparer, NkeyComparer, DkeyComparer,
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue