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

Function TestRecordTelemetryStatus

coderd/telemetry/telemetry_test.go:1319–1366  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1317}
1318
1319func TestRecordTelemetryStatus(t *testing.T) {
1320 t.Parallel()
1321 for _, testCase := range []struct {
1322 name string
1323 recordedTelemetryEnabled string
1324 telemetryEnabled bool
1325 shouldReport bool
1326 }{
1327 {name: "New deployment", recordedTelemetryEnabled: "nil", telemetryEnabled: true, shouldReport: false},
1328 {name: "Telemetry disabled", recordedTelemetryEnabled: "nil", telemetryEnabled: false, shouldReport: false},
1329 {name: "Telemetry was enabled and still is", recordedTelemetryEnabled: "true", telemetryEnabled: true, shouldReport: false},
1330 {name: "Telemetry was enabled but now disabled", recordedTelemetryEnabled: "true", telemetryEnabled: false, shouldReport: true},
1331 {name: "Telemetry was disabled now is enabled", recordedTelemetryEnabled: "false", telemetryEnabled: true, shouldReport: false},
1332 {name: "Telemetry was disabled still disabled", recordedTelemetryEnabled: "false", telemetryEnabled: false, shouldReport: false},
1333 {name: "Telemetry was disabled still disabled, invalid value", recordedTelemetryEnabled: "invalid", telemetryEnabled: false, shouldReport: false},
1334 } {
1335 t.Run(testCase.name, func(t *testing.T) {
1336 t.Parallel()
1337
1338 db, _ := dbtestutil.NewDB(t)
1339 ctx := testutil.Context(t, testutil.WaitMedium)
1340 logger := testutil.Logger(t)
1341 if testCase.recordedTelemetryEnabled != "nil" {
1342 db.UpsertTelemetryItem(ctx, database.UpsertTelemetryItemParams{
1343 Key: string(telemetry.TelemetryItemKeyTelemetryEnabled),
1344 Value: testCase.recordedTelemetryEnabled,
1345 })
1346 }
1347 snapshot1, err := telemetry.RecordTelemetryStatus(ctx, logger, db, testCase.telemetryEnabled)
1348 require.NoError(t, err)
1349
1350 if testCase.shouldReport {
1351 require.NotNil(t, snapshot1)
1352 require.Equal(t, snapshot1.TelemetryItems[0].Key, string(telemetry.TelemetryItemKeyTelemetryEnabled))
1353 require.Equal(t, snapshot1.TelemetryItems[0].Value, "false")
1354 } else {
1355 require.Nil(t, snapshot1)
1356 }
1357
1358 for range 3 {
1359 // Whatever happens, subsequent calls should not report if telemetryEnabled didn't change
1360 snapshot2, err := telemetry.RecordTelemetryStatus(ctx, logger, db, testCase.telemetryEnabled)
1361 require.NoError(t, err)
1362 require.Nil(t, snapshot2)
1363 }
1364 })
1365 }
1366}
1367
1368func mockTelemetryServer(ctx context.Context, t *testing.T) (*url.URL, chan *telemetry.Deployment, chan *telemetry.Snapshot) {
1369 t.Helper()

Callers

nothing calls this directly

Calls 7

NewDBFunction · 0.92
ContextFunction · 0.92
LoggerFunction · 0.92
RecordTelemetryStatusFunction · 0.92
RunMethod · 0.65
UpsertTelemetryItemMethod · 0.65
EqualMethod · 0.45

Tested by

no test coverage detected