MCPcopy Create free account
hub / github.com/coder/coder / Run

Method Run

scaletest/notifications/run.go:68–179  ·  view source on GitHub ↗
(ctx context.Context, id string, logs io.Writer)

Source from the content-addressed store, hash-verified

66)
67
68func (r *Runner) Run(ctx context.Context, id string, logs io.Writer) error {
69 ctx, span := tracing.StartSpan(ctx)
70 defer span.End()
71
72 reachedBarrier := false
73 defer func() {
74 if !reachedBarrier {
75 r.cfg.DialBarrier.Done()
76 }
77 }()
78
79 reachedReceivingWatchBarrier := false
80 defer func() {
81 if len(r.cfg.ExpectedNotificationsIDs) > 0 && !reachedReceivingWatchBarrier {
82 r.cfg.ReceivingWatchBarrier.Done()
83 }
84 }()
85
86 logs = loadtestutil.NewSyncWriter(logs)
87 logger := slog.Make(sloghuman.Sink(logs)).Leveled(slog.LevelDebug)
88 r.client.SetLogger(logger)
89 r.client.SetLogBodies(true)
90
91 r.createUserRunner = createusers.NewRunner(r.client, r.cfg.User)
92 newUserAndToken, err := r.createUserRunner.RunReturningUser(ctx, id, logs)
93 if err != nil {
94 r.cfg.Metrics.AddError("create_user")
95 return xerrors.Errorf("create user: %w", err)
96 }
97 newUser := newUserAndToken.User
98 newUserClient := codersdk.New(r.client.URL,
99 codersdk.WithSessionToken(newUserAndToken.SessionToken),
100 codersdk.WithLogger(logger),
101 codersdk.WithLogBodies())
102
103 logger.Info(ctx, "runner user created", slog.F("username", newUser.Username), slog.F("user_id", newUser.ID.String()))
104
105 if len(r.cfg.Roles) > 0 {
106 logger.Info(ctx, "assigning roles to user", slog.F("roles", r.cfg.Roles))
107
108 _, err := r.client.UpdateUserRoles(ctx, newUser.ID.String(), codersdk.UpdateRoles{
109 Roles: r.cfg.Roles,
110 })
111 if err != nil {
112 r.cfg.Metrics.AddError("assign_roles")
113 return xerrors.Errorf("assign roles: %w", err)
114 }
115 }
116
117 logger.Info(ctx, "notification runner is ready")
118
119 dialCtx, cancel := context.WithTimeout(ctx, r.cfg.DialTimeout)
120 defer cancel()
121
122 logger.Info(ctx, "connecting to notification websocket")
123 conn, err := r.dialNotificationWebsocket(dialCtx, newUserClient, logger)
124 if err != nil {
125 return xerrors.Errorf("dial notification websocket: %w", err)

Callers 2

TestRunFunction · 0.95
TestRunWithSMTPFunction · 0.95

Calls 15

watchNotificationsMethod · 0.95
StartSpanFunction · 0.92
NewSyncWriterFunction · 0.92
NewRunnerFunction · 0.92
NewFunction · 0.92
WithSessionTokenFunction · 0.92
WithLoggerFunction · 0.92
WithLogBodiesFunction · 0.92
RunReturningUserMethod · 0.80
WithContextMethod · 0.80

Tested by 2

TestRunFunction · 0.76
TestRunWithSMTPFunction · 0.76