parseConfig parses testcase config, stores to parsedConfig.
()
| 351 | |
| 352 | // parseConfig parses testcase config, stores to parsedConfig. |
| 353 | func (r *CaseRunner) parseConfig() error { |
| 354 | cfg := r.testCase.Config |
| 355 | |
| 356 | r.parsedConfig = &TConfig{} |
| 357 | // deep copy config to avoid data racing |
| 358 | if err := copier.Copy(r.parsedConfig, cfg); err != nil { |
| 359 | log.Error().Err(err).Msg("copy testcase config failed") |
| 360 | return err |
| 361 | } |
| 362 | |
| 363 | // parse config variables |
| 364 | parsedVariables, err := r.parser.ParseVariables(cfg.Variables) |
| 365 | if err != nil { |
| 366 | log.Error().Interface("variables", cfg.Variables).Err(err).Msg("parse config variables failed") |
| 367 | return err |
| 368 | } |
| 369 | r.parsedConfig.Variables = parsedVariables |
| 370 | |
| 371 | // parse config name |
| 372 | parsedName, err := r.parser.ParseString(cfg.Name, parsedVariables) |
| 373 | if err != nil { |
| 374 | return errors.Wrap(err, "parse config name failed") |
| 375 | } |
| 376 | r.parsedConfig.Name = convertString(parsedName) |
| 377 | |
| 378 | // parse config base url |
| 379 | parsedBaseURL, err := r.parser.ParseString(cfg.BaseURL, parsedVariables) |
| 380 | if err != nil { |
| 381 | return errors.Wrap(err, "parse config base url failed") |
| 382 | } |
| 383 | r.parsedConfig.BaseURL = convertString(parsedBaseURL) |
| 384 | |
| 385 | // merge config environment variables with base_url |
| 386 | // priority: env base_url > base_url |
| 387 | if cfg.Environs != nil { |
| 388 | r.parsedConfig.Environs = cfg.Environs |
| 389 | } else { |
| 390 | r.parsedConfig.Environs = make(map[string]string) |
| 391 | } |
| 392 | if value, ok := r.parsedConfig.Environs["base_url"]; !ok || value == "" { |
| 393 | if r.parsedConfig.BaseURL != "" { |
| 394 | r.parsedConfig.Environs["base_url"] = r.parsedConfig.BaseURL |
| 395 | } |
| 396 | } |
| 397 | |
| 398 | // merge config variables with environment variables |
| 399 | // priority: env > config variables |
| 400 | for k, v := range r.parsedConfig.Environs { |
| 401 | r.parsedConfig.Variables[k] = v |
| 402 | } |
| 403 | |
| 404 | // ensure correction of think time config |
| 405 | r.parsedConfig.ThinkTimeSetting.checkThinkTime() |
| 406 | |
| 407 | // ensure correction of websocket config |
| 408 | r.parsedConfig.WebSocketSetting.checkWebSocket() |
| 409 | |
| 410 | // parse testcase config parameters |
no test coverage detected