ipn/ipnlocal: add wireguard session state metrics + publish on IPN bus
Updates #19989 Updates tailscale/corp#42874 Change-Id: I843ed95bc7b0f5cd38ba1467332c6b022901e254 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
committed by
Brad Fitzpatrick
parent
ae743642d9
commit
6596d237a3
@@ -13,6 +13,7 @@ import (
|
||||
"sync"
|
||||
"testing"
|
||||
|
||||
"github.com/tailscale/wireguard-go/device"
|
||||
"go4.org/mem"
|
||||
"tailscale.com/cmd/testwrapper/flakytest"
|
||||
"tailscale.com/control/controlknobs"
|
||||
@@ -35,6 +36,38 @@ import (
|
||||
"tailscale.com/wgengine/wgcfg"
|
||||
)
|
||||
|
||||
func TestPeerWireGuardStateValuesMatchWireguardGo(t *testing.T) {
|
||||
const unknownPeerSessionState device.PeerSessionState = 255
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
wg device.PeerSessionState
|
||||
want PeerWireGuardState
|
||||
}{
|
||||
{"none", device.PeerSessionNone, PeerWireGuardStateNone},
|
||||
{"handshake", device.PeerSessionHandshake, PeerWireGuardStateHandshake},
|
||||
{"established", device.PeerSessionEstablished, PeerWireGuardStateEstablished},
|
||||
{"expired", device.PeerSessionExpired, PeerWireGuardStateExpired},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
if got := peerWireGuardStateFromDevice(tt.wg); got != tt.want {
|
||||
t.Fatalf("converted state = %v; want %v", got, tt.want)
|
||||
}
|
||||
if got, want := uint8(tt.wg), uint8(tt.want); got != want {
|
||||
t.Fatalf("wireguard-go const = %v; want %v", got, want)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
defer func() {
|
||||
if recover() == nil {
|
||||
t.Fatal("expected panic for unknown wireguard-go state")
|
||||
}
|
||||
}()
|
||||
_ = peerWireGuardStateFromDevice(unknownPeerSessionState)
|
||||
}
|
||||
|
||||
func nodeViews(v []*tailcfg.Node) []tailcfg.NodeView {
|
||||
nv := make([]tailcfg.NodeView, len(v))
|
||||
for i, n := range v {
|
||||
|
||||
Reference in New Issue
Block a user