(t *testing.T)
| 1317 | } |
| 1318 | |
| 1319 | func 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 | |
| 1368 | func mockTelemetryServer(ctx context.Context, t *testing.T) (*url.URL, chan *telemetry.Deployment, chan *telemetry.Snapshot) { |
| 1369 | t.Helper() |
nothing calls this directly
no test coverage detected