From a283565d41d8b6c5e6f734d7488cc230343c348d Mon Sep 17 00:00:00 2001 From: xucong053 Date: Thu, 19 May 2022 21:02:34 +0800 Subject: [PATCH] fix: modify the format of data-driven parameters setting --- examples/hrp/parameters_test.json | 10 ++++++++-- examples/hrp/parameters_test.yaml | 8 ++++++-- hrp/parameters.go | 21 +++++++++++++-------- hrp/parameters_test.go | 28 ++++++++++++++-------------- 4 files changed, 41 insertions(+), 26 deletions(-) diff --git a/examples/hrp/parameters_test.json b/examples/hrp/parameters_test.json index 84c36531..9944599e 100644 --- a/examples/hrp/parameters_test.json +++ b/examples/hrp/parameters_test.json @@ -10,8 +10,14 @@ }, "parameters_setting": { "strategies": { - "user_agent": "sequential", - "username-password": "random" + "user_agent": { + "name": "user-identity", + "pick_order": "sequential" + }, + "username-password": { + "name": "user-info", + "pick_order": "random" + } }, "limit": 6 }, diff --git a/examples/hrp/parameters_test.yaml b/examples/hrp/parameters_test.yaml index b5d06c71..aaaf9b41 100644 --- a/examples/hrp/parameters_test.yaml +++ b/examples/hrp/parameters_test.yaml @@ -5,8 +5,12 @@ config: username-password: ${parameterize($file)} parameters_setting: strategies: - user_agent: "sequential" - username-password: "random" + user_agent: + name: "user-identity" + pick_order: "sequential" + username-password: + name: "user-info" + pick_order: "random" limit: 6 variables: app_version: v1 diff --git a/hrp/parameters.go b/hrp/parameters.go index 5797f618..06007025 100644 --- a/hrp/parameters.go +++ b/hrp/parameters.go @@ -12,17 +12,17 @@ import ( ) type TParamsConfig struct { - Strategy iteratorStrategy `json:"strategy,omitempty" yaml:"strategy,omitempty"` // overall strategy + PickOrder iteratorPickOrder `json:"strategy,omitempty" yaml:"strategy,omitempty"` // overall pick-order strategy Strategies map[string]iteratorStrategy `json:"strategies,omitempty" yaml:"strategies,omitempty"` // individual strategies for each parameters Limit int `json:"limit,omitempty" yaml:"limit,omitempty"` } -type iteratorStrategy string +type iteratorPickOrder string const ( - strategySequential iteratorStrategy = "sequential" - strategyRandom iteratorStrategy = "random" - strategyUnique iteratorStrategy = "unique" + strategySequential iteratorPickOrder = "sequential" + strategyRandom iteratorPickOrder = "random" + strategyUnique iteratorPickOrder = "unique" ) /* @@ -33,6 +33,11 @@ const ( */ type Parameters []map[string]interface{} +type iteratorStrategy struct { + Name string `json:"name,omitempty" yaml:"name,omitempty"` + PickOrder iteratorPickOrder `json:"pick_order,omitempty" yaml:"pick_order,omitempty"` +} + func initParametersIterator(cfg *TConfig) (*ParametersIterator, error) { parameters, err := loadParameters(cfg.Parameters, cfg.Variables) if err != nil { @@ -65,12 +70,12 @@ func newParametersIterator(parameters map[string]Parameters, config *TParamsConf // check parameter individual strategy strategy, ok := config.Strategies[paramName] if !ok { - // default to overall strategy - strategy = config.Strategy + // default to overall pick order + strategy.PickOrder = config.PickOrder } // group parameters by strategy - if strategy == strategyRandom { + if strategy.PickOrder == strategyRandom { iterator.randomParameterNames = append(iterator.randomParameterNames, paramName) } else { parametersList = append(parametersList, parameters[paramName]) diff --git a/hrp/parameters_test.go b/hrp/parameters_test.go index 19bb9fae..02176415 100644 --- a/hrp/parameters_test.go +++ b/hrp/parameters_test.go @@ -137,25 +137,25 @@ func TestInitParametersIteratorCount(t *testing.T) { }, 6, // 3 * 2 * 1 }, - // default equals to set overall parameters strategy to "sequential" + // default equals to set overall parameters pick-order to "sequential" { &TConfig{ Parameters: configParameters, ParametersSetting: &TParamsConfig{ - Strategy: "sequential", + PickOrder: "sequential", }, }, 6, // 3 * 2 * 1 }, - // default equals to set each individual parameters strategy to "sequential" + // default equals to set each individual parameters pick-order to "sequential" { &TConfig{ Parameters: configParameters, ParametersSetting: &TParamsConfig{ Strategies: map[string]iteratorStrategy{ - "username-password": "sequential", - "user_agent": "sequential", - "app_version": "sequential", + "username-password": {Name: "user-info", PickOrder: "sequential"}, + "user_agent": {Name: "user-identity", PickOrder: "sequential"}, + "app_version": {Name: "app-version", PickOrder: "sequential"}, }, }, }, @@ -166,33 +166,33 @@ func TestInitParametersIteratorCount(t *testing.T) { Parameters: configParameters, ParametersSetting: &TParamsConfig{ Strategies: map[string]iteratorStrategy{ - "user_agent": "sequential", - "app_version": "sequential", + "user_agent": {Name: "user-identity", PickOrder: "sequential"}, + "app_version": {Name: "app-version", PickOrder: "sequential"}, }, }, }, 6, // 3 * 2 * 1 }, - // set overall parameters overall strategy to "random" + // set overall parameters overall pick-order to "random" // each random parameters only select one item { &TConfig{ Parameters: configParameters, ParametersSetting: &TParamsConfig{ - Strategy: "random", + PickOrder: "random", }, }, 1, // 1 * 1 * 1 }, - // set some individual parameters strategy to "random" + // set some individual parameters pick-order to "random" // this will override overall strategy { &TConfig{ Parameters: configParameters, ParametersSetting: &TParamsConfig{ Strategies: map[string]iteratorStrategy{ - "user_agent": "random", + "user_agent": {Name: "user-identity", PickOrder: "random"}, }, }, }, @@ -203,7 +203,7 @@ func TestInitParametersIteratorCount(t *testing.T) { Parameters: configParameters, ParametersSetting: &TParamsConfig{ Strategies: map[string]iteratorStrategy{ - "username-password": "random", + "username-password": {Name: "user-info", PickOrder: "random"}, }, }, }, @@ -349,7 +349,7 @@ func TestInitParametersIteratorContent(t *testing.T) { ParametersSetting: &TParamsConfig{ Limit: 5, // limit could also be greater than total Strategies: map[string]iteratorStrategy{ - "username-password": "random", + "username-password": {Name: "user-info", PickOrder: "random"}, }, }, },