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

Method Run

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

Source from the content-addressed store, hash-verified

118)
119
120func (r *Runner) Run(ctx context.Context, id string, logs io.Writer) error {
121 ctx, span := tracing.StartSpan(ctx)
122 defer span.End()
123
124 logs = loadtestutil.NewSyncWriter(logs)
125 logger := slog.Make(sloghuman.Sink(logs)).Leveled(slog.LevelDebug)
126
127 requestURL, token, err := r.strategy.Setup(ctx, id, logs)
128 if err != nil {
129 return xerrors.Errorf("strategy setup: %w", err)
130 }
131
132 requestCount := r.cfg.RequestCount
133 if requestCount <= 0 {
134 requestCount = 1
135 }
136
137 model := r.providerStrategy.DefaultModel()
138
139 logger.Info(ctx, "bridge runner is ready",
140 slog.F("request_count", requestCount),
141 slog.F("model", model),
142 slog.F("stream", r.cfg.Stream),
143 )
144
145 for i := 0; i < requestCount; i++ {
146 if err := r.makeRequest(ctx, logger, requestURL, token, model, i); err != nil {
147 logger.Warn(ctx, "bridge request failed",
148 slog.F("request_num", i+1),
149 slog.F("error_type", "request_failed"),
150 slog.Error(err),
151 )
152 r.cfg.Metrics.AddError("request")
153 r.cfg.Metrics.AddRequest("failure")
154 r.failureCount++
155
156 // Continue making requests even if one fails
157 continue
158 }
159 r.successCount++
160 r.cfg.Metrics.AddRequest("success")
161 r.requestCount++
162 }
163
164 logger.Info(ctx, "bridge runner completed",
165 slog.F("total_requests", r.requestCount),
166 slog.F("success", r.successCount),
167 slog.F("failure", r.failureCount),
168 )
169
170 // Fail the run if any request failed
171 if r.failureCount > 0 {
172 return xerrors.Errorf("bridge runner failed: %d out of %d requests failed", r.failureCount, requestCount)
173 }
174
175 return nil
176}
177

Callers

nothing calls this directly

Calls 10

makeRequestMethod · 0.95
StartSpanFunction · 0.92
NewSyncWriterFunction · 0.92
AddRequestMethod · 0.80
SetupMethod · 0.65
DefaultModelMethod · 0.65
AddErrorMethod · 0.65
ErrorfMethod · 0.45
InfoMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected