(ctx context.Context, id string, logs io.Writer)
| 118 | ) |
| 119 | |
| 120 | func (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 |
nothing calls this directly
no test coverage detected