Hyperfoil
Hyperfoil copied to clipboard
Param substitution not working for sequence instance count configuration.
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.