mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
fix for TEMPLATE support inside named scenarios
This commit is contained in:
parent
0107f5eb42
commit
f0a8520d17
@ -5,6 +5,7 @@ import io.nosqlbench.engine.api.activityconfig.yaml.Scenarios;
|
|||||||
import io.nosqlbench.engine.api.activityconfig.yaml.StmtsDocList;
|
import io.nosqlbench.engine.api.activityconfig.yaml.StmtsDocList;
|
||||||
import io.nosqlbench.engine.api.exceptions.BasicError;
|
import io.nosqlbench.engine.api.exceptions.BasicError;
|
||||||
import io.nosqlbench.engine.api.util.NosqlBenchFiles;
|
import io.nosqlbench.engine.api.util.NosqlBenchFiles;
|
||||||
|
import io.nosqlbench.engine.api.util.StrInterpolator;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -44,17 +45,18 @@ public class NBCLIScenarioParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Load in user's CLI options
|
// Load in user's CLI options
|
||||||
LinkedHashMap<String, String> userCli = new LinkedHashMap<>();
|
LinkedHashMap<String, String> userParams = new LinkedHashMap<>();
|
||||||
while (arglist.size() > 0
|
while (arglist.size() > 0
|
||||||
&& arglist.peekFirst().contains("=")
|
&& arglist.peekFirst().contains("=")
|
||||||
&& !arglist.peekFirst().startsWith("-")) {
|
&& !arglist.peekFirst().startsWith("-")) {
|
||||||
String[] arg = arglist.removeFirst().split("=");
|
String[] arg = arglist.removeFirst().split("=");
|
||||||
arg[0] = Synonyms.canonicalize(arg[0], logger);
|
arg[0] = Synonyms.canonicalize(arg[0], logger);
|
||||||
if (userCli.containsKey(arg[0])) {
|
if (userParams.containsKey(arg[0])) {
|
||||||
throw new BasicError("duplicate occurence of option on command line: " + arg[0]);
|
throw new BasicError("duplicate occurrence of option on command line: " + arg[0]);
|
||||||
}
|
}
|
||||||
userCli.put(arg[0], arg[1]);
|
userParams.put(arg[0], arg[1]);
|
||||||
}
|
}
|
||||||
|
StrInterpolator userParamsInterp = new StrInterpolator(userParams);
|
||||||
|
|
||||||
// This will hold the command to be prepended to the main arglist
|
// This will hold the command to be prepended to the main arglist
|
||||||
LinkedList<String> buildCmdBuffer = new LinkedList<>();
|
LinkedList<String> buildCmdBuffer = new LinkedList<>();
|
||||||
@ -72,7 +74,8 @@ public class NBCLIScenarioParser {
|
|||||||
|
|
||||||
Pattern cmdpattern = Pattern.compile("(?<name>\\w+)((?<oper>=+)(?<val>.+))?");
|
Pattern cmdpattern = Pattern.compile("(?<name>\\w+)((?<oper>=+)(?<val>.+))?");
|
||||||
for (String cmd : cmds) { // each command line of the named scenario
|
for (String cmd : cmds) { // each command line of the named scenario
|
||||||
LinkedHashMap<String, String> usersCopy = new LinkedHashMap<>(userCli);
|
cmd = userParamsInterp.apply(cmd);
|
||||||
|
LinkedHashMap<String, String> usersCopy = new LinkedHashMap<>(userParams);
|
||||||
LinkedHashMap<String, CmdArg> cmdline = new LinkedHashMap<>();
|
LinkedHashMap<String, CmdArg> cmdline = new LinkedHashMap<>();
|
||||||
|
|
||||||
String[] cmdparts = cmd.split(" ");
|
String[] cmdparts = cmd.split(" ");
|
||||||
|
@ -69,4 +69,21 @@ public class NBCLIScenarioParserTest {
|
|||||||
List<NBCLIOptions.Cmd> cmds = opts.getCommands();
|
List<NBCLIOptions.Cmd> cmds = opts.getCommands();
|
||||||
assertThat(cmds.size()).isEqualTo(6);
|
assertThat(cmds.size()).isEqualTo(6);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testThatTemplatesAreExpandedDefault() {
|
||||||
|
NBCLIOptions opts = new NBCLIOptions(new String[]{ "scenario-test", "template-test"});
|
||||||
|
List<NBCLIOptions.Cmd> cmds = opts.getCommands();
|
||||||
|
assertThat(cmds.size()).isEqualTo(1);
|
||||||
|
assertThat(cmds.get(0).getCmdSpec()).isEqualTo("driver=stdout;cycles=10;workload=activities/scenario-test.yaml;");
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void testThatTemplatesAreExpandedOverride() {
|
||||||
|
NBCLIOptions opts = new NBCLIOptions(new String[]{ "scenario-test", "template-test", "cycles-test=20"});
|
||||||
|
List<NBCLIOptions.Cmd> cmds = opts.getCommands();
|
||||||
|
assertThat(cmds.size()).isEqualTo(1);
|
||||||
|
assertThat(cmds.get(0).getCmdSpec()).isEqualTo("driver=stdout;cycles=20;cycles-test=20;workload=activities/scenario-test.yaml;");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,10 +2,12 @@
|
|||||||
scenarios:
|
scenarios:
|
||||||
default:
|
default:
|
||||||
- run driver==stdout yaml===scenario-test tags=phase:schema
|
- run driver==stdout yaml===scenario-test tags=phase:schema
|
||||||
- run driver=stdout yaml===scenario-test tags=phase:rampup cycles=TEMPLATE(cycles,10)
|
- run driver=stdout yaml===scenario-test tags=phase:rampup cycles=TEMPLATE(cycles1,10)
|
||||||
- run driver=stdout yaml===scenario-test tags=phase:main cycles=TEMPLATE(cycles,10)
|
- run driver=stdout yaml===scenario-test tags=phase:main cycles=TEMPLATE(cycles2,10)
|
||||||
schema-only:
|
schema-only:
|
||||||
- "run driver=stdout yaml=scenario-test tags=phase:schema"
|
- "run driver=stdout yaml=scenario-test tags=phase:schema"
|
||||||
|
template-test:
|
||||||
|
with-template: run driver=stdout cycles=TEMPLATE(cycles-test,10)
|
||||||
blocks:
|
blocks:
|
||||||
- tags:
|
- tags:
|
||||||
phase: schema
|
phase: schema
|
||||||
|
Loading…
Reference in New Issue
Block a user