Hyperfoil icon indicating copy to clipboard operation
Hyperfoil copied to clipboard

Param substitution not working for sequence instance count configuration.

Open whitingjr opened this issue 1 year ago • 0 comments

Using a template configuration for the definition of sequence instances is not working. When attempted this error happens

[hyperfoil@hyperfoil]$ upload /home/whitingjr/theark/work/redhat/documents/2023/06-may/20230613/frdemo-with-param.hf.yaml --print-stack-trace
ERROR: line 67, column 13: : Benchmark parsing error; See below: 
              - httpRequest:
                  GET: /frdemo-backend/responder-service/${responders[.]}
          - getIncidentById[!param MAX_INCIDENTS 2]:
            ^ HERE
              - json:
                  fromVar: incidents[.]
: : Malformed sequence name with concurrency: getIncidentById[!param MAX_INCIDENTS 2]
	at io.hyperfoil.core.parser.Context.parseList(Context.java:127)
	at io.hyperfoil.core.parser.SequenceParser.parse(SequenceParser.java:40)
	at io.hyperfoil.core.parser.SequenceParser.parse(SequenceParser.java:31)
	at io.hyperfoil.core.parser.Context.parseMapping(Context.java:151)
	at io.hyperfoil.core.parser.AbstractParser.callSubBuilders(AbstractParser.java:30)
	at io.hyperfoil.core.parser.ScenarioParser.parse(ScenarioParser.java:44)
	at io.hyperfoil.core.parser.ScenarioParser.parse(ScenarioParser.java:27)
	at io.hyperfoil.core.parser.Adapter.parse(Adapter.java:16)
	at io.hyperfoil.core.parser.Context.parseMapping(Context.java:151)
	at io.hyperfoil.core.parser.AbstractParser.callSubBuilders(AbstractParser.java:30)
	at io.hyperfoil.core.parser.PhaseParser.parse(PhaseParser.java:31)
	at io.hyperfoil.core.parser.PhaseParser$BasePhaseParser.parse(PhaseParser.java:43)
	at io.hyperfoil.core.parser.PhasesParser.parsePhase(PhasesParser.java:74)
	at io.hyperfoil.core.parser.Context.parseList(Context.java:123)
	at io.hyperfoil.core.parser.PhasesParser.parse(PhasesParser.java:61)
	at io.hyperfoil.core.parser.PhasesParser.parse(PhasesParser.java:31)
	at io.hyperfoil.core.parser.Context.parseMapping(Context.java:151)
	at io.hyperfoil.core.parser.AbstractParser.callSubBuilders(AbstractParser.java:30)
	at io.hyperfoil.core.parser.AbstractMappingParser.parse(AbstractMappingParser.java:6)
	at io.hyperfoil.core.parser.BenchmarkParser.builder(BenchmarkParser.java:124)
	at io.hyperfoil.core.parser.BenchmarkParser.buildBenchmark(BenchmarkParser.java:91)
	at io.hyperfoil.cli.commands.BaseUploadCommand.loadBenchmarkSource(BaseUploadCommand.java:48)
	at io.hyperfoil.cli.commands.Upload.uploadFromFile(Upload.java:82)
	at io.hyperfoil.cli.commands.Upload.execute(Upload.java:48)
	at io.hyperfoil.cli.commands.Upload.execute(Upload.java:25)
	at org.aesh.command.impl.operator.EndOperator.execute(EndOperator.java:41)
	at org.aesh.command.impl.Executions$ExecutionImpl.execute(Executions.java:222)
	at org.aesh.readline.Process.run(Process.java:80)
CAUSED BY: : Malformed sequence name with concurrency: getIncidentById[!param MAX_INCIDENTS 2]
	at io.hyperfoil.api.config.SequenceBuilder.name(SequenceBuilder.java:57)
	at io.hyperfoil.api.config.ScenarioBuilder.sequence(ScenarioBuilder.java:87)
	at io.hyperfoil.core.parser.SequenceParser.parseSequence(SequenceParser.java:53)
	at io.hyperfoil.core.parser.SequenceParser.parseSequence(SequenceParser.java:46)
	at io.hyperfoil.core.parser.Context.parseList(Context.java:123)
	at io.hyperfoil.core.parser.SequenceParser.parse(SequenceParser.java:40)
	at io.hyperfoil.core.parser.SequenceParser.parse(SequenceParser.java:31)
	at io.hyperfoil.core.parser.Context.parseMapping(Context.java:151)
	at io.hyperfoil.core.parser.AbstractParser.callSubBuilders(AbstractParser.java:30)
	at io.hyperfoil.core.parser.ScenarioParser.parse(ScenarioParser.java:44)
	at io.hyperfoil.core.parser.ScenarioParser.parse(ScenarioParser.java:27)
	at io.hyperfoil.core.parser.Adapter.parse(Adapter.java:16)
	at io.hyperfoil.core.parser.Context.parseMapping(Context.java:151)
	at io.hyperfoil.core.parser.AbstractParser.callSubBuilders(AbstractParser.java:30)
	at io.hyperfoil.core.parser.PhaseParser.parse(PhaseParser.java:31)
	at io.hyperfoil.core.parser.PhaseParser$BasePhaseParser.parse(PhaseParser.java:43)
	at io.hyperfoil.core.parser.PhasesParser.parsePhase(PhasesParser.java:74)
	at io.hyperfoil.core.parser.Context.parseList(Context.java:123)
	at io.hyperfoil.core.parser.PhasesParser.parse(PhasesParser.java:61)
	at io.hyperfoil.core.parser.PhasesParser.parse(PhasesParser.java:31)
	at io.hyperfoil.core.parser.Context.parseMapping(Context.java:151)
	at io.hyperfoil.core.parser.AbstractParser.callSubBuilders(AbstractParser.java:30)
	at io.hyperfoil.core.parser.AbstractMappingParser.parse(AbstractMappingParser.java:6)
	at io.hyperfoil.core.parser.BenchmarkParser.builder(BenchmarkParser.java:124)
	at io.hyperfoil.core.parser.BenchmarkParser.buildBenchmark(BenchmarkParser.java:91)
	at io.hyperfoil.cli.commands.BaseUploadCommand.loadBenchmarkSource(BaseUploadCommand.java:48)
	at io.hyperfoil.cli.commands.Upload.uploadFromFile(Upload.java:82)
	at io.hyperfoil.cli.commands.Upload.execute(Upload.java:48)
	at io.hyperfoil.cli.commands.Upload.execute(Upload.java:25)
	at org.aesh.command.impl.operator.EndOperator.execute(EndOperator.java:41)
	at org.aesh.command.impl.Executions$ExecutionImpl.execute(Executions.java:222)
	at org.aesh.readline.Process.run(Process.java:80)
Failed to parse the benchmark.
[hyperfoil@hyperfoil]$ 

It would be nice to use a template param to configure this. Otherwise the HF configuration is hard coded. Making scaling up of a workload more a case of trial an error with hard coded values.

whitingjr avatar Jun 13 '23 13:06 whitingjr