in internal/soaktest/runner.go [177:257]
func getHandlerParams(runnerConfig *RunnerConfig, config ScenarioConfig) (loadgen.EventHandlerParams, error) {
// if AgentName is not specified, using all the APM agents,
// but shares the allowed events numbers sent for given duration(e.g. 4 agents send 10000/s in total)
if config.AgentName == "" {
config.AgentName = "apm-"
}
path := config.AgentName + "*.ndjson"
var params loadgen.EventHandlerParams
headers := make(map[string]string)
for k, v := range config.Headers {
headers[k] = v
}
for k, v := range runnerConfig.Headers {
headers[k] = v
}
for k, v := range headers {
headers[k] = strings.Replace(v, "<project_id>", config.ProjectID, 1)
}
headers["X-Elastic-Project-Id"] = config.ProjectID
if config.ServerURL == "" {
config.ServerURL = runnerConfig.ServerURL
}
// if <project_id> is specified in the url, replace it
serverURL, err := url.Parse(strings.Replace(config.ServerURL, "<project_id>", config.ProjectID, 1))
if err != nil {
return params, err
}
if config.APIKey == "" {
config.APIKey = runnerConfig.APIKeys[config.ProjectID]
}
burst, interval, err := loadgen.ParseEventRate(config.EventRate)
if err != nil {
return params, err
}
protocol := "apm/http"
if strings.HasPrefix(config.AgentName, "otlp-") {
protocol = "otlp/http"
}
datatype := "any"
if protocol == "otlp/http" {
if strings.HasPrefix(config.AgentName, "otlp-logs") {
datatype = "logs"
} else if strings.HasPrefix(config.AgentName, "otlp-metrics") {
datatype = "metrics"
} else if strings.HasPrefix(config.AgentName, "otlp-traces") {
datatype = "traces"
}
}
params = loadgen.EventHandlerParams{
Path: path,
URL: serverURL.String(),
APIKey: config.APIKey,
Token: runnerConfig.SecretToken,
IgnoreErrors: runnerConfig.IgnoreErrors,
RunForever: runnerConfig.RunForever,
Limiter: loadgen.GetNewLimiter(burst, interval),
RewriteIDs: config.RewriteIDs,
RewriteServiceNames: config.RewriteServiceNames,
RewriteServiceNodeNames: config.RewriteServiceNodeNames,
RewriteServiceTargetNames: config.RewriteServiceTargetNames,
RewriteSpanNames: config.RewriteSpanNames,
RewriteTransactionNames: config.RewriteTransactionNames,
RewriteTransactionTypes: config.RewriteTransactionTypes,
RewriteTimestamps: config.RewriteTimestamps,
Headers: headers,
Protocol: protocol,
Datatype: datatype,
TargetStackVersion: targetStackVer(config),
}
return params, nil
}