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

Function triggerNotifications

cli/exp_scaletest_notifications.go:399–477  ·  view source on GitHub ↗

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,
)

Source from the content-addressed store, hash-verified

397// triggerNotifications waits for all test users to connect,
398// then creates and deletes a test template to trigger notification events for testing.
399func 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",

Callers 1

Calls 9

ErrMethod · 0.80
DeleteTemplateMethod · 0.80
WaitMethod · 0.65
UploadMethod · 0.65
CreateTemplateVersionMethod · 0.65
CreateTemplateMethod · 0.65
InfoMethod · 0.45
DoneMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected