mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
workin progress for http_updates
This commit is contained in:
@@ -1,75 +0,0 @@
|
||||
package io.nosqlbench.driver.webdriver;
|
||||
|
||||
import io.nosqlbench.engine.api.activityconfig.yaml.StmtDef;
|
||||
import io.nosqlbench.engine.api.activityimpl.motor.ParamsParser;
|
||||
import io.nosqlbench.nb.api.errors.BasicError;
|
||||
import io.nosqlbench.virtdata.core.bindings.BindingsTemplate;
|
||||
import io.nosqlbench.virtdata.core.templates.ParsedTemplate;
|
||||
import io.nosqlbench.virtdata.core.templates.StringBindings;
|
||||
import io.nosqlbench.virtdata.core.templates.StringBindingsTemplate;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.yaml.snakeyaml.nodes.ScalarNode;
|
||||
|
||||
import java.security.InvalidParameterException;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Use the {@link StmtDef} template form as a property template for parameterized
|
||||
* commands. This is a general purpose template which uses a map of named parameters.
|
||||
* The {@code command} property designates the verb component of the command.
|
||||
*/
|
||||
public class CommandTemplate {
|
||||
|
||||
private final static Logger logger = LoggerFactory.getLogger(CommandTemplate.class);
|
||||
private final String name;
|
||||
private LinkedHashMap<String, StringBindings> cmdspec = new LinkedHashMap<>();
|
||||
|
||||
public CommandTemplate(StmtDef stmt, boolean canonicalize) {
|
||||
this.name = stmt.getName();
|
||||
String prefixed = stmt.getStmt();
|
||||
prefixed = (prefixed.startsWith("command=") ? prefixed : "command=" + prefixed);
|
||||
|
||||
Map<String,String> cmdMap = ParamsParser.parse(prefixed, canonicalize);
|
||||
Map<String, String> paramsMap = stmt.getParamsAsValueType(String.class);
|
||||
paramsMap.forEach((k,v) -> {
|
||||
if (cmdMap.containsKey(k)) {
|
||||
logger.warn("command property override: '" + k + "' superseded by param form with value '" + v + "'");
|
||||
}
|
||||
cmdMap.put(k,v);
|
||||
});
|
||||
|
||||
cmdMap.forEach((param,value) -> {
|
||||
ParsedTemplate paramTemplate = new ParsedTemplate(value, stmt.getBindings());
|
||||
BindingsTemplate paramBindings = new BindingsTemplate(paramTemplate.getBindPoints());
|
||||
StringBindings paramStringBindings = new StringBindingsTemplate(value, paramBindings).resolve();
|
||||
cmdspec.put(param,paramStringBindings);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public CommandTemplate(String command, Map<String,String> bindings, String name, boolean canonicalize) {
|
||||
this.name = name;
|
||||
Map<String, String> cmdMap = ParamsParser.parse(command, canonicalize);
|
||||
cmdMap.forEach((param,value) -> {
|
||||
ParsedTemplate paramTemplate = new ParsedTemplate(command,bindings);
|
||||
BindingsTemplate paramBindings = new BindingsTemplate(paramTemplate.getBindPoints());
|
||||
StringBindings paramStringBindings = new StringBindingsTemplate(value, paramBindings).resolve();
|
||||
cmdspec.put(param,paramStringBindings);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public Map<String,String> getCommand(long cycle) {
|
||||
LinkedHashMap<String, String> cmd = new LinkedHashMap<>(cmdspec.size());
|
||||
cmdspec.forEach((k,v) -> {
|
||||
cmd.put(k,v.bind(cycle));
|
||||
});
|
||||
return cmd;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import io.nosqlbench.driver.webdriver.verbs.WebDriverVerbs;
|
||||
import io.nosqlbench.engine.api.activityapi.core.ActivityDefObserver;
|
||||
import io.nosqlbench.engine.api.activityapi.core.SyncAction;
|
||||
import io.nosqlbench.engine.api.activityimpl.ActivityDef;
|
||||
import io.nosqlbench.engine.api.templating.CommandTemplate;
|
||||
import io.nosqlbench.nb.api.errors.BasicError;
|
||||
import org.openqa.selenium.WebDriver;
|
||||
import org.slf4j.Logger;
|
||||
@@ -45,6 +46,7 @@ public class WebDriverAction implements SyncAction, ActivityDefObserver {
|
||||
// factor.
|
||||
@Override
|
||||
public int runCycle(long value) {
|
||||
|
||||
CommandTemplate commandTemplate = activity.getOpSequence().get(value);
|
||||
try {
|
||||
WebDriverVerbs.execute(value, commandTemplate, context, dryrun);
|
||||
|
||||
@@ -13,6 +13,7 @@ import io.nosqlbench.engine.api.activityconfig.yaml.StmtDef;
|
||||
import io.nosqlbench.engine.api.activityconfig.yaml.StmtsDocList;
|
||||
import io.nosqlbench.engine.api.activityimpl.ActivityDef;
|
||||
import io.nosqlbench.engine.api.activityimpl.SimpleActivity;
|
||||
import io.nosqlbench.engine.api.templating.CommandTemplate;
|
||||
import io.nosqlbench.engine.api.templating.StrInterpolator;
|
||||
import io.nosqlbench.nb.api.content.NBIO;
|
||||
import io.nosqlbench.nb.api.errors.BasicError;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package io.nosqlbench.driver.webdriver.verbs;
|
||||
|
||||
import io.nosqlbench.driver.webdriver.CommandTemplate;
|
||||
import io.nosqlbench.driver.webdriver.WebContext;
|
||||
import io.nosqlbench.engine.api.templating.CommandTemplate;
|
||||
import io.nosqlbench.nb.api.errors.BasicError;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
Reference in New Issue
Block a user