From 748eebc04c0c26cca4a56cd880e67f022a2c051e Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Fri, 11 Jun 2021 15:27:11 -0500 Subject: [PATCH] parameterize op template --- .../activitytype/cql/core/CQLBindHelper.java | 10 +++------- .../activitytype/cql/core/CqlActivity.java | 14 +++++++------- .../verification/VerifierBuilder.java | 2 +- .../activitytype/cql/core/CqlActivity.java | 14 +++++++------- .../verification/VerifierBuilder.java | 2 +- .../ebdrivers/dsegraph/GraphActivity.java | 8 ++++---- .../activitytype/jdbc/impl/ReadyJDBCOp.java | 2 +- .../kafkaproducer/KafkaProducerActivity.java | 4 ++-- .../kafkaproducer/KafkaStatement.java | 4 ++-- .../driver/mongodb/MongoActivity.java | 4 ++-- .../driver/mongodb/ReadyMongoStatement.java | 4 ++-- .../activitytype/stdout/StdoutActivity.java | 10 +++++----- .../driver/webdriver/WebDriverActivity.java | 6 +++--- .../engine/api/activityconfig/yaml/OpDef.java | 6 +++--- .../api/activityconfig/yaml/OpTemplate.java | 8 ++++---- .../api/activityconfig/yaml/StmtsDocList.java | 18 +++++++++--------- .../api/activityimpl/SimpleActivity.java | 5 +++-- .../engine/api/templating/CommandTemplate.java | 18 ++++++++++++------ 18 files changed, 71 insertions(+), 68 deletions(-) diff --git a/driver-cql-shaded/src/main/java/io/nosqlbench/activitytype/cql/core/CQLBindHelper.java b/driver-cql-shaded/src/main/java/io/nosqlbench/activitytype/cql/core/CQLBindHelper.java index 45755c503..c3898dbfb 100644 --- a/driver-cql-shaded/src/main/java/io/nosqlbench/activitytype/cql/core/CQLBindHelper.java +++ b/driver-cql-shaded/src/main/java/io/nosqlbench/activitytype/cql/core/CQLBindHelper.java @@ -2,7 +2,7 @@ package io.nosqlbench.activitytype.cql.core; import com.datastax.driver.core.*; import io.nosqlbench.engine.api.activityconfig.ParsedStmt; -import io.nosqlbench.engine.api.activityconfig.yaml.OpDef; +import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; import java.math.BigDecimal; import java.net.InetAddress; @@ -129,13 +129,10 @@ public class CQLBindHelper { } } - public static Map parseAndGetSpecificBindings(OpDef opDef, ParsedStmt parsed) { - List spans = new ArrayList<>(); - + public static Map parseAndGetSpecificBindings(OpTemplate opDef, ParsedStmt parsed) { String statement = opDef.getStmt(); - Set extraBindings = new HashSet<>(); - extraBindings.addAll(opDef.getBindings().keySet()); + Set extraBindings = new HashSet<>(opDef.getBindings().keySet()); Map specificBindings = new LinkedHashMap<>(); Matcher m = stmtToken.matcher(statement); @@ -148,7 +145,6 @@ public class CQLBindHelper { String form2 = m.group(2); String tokenName = (form1 != null && !form1.isEmpty()) ? form1 : form2; lastMatch = m.end(); - spans.add(pre); if (extraBindings.contains(tokenName)) { if (specificBindings.get(tokenName) != null){ diff --git a/driver-cql-shaded/src/main/java/io/nosqlbench/activitytype/cql/core/CqlActivity.java b/driver-cql-shaded/src/main/java/io/nosqlbench/activitytype/cql/core/CqlActivity.java index e8d078756..8c571a002 100644 --- a/driver-cql-shaded/src/main/java/io/nosqlbench/activitytype/cql/core/CqlActivity.java +++ b/driver-cql-shaded/src/main/java/io/nosqlbench/activitytype/cql/core/CqlActivity.java @@ -70,7 +70,7 @@ public class CqlActivity extends SimpleActivity implements Activity, ActivityDef private final ExceptionHistoMetrics exceptionHistoMetrics; private final ActivityDef activityDef; private final Map namedWriters = new HashMap<>(); - protected List stmts; + protected List> stmts; Timer retryDelayTimer; Timer pagesTimer; Histogram skippedTokensHisto; @@ -180,7 +180,7 @@ public class CqlActivity extends SimpleActivity implements Activity, ActivityDef Set timerStarts = new HashSet<>(); Set timerStops = new HashSet<>(); - for (OpTemplate stmtDef : stmts) { + for (OpTemplate stmtDef : stmts) { ParsedStmt parsed = stmtDef.getParsed(CqlActivity::canonicalizeBindings).orError(); boolean prepared = stmtDef.getParamOrDefault("prepared", true); @@ -282,7 +282,7 @@ public class CqlActivity extends SimpleActivity implements Activity, ActivityDef .map(s -> s.split("[,: ]")) .map(Save::new) .ifPresent(save_op -> { - psummary.append(" save=>").append(save_op.toString()); + psummary.append(" save=>").append(save_op); template.addRowCycleOperators(save_op); }); @@ -291,7 +291,7 @@ public class CqlActivity extends SimpleActivity implements Activity, ActivityDef .stream().flatMap(Arrays::stream) .map(ResultSetCycleOperators::newOperator) .forEach(rso -> { - psummary.append(" rsop=>").append(rso.toString()); + psummary.append(" rsop=>").append(rso); template.addResultSetOperators(rso); }); @@ -300,7 +300,7 @@ public class CqlActivity extends SimpleActivity implements Activity, ActivityDef .stream().flatMap(Arrays::stream) .map(RowCycleOperators::newOperator) .forEach(ro -> { - psummary.append(" rowop=>").append(ro.toString()); + psummary.append(" rowop=>").append(ro); template.addRowCycleOperators(ro); }); @@ -326,7 +326,7 @@ public class CqlActivity extends SimpleActivity implements Activity, ActivityDef VerificationMetrics vmetrics = getVerificationMetrics(); RowDifferencer.ThreadLocalWrapper differencer = new RowDifferencer.ThreadLocalWrapper(vmetrics, expected, diffType); - psummary.append(" rowop=>verify-fields:").append(differencer.toString()); + psummary.append(" rowop=>verify-fields:").append(differencer); template.addResultSetOperators(new AssertSingleRowResultSet()); template.addRowCycleOperators(differencer); @@ -348,7 +348,7 @@ public class CqlActivity extends SimpleActivity implements Activity, ActivityDef template.getContextualBindings().getBindingsTemplate().addFieldBindings(stmtDef.getParsed().getBindPoints()); if (psummary.length() > 0) { - logger.info("statement named '" + stmtDef.getName() + "' has custom settings:" + psummary.toString()); + logger.info("statement named '" + stmtDef.getName() + "' has custom settings:" + psummary); } planner.addOp(template.resolve(), ratio); diff --git a/driver-cql-shaded/src/main/java/io/nosqlbench/activitytype/cql/statements/rowoperators/verification/VerifierBuilder.java b/driver-cql-shaded/src/main/java/io/nosqlbench/activitytype/cql/statements/rowoperators/verification/VerifierBuilder.java index bac12f7db..9ee30cfe6 100644 --- a/driver-cql-shaded/src/main/java/io/nosqlbench/activitytype/cql/statements/rowoperators/verification/VerifierBuilder.java +++ b/driver-cql-shaded/src/main/java/io/nosqlbench/activitytype/cql/statements/rowoperators/verification/VerifierBuilder.java @@ -8,7 +8,7 @@ import java.util.List; import java.util.Map; public class VerifierBuilder { - public static BindingsTemplate getExpectedValuesTemplate(OpTemplate stmtDef) { + public static BindingsTemplate getExpectedValuesTemplate(OpTemplate stmtDef) { BindingsTemplate expected = new BindingsTemplate(); diff --git a/driver-cqld3-shaded/src/main/java/io/nosqlbench/activitytype/cql/core/CqlActivity.java b/driver-cqld3-shaded/src/main/java/io/nosqlbench/activitytype/cql/core/CqlActivity.java index 5cd959db6..3a46d8499 100644 --- a/driver-cqld3-shaded/src/main/java/io/nosqlbench/activitytype/cql/core/CqlActivity.java +++ b/driver-cqld3-shaded/src/main/java/io/nosqlbench/activitytype/cql/core/CqlActivity.java @@ -70,7 +70,7 @@ public class CqlActivity extends SimpleActivity implements Activity, ActivityDef private final ExceptionHistoMetrics exceptionHistoMetrics; private final ActivityDef activityDef; private final Map namedWriters = new HashMap<>(); - protected List stmts; + protected List> stmts; Timer retryDelayTimer; Timer pagesTimer; private Histogram triesHisto; @@ -179,7 +179,7 @@ public class CqlActivity extends SimpleActivity implements Activity, ActivityDef Set timerStarts = new HashSet<>(); Set timerStops = new HashSet<>(); - for (OpTemplate stmtDef : stmts) { + for (OpTemplate stmtDef : stmts) { ParsedStmt parsed = stmtDef.getParsed(CqlActivity::canonicalizeBindings).orError(); boolean prepared = stmtDef.getParamOrDefault("prepared", true); @@ -281,7 +281,7 @@ public class CqlActivity extends SimpleActivity implements Activity, ActivityDef .map(s -> s.split("[,: ]")) .map(Save::new) .ifPresent(save_op -> { - psummary.append(" save=>").append(save_op.toString()); + psummary.append(" save=>").append(save_op); template.addRowCycleOperators(save_op); }); @@ -290,7 +290,7 @@ public class CqlActivity extends SimpleActivity implements Activity, ActivityDef .stream().flatMap(Arrays::stream) .map(ResultSetCycleOperators::newOperator) .forEach(rso -> { - psummary.append(" rsop=>").append(rso.toString()); + psummary.append(" rsop=>").append(rso); template.addResultSetOperators(rso); }); @@ -299,7 +299,7 @@ public class CqlActivity extends SimpleActivity implements Activity, ActivityDef .stream().flatMap(Arrays::stream) .map(RowCycleOperators::newOperator) .forEach(ro -> { - psummary.append(" rowop=>").append(ro.toString()); + psummary.append(" rowop=>").append(ro); template.addRowCycleOperators(ro); }); @@ -325,7 +325,7 @@ public class CqlActivity extends SimpleActivity implements Activity, ActivityDef VerificationMetrics vmetrics = getVerificationMetrics(); RowDifferencer.ThreadLocalWrapper differencer = new RowDifferencer.ThreadLocalWrapper(vmetrics, expected, diffType); - psummary.append(" rowop=>verify-fields:").append(differencer.toString()); + psummary.append(" rowop=>verify-fields:").append(differencer); template.addResultSetOperators(new AssertSingleRowResultSet()); template.addRowCycleOperators(differencer); @@ -347,7 +347,7 @@ public class CqlActivity extends SimpleActivity implements Activity, ActivityDef template.getContextualBindings().getBindingsTemplate().addFieldBindings(stmtDef.getParsed().getBindPoints()); if (psummary.length() > 0) { - logger.info("statement named '" + stmtDef.getName() + "' has custom settings:" + psummary.toString()); + logger.info("statement named '" + stmtDef.getName() + "' has custom settings:" + psummary); } planner.addOp(template.resolve(), ratio); diff --git a/driver-cqld3-shaded/src/main/java/io/nosqlbench/activitytype/cql/statements/rowoperators/verification/VerifierBuilder.java b/driver-cqld3-shaded/src/main/java/io/nosqlbench/activitytype/cql/statements/rowoperators/verification/VerifierBuilder.java index bac12f7db..9ee30cfe6 100644 --- a/driver-cqld3-shaded/src/main/java/io/nosqlbench/activitytype/cql/statements/rowoperators/verification/VerifierBuilder.java +++ b/driver-cqld3-shaded/src/main/java/io/nosqlbench/activitytype/cql/statements/rowoperators/verification/VerifierBuilder.java @@ -8,7 +8,7 @@ import java.util.List; import java.util.Map; public class VerifierBuilder { - public static BindingsTemplate getExpectedValuesTemplate(OpTemplate stmtDef) { + public static BindingsTemplate getExpectedValuesTemplate(OpTemplate stmtDef) { BindingsTemplate expected = new BindingsTemplate(); diff --git a/driver-dsegraph-shaded/src/main/java/com/datastax/ebdrivers/dsegraph/GraphActivity.java b/driver-dsegraph-shaded/src/main/java/com/datastax/ebdrivers/dsegraph/GraphActivity.java index 73fd8047e..28c14b2e3 100644 --- a/driver-dsegraph-shaded/src/main/java/com/datastax/ebdrivers/dsegraph/GraphActivity.java +++ b/driver-dsegraph-shaded/src/main/java/com/datastax/ebdrivers/dsegraph/GraphActivity.java @@ -46,7 +46,7 @@ public class GraphActivity extends SimpleActivity implements ActivityDefObserver public Timer resultTimer; public Timer logicalGraphOps; public Histogram triesHisto; - protected List stmts; + protected List> stmts; private int stride; private DseSession session; private DseCluster cluster; @@ -100,7 +100,7 @@ public class GraphActivity extends SimpleActivity implements ActivityDefObserver throw new RuntimeException("There were no unfiltered statements found for this activity."); } - for (OpTemplate stmtDef : stmts) { + for (OpTemplate stmtDef : stmts) { ParsedStmt parsed = stmtDef.getParsed().orError(); @@ -209,7 +209,7 @@ public class GraphActivity extends SimpleActivity implements ActivityDefObserver try { cluster = builder.build(); } catch (Exception e) { - logger.error("Error while instantiating cluster from builder: " + e.toString(), e); + logger.error("Error while instantiating cluster from builder: " + e, e); throw e; } activityDef.getParams().getOptionalBoolean("defaultidempotence").map( @@ -236,7 +236,7 @@ public class GraphActivity extends SimpleActivity implements ActivityDefObserver logger.info("cluster-metadata-allhosts:\n" + session.getCluster().getMetadata().getAllHosts()); return session; } catch (Exception e) { - logger.error("Error while creating a session for dsegraph: " + e.toString(), e); + logger.error("Error while creating a session for dsegraph: " + e, e); throw e; } diff --git a/driver-jdbc/src/main/java/io/nosqlbench/activitytype/jdbc/impl/ReadyJDBCOp.java b/driver-jdbc/src/main/java/io/nosqlbench/activitytype/jdbc/impl/ReadyJDBCOp.java index 74258d559..e11a71289 100644 --- a/driver-jdbc/src/main/java/io/nosqlbench/activitytype/jdbc/impl/ReadyJDBCOp.java +++ b/driver-jdbc/src/main/java/io/nosqlbench/activitytype/jdbc/impl/ReadyJDBCOp.java @@ -12,7 +12,7 @@ public class ReadyJDBCOp implements OpDispenser { public ReadyJDBCOp(OpTemplate stmtDef) { ParsedTemplate paramTemplate = new ParsedTemplate(stmtDef.getStmt(), stmtDef.getBindings()); - BindingsTemplate paramBindings = new BindingsTemplate(paramTemplate.getBindPoints()); + BindingsTemplate paramBindings = new BindingsTemplate(paramTemplate.getCheckedBindPoints()); StringBindingsTemplate template = new StringBindingsTemplate(stmtDef.getStmt(), paramBindings); bindings = template.resolve(); diff --git a/driver-kafka/src/main/java/com/datastax/ebdrivers/kafkaproducer/KafkaProducerActivity.java b/driver-kafka/src/main/java/com/datastax/ebdrivers/kafkaproducer/KafkaProducerActivity.java index 54ec6513b..734733eed 100644 --- a/driver-kafka/src/main/java/com/datastax/ebdrivers/kafkaproducer/KafkaProducerActivity.java +++ b/driver-kafka/src/main/java/com/datastax/ebdrivers/kafkaproducer/KafkaProducerActivity.java @@ -73,12 +73,12 @@ public class KafkaProducerActivity extends SimpleActivity { String tagFilter = activityDef.getParams().getOptionalString("tags").orElse(""); StmtsDocList stmtsDocList = StatementsLoader.loadPath(logger, yamlLoc, new StrInterpolator(activityDef), "activities"); - List statements = stmtsDocList.getStmts(tagFilter); + List> statements = stmtsDocList.getStmts(tagFilter); String format = getParams().getOptionalString("format").orElse(null); if (statements.size() > 0) { - for (OpTemplate statement : statements) { + for (OpTemplate statement : statements) { sequencer.addOp( new KafkaStatement(statement, servers, diff --git a/driver-kafka/src/main/java/com/datastax/ebdrivers/kafkaproducer/KafkaStatement.java b/driver-kafka/src/main/java/com/datastax/ebdrivers/kafkaproducer/KafkaStatement.java index 20796b233..d89a40c0b 100644 --- a/driver-kafka/src/main/java/com/datastax/ebdrivers/kafkaproducer/KafkaStatement.java +++ b/driver-kafka/src/main/java/com/datastax/ebdrivers/kafkaproducer/KafkaStatement.java @@ -31,9 +31,9 @@ public class KafkaStatement { private AvroSchema valueSerializerSchema = null; private final String key; - public KafkaStatement(OpTemplate stmtDef, String servers, String clientId, String schemaRegistryUrl) { + public KafkaStatement(OpTemplate stmtDef, String servers, String clientId, String schemaRegistryUrl) { ParsedTemplate paramTemplate = new ParsedTemplate(stmtDef.getStmt(), stmtDef.getBindings()); - BindingsTemplate paramBindings = new BindingsTemplate(paramTemplate.getBindPoints()); + BindingsTemplate paramBindings = new BindingsTemplate(paramTemplate.getCheckedBindPoints()); StringBindingsTemplate template = new StringBindingsTemplate(stmtDef.getStmt(), paramBindings); this.bindings = template.resolve(); diff --git a/driver-mongodb/src/main/java/io/nosqlbench/driver/mongodb/MongoActivity.java b/driver-mongodb/src/main/java/io/nosqlbench/driver/mongodb/MongoActivity.java index bc08e18ca..02bc0a56f 100644 --- a/driver-mongodb/src/main/java/io/nosqlbench/driver/mongodb/MongoActivity.java +++ b/driver-mongodb/src/main/java/io/nosqlbench/driver/mongodb/MongoActivity.java @@ -112,11 +112,11 @@ public class MongoActivity extends SimpleActivity implements ActivityDefObserver TagFilter tagFilter = new TagFilter(tagfilter); stmtsDocList.getStmts().stream().map(tagFilter::matchesTaggedResult).forEach(r -> logger.info(r.getLog())); - List stmts = stmtsDocList.getStmts(tagfilter); + List> stmts = stmtsDocList.getStmts(tagfilter); if (stmts.isEmpty()) { logger.error("No statements found for this activity"); } else { - for (OpTemplate stmt : stmts) { + for (OpTemplate stmt : stmts) { ParsedStmt parsed = stmt.getParsed().orError(); String statement = parsed.getPositionalStatement(Function.identity()); Objects.requireNonNull(statement); diff --git a/driver-mongodb/src/main/java/io/nosqlbench/driver/mongodb/ReadyMongoStatement.java b/driver-mongodb/src/main/java/io/nosqlbench/driver/mongodb/ReadyMongoStatement.java index 67728b8da..199e3b3dc 100644 --- a/driver-mongodb/src/main/java/io/nosqlbench/driver/mongodb/ReadyMongoStatement.java +++ b/driver-mongodb/src/main/java/io/nosqlbench/driver/mongodb/ReadyMongoStatement.java @@ -14,9 +14,9 @@ public class ReadyMongoStatement { private final StringBindings bindings; private final ReadPreference readPreference; - public ReadyMongoStatement(OpTemplate stmtDef) { + public ReadyMongoStatement(OpTemplate stmtDef) { ParsedTemplate paramTemplate = new ParsedTemplate(stmtDef.getStmt(), stmtDef.getBindings()); - BindingsTemplate paramBindings = new BindingsTemplate(paramTemplate.getBindPoints()); + BindingsTemplate paramBindings = new BindingsTemplate(paramTemplate.getCheckedBindPoints()); StringBindingsTemplate template = new StringBindingsTemplate(stmtDef.getStmt(), paramBindings); this.bindings = template.resolve(); diff --git a/driver-stdout/src/main/java/io/nosqlbench/activitytype/stdout/StdoutActivity.java b/driver-stdout/src/main/java/io/nosqlbench/activitytype/stdout/StdoutActivity.java index a830b6e99..3527f0421 100644 --- a/driver-stdout/src/main/java/io/nosqlbench/activitytype/stdout/StdoutActivity.java +++ b/driver-stdout/src/main/java/io/nosqlbench/activitytype/stdout/StdoutActivity.java @@ -81,7 +81,7 @@ public class StdoutActivity extends SimpleActivity implements ActivityDefObserve public void shutdownActivity() { try { if (pw != null) { - if (!fileName.toLowerCase().equals("stdout")) { + if (!fileName.equalsIgnoreCase("stdout")) { logger.trace("Closing non-stdout output stream."); pw.close(); } @@ -112,7 +112,7 @@ public class StdoutActivity extends SimpleActivity implements ActivityDefObserve protected Writer createPrintWriter() { PrintWriter pw; - if (fileName.toLowerCase().equals("stdout")) { + if (fileName.equalsIgnoreCase("stdout")) { pw = getConsoleOut(); } else { try { @@ -134,7 +134,7 @@ public class StdoutActivity extends SimpleActivity implements ActivityDefObserve SequencePlanner sequencer = new SequencePlanner<>(sequencerType); String tagfilter = activityDef.getParams().getOptionalString("tags").orElse(""); - List stmts = stmtsDocList.getStmts(tagfilter); + List> stmts = stmtsDocList.getStmts(tagfilter); String format = getParams().getOptionalString("format").orElse(null); @@ -155,7 +155,7 @@ public class StdoutActivity extends SimpleActivity implements ActivityDefObserve String bindings = getActivityDef().getParams().getOptionalString("bindings").orElse("doc"); activeBindingNames.addAll(stmtsDocList.getDocBindings().keySet()); - Pattern bindingsFilter = Pattern.compile(bindings.toLowerCase().equals("doc") ? ".*" : bindings); + Pattern bindingsFilter = Pattern.compile(bindings.equalsIgnoreCase("doc") ? ".*" : bindings); Set filteredBindingNames = new LinkedHashSet<>(); activeBindingNames .stream() @@ -179,7 +179,7 @@ public class StdoutActivity extends SimpleActivity implements ActivityDefObserve sequencer.addOp(sb, 1L); } } else if (stmts.size() > 0) { - for (OpTemplate stmt : stmts) { + for (OpTemplate stmt : stmts) { ParsedStmt parsed = stmt.getParsed().orError(); BindingsTemplate bt = new BindingsTemplate(parsed.getBindPoints()); String statement = parsed.getPositionalStatement(Function.identity()); diff --git a/driver-web/src/main/java/io/nosqlbench/driver/webdriver/WebDriverActivity.java b/driver-web/src/main/java/io/nosqlbench/driver/webdriver/WebDriverActivity.java index 0f9a5d787..71dd2548f 100644 --- a/driver-web/src/main/java/io/nosqlbench/driver/webdriver/WebDriverActivity.java +++ b/driver-web/src/main/java/io/nosqlbench/driver/webdriver/WebDriverActivity.java @@ -127,7 +127,7 @@ public class WebDriverActivity extends SimpleActivity { cmdBuilder.append(" value='").append(command.getValue().replaceAll("'","\\\\'")).append("'"); } cmdBuilder.append("\n"); - logger.debug("build cmd: '" + testBuilder.toString() + "'"); + logger.debug("build cmd: '" + testBuilder + "'"); String cmdName = sideName+"_"+String.format("%s_%03d", sideName, ++idx); commands.put(cmdName,cmdBuilder.toString()); } @@ -180,13 +180,13 @@ public class WebDriverActivity extends SimpleActivity { SequencePlanner planner = new SequencePlanner<>(sequencerType); String tagfilter = activityDef.getParams().getOptionalString("tags").orElse(""); - List stmts = stmtsDocList.getStmts(tagfilter); + List> stmts = stmtsDocList.getStmts(tagfilter); if (stmts.size() == 0) { throw new BasicError("There were no active statements with tag filter '" + tagfilter + "'"); } - for (OpTemplate optemplate : stmts) { + for (OpTemplate optemplate : stmts) { long ratio = optemplate.getParamOrDefault("ratio", 1); CommandTemplate cmd = new CommandTemplate(optemplate); planner.addOp(cmd, ratio); diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpDef.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpDef.java index 248af1765..8fe14ee48 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpDef.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpDef.java @@ -29,7 +29,7 @@ import java.util.Objects; import java.util.Optional; import java.util.function.Function; -public class OpDef implements OpTemplate { +public class OpDef implements OpTemplate { private static final String FIELD_DESC = "description"; private static final String FIELD_NAME = "name"; @@ -58,8 +58,8 @@ public class OpDef implements OpTemplate { } @Override - public Object getOp() { - return rawStmtDef.getOp(); + public T getOp() { + return (T) rawStmtDef.getOp(); } @Override diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpTemplate.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpTemplate.java index 6678bbdc1..9cfaea540 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpTemplate.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/OpTemplate.java @@ -121,19 +121,19 @@ import java.util.function.Function; * p2: v2 * } */ -public interface OpTemplate extends Tagged { +public interface OpTemplate extends Tagged { String getName(); - Object getOp(); + T getOp(); Map getBindings(); Map getParams(); - Map getParamsAsValueType(Class type); + Map getParamsAsValueType(Class type); - V removeParamOrDefault(String name, V defaultValue); + VT removeParamOrDefault(String name, VT defaultValue); @SuppressWarnings("unchecked") V getParamOrDefault(String name, V defaultValue); diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/StmtsDocList.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/StmtsDocList.java index 2c2abda43..b69b876eb 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/StmtsDocList.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/StmtsDocList.java @@ -20,10 +20,7 @@ package io.nosqlbench.engine.api.activityconfig.yaml; import io.nosqlbench.engine.api.activityconfig.rawyaml.RawStmtsDocList; import io.nosqlbench.engine.api.util.TagFilter; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; public class StmtsDocList implements Iterable { @@ -47,7 +44,7 @@ public class StmtsDocList implements Iterable { .collect(Collectors.toList()); } - public List getStmts() { + public List> getStmts() { return getStmts(""); } @@ -56,14 +53,17 @@ public class StmtsDocList implements Iterable { * @return The list of all included statements for all included blocks of in this document, * including the inherited and overridden values from the this doc and the parent block. */ - public List getStmts(String tagFilterSpec) { + public List> getStmts(String tagFilterSpec) { TagFilter ts = new TagFilter(tagFilterSpec); + List> opTemplates = new ArrayList<>(); - List stmts = getStmtDocs().stream() + + getStmtDocs().stream() .flatMap(d -> d.getStmts().stream()) .filter(ts::matchesTagged) - .collect(Collectors.toList()); - return stmts; + .forEach(opTemplates::add); + + return opTemplates; } diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java index 88338085d..a9bd332d8 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityimpl/SimpleActivity.java @@ -468,10 +468,11 @@ public class SimpleActivity implements Activity, ProgressCapable { stmtsDocList = StatementsLoader.loadPath(logger, op_yaml_loc.get(), interp, "activities"); } - List stmts = stmtsDocList.getStmts(tagfilter); + List> stmts = stmtsDocList.getStmts(tagfilter); List ratios = new ArrayList<>(stmts.size()); for (int i = 0; i < stmts.size(); i++) { - long ratio = stmts.get(i).removeParamOrDefault("ratio", 1); + OpTemplate opTemplate = stmts.get(i); + long ratio = opTemplate.removeParamOrDefault("ratio", 1); ratios.add(ratio); } diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/templating/CommandTemplate.java b/engine-api/src/main/java/io/nosqlbench/engine/api/templating/CommandTemplate.java index 7c958cae1..b2a372754 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/templating/CommandTemplate.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/templating/CommandTemplate.java @@ -48,7 +48,7 @@ public class CommandTemplate { * * @param optpl An OpTemplate */ - public CommandTemplate(OpTemplate optpl) { + public CommandTemplate(OpTemplate optpl) { this(optpl.getName(), optpl.getOp().toString(), optpl.getParamsAsValueType(String.class), optpl.getBindings(), List.of()); } @@ -66,7 +66,7 @@ public class CommandTemplate { * @param optpl An OpTemplate * @param parsers A list of parser functions */ - public CommandTemplate(OpTemplate optpl, List>> parsers) { + public CommandTemplate(OpTemplate optpl, List>> parsers) { this(optpl.getName(), optpl.getOp(), optpl.getParamsAsValueType(String.class), optpl.getBindings(), parsers); } @@ -92,7 +92,13 @@ public class CommandTemplate { * @param bindings A set of named bindings in name:recipe form. * @param optionalParsers A set of functions which, if provided, will be used to read the oneline form. */ - public CommandTemplate(String name, Object op, Map params, Map bindings, List>> optionalParsers) { + public CommandTemplate( + String name, + Object op, + Map params, + Map bindings, + List>> optionalParsers + ) { this.name = name; Map cmd = new HashMap<>(); @@ -103,7 +109,7 @@ public class CommandTemplate { String oneline; if (op instanceof CharSequence) { - oneline=op.toString(); + oneline = op.toString(); } else { throw new BasicError("Unable to create a oneline version of the CommandTemplate with op type of " + op.getClass().getSimpleName()); } @@ -137,8 +143,8 @@ public class CommandTemplate { cmd.forEach((param, value) -> { ParsedTemplate paramTemplate = new ParsedTemplate(value, bindings); - if (paramTemplate.getBindPoints().size() > 0) { - BindingsTemplate paramBindings = new BindingsTemplate(paramTemplate.getBindPoints()); + if (paramTemplate.getCheckedBindPoints().size() > 0) { + BindingsTemplate paramBindings = new BindingsTemplate(paramTemplate.getCheckedBindPoints()); StringBindings paramStringBindings = new StringBindingsTemplate(value, paramBindings).resolve(); dynamics.put(param, paramStringBindings); } else {