in cmd/kperf/commands/runner/runner.go [148:189]
func loadConfig(cliCtx *cli.Context) (*types.LoadProfile, error) {
var profileCfg types.LoadProfile
cfgPath := cliCtx.String("config")
cfgInRaw, err := os.ReadFile(cfgPath)
if err != nil {
return nil, fmt.Errorf("failed to read file %s: %w", cfgPath, err)
}
if err := yaml.Unmarshal(cfgInRaw, &profileCfg); err != nil {
return nil, fmt.Errorf("failed to unmarshal %s from yaml format: %w", cfgPath, err)
}
// override value by flags
if v := "rate"; cliCtx.IsSet(v) {
profileCfg.Spec.Rate = cliCtx.Float64(v)
}
if v := "conns"; cliCtx.IsSet(v) || profileCfg.Spec.Conns == 0 {
profileCfg.Spec.Conns = cliCtx.Int(v)
}
if v := "client"; cliCtx.IsSet(v) || profileCfg.Spec.Client == 0 {
profileCfg.Spec.Client = cliCtx.Int(v)
}
if v := "total"; cliCtx.IsSet(v) || profileCfg.Spec.Total == 0 {
profileCfg.Spec.Total = cliCtx.Int(v)
}
if v := "content-type"; cliCtx.IsSet(v) || profileCfg.Spec.ContentType == "" {
profileCfg.Spec.ContentType = types.ContentType(cliCtx.String(v))
}
if v := "disable-http2"; cliCtx.IsSet(v) {
profileCfg.Spec.DisableHTTP2 = cliCtx.Bool(v)
}
if v := "max-retries"; cliCtx.IsSet(v) {
profileCfg.Spec.MaxRetries = cliCtx.Int(v)
}
if err := profileCfg.Validate(); err != nil {
return nil, err
}
return &profileCfg, nil
}