Skip to content

Commit dbffec4

Browse files
committed
test
1 parent 3466ba6 commit dbffec4

File tree

2 files changed

+71
-6
lines changed

2 files changed

+71
-6
lines changed

tailnet/telemetry.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,15 @@ type TelemetryStore struct {
3333

3434
cleanDerpMap *tailcfg.DERPMap
3535
cleanNetCheck *proto.Netcheck
36-
nodeID uint64
36+
nodeIDSelf uint64
3737
homeDerp int32
3838
application string
3939

4040
// nil if not connected
4141
connSetupTime *durationpb.Duration
4242
connectedIP *netip.Addr
4343
// 0 if not connected
44-
connectedNodeID uint64
44+
nodeIDRemote uint64
4545
}
4646

4747
func newTelemetryStore() (*TelemetryStore, error) {
@@ -64,8 +64,8 @@ func (b *TelemetryStore) newEvent() *proto.TelemetryEvent {
6464
Time: timestamppb.Now(),
6565
DerpMap: DERPMapToProto(b.cleanDerpMap),
6666
LatestNetcheck: b.cleanNetCheck,
67-
NodeIdSelf: b.nodeID,
68-
NodeIdRemote: b.connectedNodeID,
67+
NodeIdSelf: b.nodeIDSelf,
68+
NodeIdRemote: b.nodeIDRemote,
6969
HomeDerp: b.homeDerp,
7070
ConnectionSetup: b.connSetupTime,
7171
Application: b.application,
@@ -94,7 +94,7 @@ func (b *TelemetryStore) updateRemoteNodeIDLocked(nm *netmap.NetworkMap) {
9494
for _, p := range nm.Peers {
9595
for _, a := range p.Addresses {
9696
if a.Addr() == ip && a.IsSingleIP() {
97-
b.connectedNodeID = uint64(p.ID)
97+
b.nodeIDRemote = uint64(p.ID)
9898
}
9999
}
100100
}
@@ -145,7 +145,7 @@ func (b *TelemetryStore) updateByNodeLocked(n *tailcfg.Node) bool {
145145
if n == nil {
146146
return false
147147
}
148-
b.nodeID = uint64(n.ID)
148+
b.nodeIDSelf = uint64(n.ID)
149149
derpIP, err := netip.ParseAddrPort(n.DERP)
150150
if err != nil {
151151
return false

tailnet/telemetry_internal_test.go

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,82 @@
11
package tailnet
22

33
import (
4+
"fmt"
5+
"net/netip"
46
"testing"
7+
"time"
58

69
"github.com/stretchr/testify/require"
710
"tailscale.com/tailcfg"
11+
"tailscale.com/types/netmap"
812

913
"github.com/coder/coder/v2/tailnet/proto"
1014
)
1115

1216
func TestTelemetryStore(t *testing.T) {
1317
t.Parallel()
1418

19+
t.Run("CreateEvent", func(t *testing.T) {
20+
t.Parallel()
21+
22+
remotePrefix := netip.PrefixFrom(IP(), 128)
23+
remoteIP := remotePrefix.Addr()
24+
application := "test"
25+
26+
nm := &netmap.NetworkMap{
27+
SelfNode: &tailcfg.Node{
28+
ID: 0,
29+
DERP: "127.3.3.40:999",
30+
},
31+
Peers: []*tailcfg.Node{
32+
{
33+
ID: 1,
34+
Addresses: []netip.Prefix{
35+
netip.PrefixFrom(IP(), 128),
36+
netip.PrefixFrom(IP(), 128),
37+
},
38+
},
39+
{
40+
ID: 2,
41+
Addresses: []netip.Prefix{
42+
remotePrefix,
43+
netip.PrefixFrom(IP(), 128),
44+
netip.PrefixFrom(IP(), 128),
45+
},
46+
},
47+
},
48+
DERPMap: &tailcfg.DERPMap{
49+
HomeParams: &tailcfg.DERPHomeParams{
50+
RegionScore: map[int]float64{
51+
999: 1.0,
52+
},
53+
},
54+
Regions: map[int]*tailcfg.DERPRegion{
55+
999: {
56+
RegionID: 999,
57+
RegionCode: "zzz",
58+
RegionName: "Cool Region",
59+
EmbeddedRelay: true,
60+
Avoid: false,
61+
},
62+
},
63+
OmitDefaultRegions: false,
64+
},
65+
}
66+
67+
telemetry, err := newTelemetryStore()
68+
require.NoError(t, err)
69+
telemetry.markConnected(&remoteIP, time.Now(), application)
70+
telemetry.updateNetworkMap(nm)
71+
e := telemetry.newEvent()
72+
// DERPMapToProto already tested
73+
require.Equal(t, DERPMapToProto(nm.DERPMap), e.DerpMap)
74+
require.Equal(t, uint64(nm.Peers[1].ID), e.NodeIdRemote)
75+
require.Equal(t, uint64(nm.SelfNode.ID), e.NodeIdSelf)
76+
require.Equal(t, application, e.Application)
77+
require.Equal(t, nm.SelfNode.DERP, fmt.Sprintf("127.3.3.40:%d", e.HomeDerp))
78+
})
79+
1580
t.Run("CleanIPs", func(t *testing.T) {
1681
t.Parallel()
1782

0 commit comments

Comments
 (0)