MCPcopy Index your code
hub / github.com/coder/coder / TestController_TelemetrySuccess

Function TestController_TelemetrySuccess

tailnet/controllers_test.go:1156–1216  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1154}
1155
1156func TestController_TelemetrySuccess(t *testing.T) {
1157 t.Parallel()
1158 ctx := testutil.Context(t, testutil.WaitShort)
1159 logger := testutil.Logger(t)
1160 agentID := uuid.UUID{0x55}
1161 clientID := uuid.UUID{0x66}
1162 fCoord := tailnettest.NewFakeCoordinator()
1163 var coord tailnet.Coordinator = fCoord
1164 coordPtr := atomic.Pointer[tailnet.Coordinator]{}
1165 coordPtr.Store(&coord)
1166 derpMapCh := make(chan *tailcfg.DERPMap)
1167 defer close(derpMapCh)
1168 eventCh := make(chan []*proto.TelemetryEvent, 1)
1169 svc, err := tailnet.NewClientService(tailnet.ClientServiceOptions{
1170 Logger: logger,
1171 CoordPtr: &coordPtr,
1172 DERPMapUpdateFrequency: time.Millisecond,
1173 DERPMapFn: func() *tailcfg.DERPMap { return <-derpMapCh },
1174 NetworkTelemetryHandler: func(batch []*proto.TelemetryEvent) {
1175 select {
1176 case <-ctx.Done():
1177 t.Error("timeout sending telemetry event")
1178 case eventCh <- batch:
1179 t.Log("sent telemetry batch")
1180 }
1181 },
1182 ResumeTokenProvider: tailnet.NewInsecureTestResumeTokenProvider(),
1183 })
1184 require.NoError(t, err)
1185
1186 dialer := &pipeDialer{
1187 ctx: ctx,
1188 logger: logger,
1189 t: t,
1190 svc: svc,
1191 streamID: tailnet.StreamID{
1192 Name: "client",
1193 ID: clientID,
1194 Auth: tailnet.ClientCoordinateeAuth{AgentID: agentID},
1195 },
1196 }
1197
1198 uut := tailnet.NewController(logger, dialer)
1199 uut.CoordCtrl = tailnet.NewAgentCoordinationController(logger, &fakeTailnetConn{})
1200 tel := tailnet.NewBasicTelemetryController(logger)
1201 uut.TelemetryCtrl = tel
1202 uut.Run(ctx)
1203 // Coordinate calls happen _after_ telemetry is connected up, so we use this
1204 // to ensure telemetry is connected before sending our event
1205 cc := testutil.TryReceive(ctx, t, fCoord.CoordinateCalls)
1206 defer close(cc.Resps)
1207
1208 tel.SendTelemetryEvent(&proto.TelemetryEvent{
1209 Id: []byte("test event"),
1210 })
1211
1212 testEvents := testutil.TryReceive(ctx, t, eventCh)
1213

Callers

nothing calls this directly

Calls 15

RunMethod · 0.95
SendTelemetryEventMethod · 0.95
ContextFunction · 0.92
LoggerFunction · 0.92
NewFakeCoordinatorFunction · 0.92
NewClientServiceFunction · 0.92
NewControllerFunction · 0.92
TryReceiveFunction · 0.92
LogMethod · 0.80

Tested by

no test coverage detected