Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit50333d3

Browse files
authored
feat: add workspace-proxy-url flag to scaletest workspace-traffic (#15920)
This allows the command to target a workspace proxy when appropriate. Part ofcoder/internal#149So far I've verified the correct url being used with logs:```➜ coder git:(f0ssel/workspace-traffic-proxy) ✗ go run ./cmd/coder/main.go exp scaletest workspace-traffic --job-timeout=60s --workspace-proxy-url="https://paris.fly.dev.coder.com"Running load test...web url:https://paris.fly.dev.coder.com...➜ coder git:(f0ssel/workspace-traffic-proxy) ✗ go run ./cmd/coder/main.go exp scaletest workspace-traffic --job-timeout=60s --workspace-proxy-url="https://paris.fly.dev.coder.com" --app="code-server"Running load test...app url:https://paris.fly.dev.coder.com/@f0ssel/scaletest-1.dev/apps/code-server```
1 parent7be96bb commit50333d3

File tree

3 files changed

+54
-13
lines changed

3 files changed

+54
-13
lines changed

‎cli/exp_scaletest.go

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"io"
1010
"math/rand"
1111
"net/http"
12+
"net/url"
1213
"os"
1314
"os/signal"
1415
"strconv"
@@ -860,13 +861,14 @@ func (r *RootCmd) scaletestCreateWorkspaces() *serpent.Command {
860861

861862
func (r*RootCmd)scaletestWorkspaceTraffic()*serpent.Command {
862863
var (
863-
tickInterval time.Duration
864-
bytesPerTickint64
865-
sshbool
866-
useHostLoginbool
867-
appstring
868-
templatestring
869-
targetWorkspacesstring
864+
tickInterval time.Duration
865+
bytesPerTickint64
866+
sshbool
867+
useHostLoginbool
868+
appstring
869+
templatestring
870+
targetWorkspacesstring
871+
workspaceProxyURLstring
870872

871873
client=&codersdk.Client{}
872874
tracingFlags=&scaletestTracingFlags{}
@@ -1002,6 +1004,23 @@ func (r *RootCmd) scaletestWorkspaceTraffic() *serpent.Command {
10021004
returnxerrors.Errorf("configure workspace app: %w",err)
10031005
}
10041006

1007+
varwebClient*codersdk.Client
1008+
ifworkspaceProxyURL!="" {
1009+
u,err:=url.Parse(workspaceProxyURL)
1010+
iferr!=nil {
1011+
returnxerrors.Errorf("parse workspace proxy URL: %w",err)
1012+
}
1013+
1014+
webClient=codersdk.New(u)
1015+
webClient.HTTPClient=client.HTTPClient
1016+
webClient.SetSessionToken(client.SessionToken())
1017+
1018+
appConfig,err=createWorkspaceAppConfig(webClient,appHost.Host,app,ws,agent)
1019+
iferr!=nil {
1020+
returnxerrors.Errorf("configure proxy workspace app: %w",err)
1021+
}
1022+
}
1023+
10051024
// Setup our workspace agent connection.
10061025
config:= workspacetraffic.Config{
10071026
AgentID:agent.ID,
@@ -1015,6 +1034,10 @@ func (r *RootCmd) scaletestWorkspaceTraffic() *serpent.Command {
10151034
App:appConfig,
10161035
}
10171036

1037+
ifwebClient!=nil {
1038+
config.WebClient=webClient
1039+
}
1040+
10181041
iferr:=config.Validate();err!=nil {
10191042
returnxerrors.Errorf("validate config: %w",err)
10201043
}
@@ -1108,6 +1131,13 @@ func (r *RootCmd) scaletestWorkspaceTraffic() *serpent.Command {
11081131
Description:"Connect as the currently logged in user.",
11091132
Value:serpent.BoolOf(&useHostLogin),
11101133
},
1134+
{
1135+
Flag:"workspace-proxy-url",
1136+
Env:"CODER_SCALETEST_WORKSPACE_PROXY_URL",
1137+
Default:"",
1138+
Description:"URL for workspace proxy to send web traffic to.",
1139+
Value:serpent.StringOf(&workspaceProxyURL),
1140+
},
11111141
}
11121142

11131143
tracingFlags.attach(&cmd.Options)

‎scaletest/workspacetraffic/config.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55

66
"github.com/google/uuid"
77
"golang.org/x/xerrors"
8+
9+
"github.com/coder/coder/v2/codersdk"
810
)
911

1012
typeConfigstruct {
@@ -33,6 +35,8 @@ type Config struct {
3335
Echobool`json:"echo"`
3436

3537
AppAppConfig`json:"app"`
38+
39+
WebClient*codersdk.Client
3640
}
3741

3842
func (cConfig)Validate()error {

‎scaletest/workspacetraffic/run.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ import (
2323
)
2424

2525
typeRunnerstruct {
26-
client*codersdk.Client
27-
cfgConfig
26+
client*codersdk.Client
27+
webClient*codersdk.Client
28+
cfgConfig
2829
}
2930

3031
var (
@@ -34,9 +35,15 @@ var (
3435

3536
// func NewRunner(client *codersdk.Client, cfg Config, metrics *Metrics) *Runner {
3637
funcNewRunner(client*codersdk.Client,cfgConfig)*Runner {
38+
webClient:=client
39+
ifcfg.WebClient!=nil {
40+
webClient=cfg.WebClient
41+
}
42+
3743
return&Runner{
38-
client:client,
39-
cfg:cfg,
44+
client:client,
45+
webClient:webClient,
46+
cfg:cfg,
4047
}
4148
}
4249

@@ -94,7 +101,7 @@ func (r *Runner) Run(ctx context.Context, _ string, logs io.Writer) (err error)
94101
switch {
95102
caser.cfg.App.Name!="":
96103
logger.Info(ctx,"sending traffic to workspace app",slog.F("app",r.cfg.App.Name))
97-
conn,err=appClientConn(ctx,r.client,r.cfg.App.URL)
104+
conn,err=appClientConn(ctx,r.webClient,r.cfg.App.URL)
98105
iferr!=nil {
99106
logger.Error(ctx,"connect to workspace app",slog.Error(err))
100107
returnxerrors.Errorf("connect to workspace app: %w",err)
@@ -113,7 +120,7 @@ func (r *Runner) Run(ctx context.Context, _ string, logs io.Writer) (err error)
113120

114121
default:
115122
logger.Info(ctx,"connecting to workspace agent",slog.F("method","reconnectingpty"))
116-
conn,err=connectRPTY(ctx,r.client,agentID,reconnect,command)
123+
conn,err=connectRPTY(ctx,r.webClient,agentID,reconnect,command)
117124
iferr!=nil {
118125
logger.Error(ctx,"connect to workspace agent via reconnectingpty",slog.Error(err))
119126
returnxerrors.Errorf("connect to workspace via reconnectingpty: %w",err)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp