(ctx context.Context, client *codersdk.Client, owner, template string)
| 2214 | } |
| 2215 | |
| 2216 | func getScaletestWorkspaces(ctx context.Context, client *codersdk.Client, owner, template string) ([]codersdk.Workspace, int, error) { |
| 2217 | var ( |
| 2218 | pageNumber = 0 |
| 2219 | limit = 100 |
| 2220 | workspaces []codersdk.Workspace |
| 2221 | skipped int |
| 2222 | ) |
| 2223 | |
| 2224 | me, err := client.User(ctx, codersdk.Me) |
| 2225 | if err != nil { |
| 2226 | return nil, 0, xerrors.Errorf("check logged-in user") |
| 2227 | } |
| 2228 | |
| 2229 | dv, err := client.DeploymentConfig(ctx) |
| 2230 | if err != nil { |
| 2231 | return nil, 0, xerrors.Errorf("fetch deployment config: %w", err) |
| 2232 | } |
| 2233 | noOwnerAccess := dv.Values != nil && dv.Values.DisableOwnerWorkspaceExec.Value() |
| 2234 | |
| 2235 | for { |
| 2236 | page, err := client.Workspaces(ctx, codersdk.WorkspaceFilter{ |
| 2237 | Name: "scaletest-", |
| 2238 | Template: template, |
| 2239 | Owner: owner, |
| 2240 | Offset: pageNumber * limit, |
| 2241 | Limit: limit, |
| 2242 | }) |
| 2243 | if err != nil { |
| 2244 | return nil, 0, xerrors.Errorf("fetch scaletest workspaces page %d: %w", pageNumber, err) |
| 2245 | } |
| 2246 | |
| 2247 | pageNumber++ |
| 2248 | if len(page.Workspaces) == 0 { |
| 2249 | break |
| 2250 | } |
| 2251 | |
| 2252 | pageWorkspaces := make([]codersdk.Workspace, 0, len(page.Workspaces)) |
| 2253 | for _, w := range page.Workspaces { |
| 2254 | if !loadtestutil.IsScaleTestWorkspace(w.Name, w.OwnerName) { |
| 2255 | continue |
| 2256 | } |
| 2257 | if noOwnerAccess && w.OwnerID != me.ID { |
| 2258 | skipped++ |
| 2259 | continue |
| 2260 | } |
| 2261 | pageWorkspaces = append(pageWorkspaces, w) |
| 2262 | } |
| 2263 | workspaces = append(workspaces, pageWorkspaces...) |
| 2264 | } |
| 2265 | return workspaces, skipped, nil |
| 2266 | } |
| 2267 | |
| 2268 | func getScaletestUsers(ctx context.Context, client *codersdk.Client) ([]codersdk.User, error) { |
| 2269 | var ( |
no test coverage detected