triggerNotifications waits for all test users to connect, then creates and deletes a test template to trigger notification events for testing.
( ctx context.Context, logger slog.Logger, client *codersdk.Client, orgID uuid.UUID, dialBarrier *sync.WaitGroup, dialTimeout time.Duration, expectedNotifications map[uuid.UUID]chan time.Time, )
| 397 | // triggerNotifications waits for all test users to connect, |
| 398 | // then creates and deletes a test template to trigger notification events for testing. |
| 399 | func triggerNotifications( |
| 400 | ctx context.Context, |
| 401 | logger slog.Logger, |
| 402 | client *codersdk.Client, |
| 403 | orgID uuid.UUID, |
| 404 | dialBarrier *sync.WaitGroup, |
| 405 | dialTimeout time.Duration, |
| 406 | expectedNotifications map[uuid.UUID]chan time.Time, |
| 407 | ) { |
| 408 | logger.Info(ctx, "waiting for all users to connect") |
| 409 | |
| 410 | // Wait for all users to connect |
| 411 | waitCtx, cancel := context.WithTimeout(ctx, dialTimeout+30*time.Second) |
| 412 | defer cancel() |
| 413 | |
| 414 | done := make(chan struct{}) |
| 415 | go func() { |
| 416 | dialBarrier.Wait() |
| 417 | close(done) |
| 418 | }() |
| 419 | |
| 420 | select { |
| 421 | case <-done: |
| 422 | logger.Info(ctx, "all users connected") |
| 423 | case <-waitCtx.Done(): |
| 424 | if waitCtx.Err() == context.DeadlineExceeded { |
| 425 | logger.Error(ctx, "timeout waiting for users to connect") |
| 426 | } else { |
| 427 | logger.Info(ctx, "context canceled while waiting for users") |
| 428 | } |
| 429 | return |
| 430 | } |
| 431 | |
| 432 | logger.Info(ctx, "creating test template to test notifications") |
| 433 | |
| 434 | // Upload empty template file. |
| 435 | file, err := client.Upload(ctx, codersdk.ContentTypeTar, bytes.NewReader([]byte{})) |
| 436 | if err != nil { |
| 437 | logger.Error(ctx, "upload test template", slog.Error(err)) |
| 438 | return |
| 439 | } |
| 440 | logger.Info(ctx, "test template uploaded", slog.F("file_id", file.ID)) |
| 441 | |
| 442 | // Create template version. |
| 443 | version, err := client.CreateTemplateVersion(ctx, orgID, codersdk.CreateTemplateVersionRequest{ |
| 444 | StorageMethod: codersdk.ProvisionerStorageMethodFile, |
| 445 | FileID: file.ID, |
| 446 | Provisioner: codersdk.ProvisionerTypeEcho, |
| 447 | }) |
| 448 | if err != nil { |
| 449 | logger.Error(ctx, "create test template version", slog.Error(err)) |
| 450 | return |
| 451 | } |
| 452 | logger.Info(ctx, "test template version created", slog.F("template_version_id", version.ID)) |
| 453 | |
| 454 | // Create template. |
| 455 | testTemplate, err := client.CreateTemplate(ctx, orgID, codersdk.CreateTemplateRequest{ |
| 456 | Name: "scaletest-test-template", |
no test coverage detected