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

Method Run

scaletest/createworkspaces/run.go:45–158  ·  view source on GitHub ↗

Run implements Runnable.

(ctx context.Context, id string, logs io.Writer)

Source from the content-addressed store, hash-verified

43
44// Run implements Runnable.
45func (r *Runner) Run(ctx context.Context, id string, logs io.Writer) error {
46 ctx, span := tracing.StartSpan(ctx)
47 defer span.End()
48
49 logs = loadtestutil.NewSyncWriter(logs)
50 logger := slog.Make(sloghuman.Sink(logs)).Leveled(slog.LevelDebug)
51 r.client.SetLogger(logger)
52 r.client.SetLogBodies(true)
53
54 var (
55 client = r.client
56 user codersdk.User
57 err error
58 )
59 if r.cfg.User.SessionToken != "" {
60 _, _ = fmt.Fprintln(logs, "Using existing user session token:")
61 user, err = client.User(ctx, "me")
62 if err != nil {
63 return xerrors.Errorf("generate random password for user: %w", err)
64 }
65 } else {
66 createUserConfig := createusers.Config{
67 OrganizationID: r.cfg.User.OrganizationID,
68 Username: r.cfg.User.Username,
69 Email: r.cfg.User.Email,
70 }
71 if err := createUserConfig.Validate(); err != nil {
72 return xerrors.Errorf("validate create user config: %w", err)
73 }
74 r.createUserRunner = createusers.NewRunner(r.client, createUserConfig)
75 newUser, err := r.createUserRunner.RunReturningUser(ctx, id, logs)
76 if err != nil {
77 return xerrors.Errorf("create user: %w", err)
78 }
79 user = newUser.User
80 // Duplicate the client with an independent transport to ensure each
81 // workspace creation gets its own HTTP connection pool. This prevents
82 // HTTP/2 connection multiplexing from causing all workspace GET requests
83 // to route to a single backend pod during load testing.
84 client, err = loadtestutil.DupClientCopyingHeaders(r.client, nil)
85 if err != nil {
86 return xerrors.Errorf("duplicate client: %w", err)
87 }
88 client.SetSessionToken(newUser.SessionToken)
89 }
90
91 _, _ = fmt.Fprintln(logs, "\nCreating workspace...")
92 workspaceBuildConfig := r.cfg.Workspace
93 workspaceBuildConfig.OrganizationID = r.cfg.User.OrganizationID
94 workspaceBuildConfig.UserID = user.ID.String()
95 r.workspacebuildRunner = workspacebuild.NewRunner(client, workspaceBuildConfig)
96 slimWorkspace, err := r.workspacebuildRunner.RunReturningWorkspace(ctx, id, logs)
97 if err != nil {
98 return xerrors.Errorf("create workspace: %w", err)
99 }
100 workspace, err := client.Workspace(ctx, slimWorkspace.ID)
101 if err != nil {
102 return xerrors.Errorf("get full workspace info: %w", err)

Callers 1

Test_RunnerFunction · 0.95

Calls 15

ValidateMethod · 0.95
StartSpanFunction · 0.92
NewSyncWriterFunction · 0.92
NewRunnerFunction · 0.92
DupClientCopyingHeadersFunction · 0.92
NewRunnerFunction · 0.92
NewRunnerFunction · 0.92
NewRunnerFunction · 0.92
RunReturningUserMethod · 0.80
SetSessionTokenMethod · 0.80
RunReturningWorkspaceMethod · 0.80
WorkspaceMethod · 0.80

Tested by 1

Test_RunnerFunction · 0.76