diff --git a/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/core/CqlActivity.java b/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/core/CqlActivity.java index 8c22191cc..6e54b6503 100644 --- a/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/core/CqlActivity.java +++ b/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/core/CqlActivity.java @@ -133,6 +133,9 @@ public class CqlActivity extends SimpleActivity implements Activity, ActivityDef private void initSequencer() { + Session session = getSession(); + Map fconfig = Map.of("cluster",session.getCluster()); + SequencerType sequencerType = SequencerType.valueOf( getParams().getOptionalString("seq").orElse("bucket") ); @@ -203,7 +206,8 @@ public class CqlActivity extends SimpleActivity implements Activity, ActivityDef CqlBinderTypes binderType = CqlBinderTypes.valueOf(stmtDef.getParams() .getOrDefault("binder", CqlBinderTypes.DEFAULT.toString())); - template = new ReadyCQLStatementTemplate(binderType, getSession(), prepare, ratio, parsed.getName()); + template = new ReadyCQLStatementTemplate(fconfig, binderType, getSession(), prepare, ratio, + parsed.getName()); } else { SimpleStatement simpleStatement = new SimpleStatement(stmtForDriver); cl.ifPresent((conlvl) -> { @@ -218,7 +222,8 @@ public class CqlActivity extends SimpleActivity implements Activity, ActivityDef psummary.append(" idempotent=>").append(i); simpleStatement.setIdempotent(i); }); - template = new ReadyCQLStatementTemplate(getSession(), simpleStatement, ratio, parsed.getName()); + template = new ReadyCQLStatementTemplate(fconfig, getSession(), simpleStatement, ratio, + parsed.getName()); } Optional.ofNullable(stmtDef.getParams().getOrDefault("save", null)) diff --git a/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/statements/binders/SimpleStatementValuesBinder.java b/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/statements/binders/SimpleStatementValuesBinder.java index 3b89e254c..d7d3c5e3e 100644 --- a/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/statements/binders/SimpleStatementValuesBinder.java +++ b/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/statements/binders/SimpleStatementValuesBinder.java @@ -10,7 +10,7 @@ import io.nosqlbench.virtdata.core.bindings.ValuesArrayBinder; * support will be added for parameterized values here. */ public class SimpleStatementValuesBinder - implements ValuesArrayBinder { + implements ValuesArrayBinder { @Override public Statement bindValues(SimpleStatement context, Object[] values) { diff --git a/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/statements/core/ReadyCQLStatementTemplate.java b/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/statements/core/ReadyCQLStatementTemplate.java index c529e7d24..7edda4c2c 100644 --- a/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/statements/core/ReadyCQLStatementTemplate.java +++ b/activitytype-cql/src/main/java/io/nosqlbench/activitytype/cql/statements/core/ReadyCQLStatementTemplate.java @@ -19,6 +19,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.Writer; +import java.util.Map; public class ReadyCQLStatementTemplate { @@ -36,7 +37,8 @@ public class ReadyCQLStatementTemplate { private Histogram rowsFetchedHisto; private Writer resultCsvWriter; - public ReadyCQLStatementTemplate(CqlBinderTypes binderType, Session session, PreparedStatement preparedStmt, long ratio, String name) { + public ReadyCQLStatementTemplate(Map fconfig, CqlBinderTypes binderType, Session session, + PreparedStatement preparedStmt, long ratio, String name) { this.session = session; this.name = name; ValuesArrayBinder binder = binderType.get(session); @@ -44,18 +46,20 @@ public class ReadyCQLStatementTemplate { template = new ContextualBindingsArrayTemplate<>( preparedStmt, - new BindingsTemplate(), + new BindingsTemplate(fconfig), binder ); this.ratio = ratio; } - public ReadyCQLStatementTemplate(Session session, SimpleStatement simpleStatement, long ratio, String name) { + public ReadyCQLStatementTemplate(Map fconfig, Session session, SimpleStatement simpleStatement, + long ratio, + String name) { this.session = session; this.name = name; template = new ContextualBindingsArrayTemplate<>( simpleStatement, - new BindingsTemplate(), + new BindingsTemplate(fconfig), new SimpleStatementValuesBinder() ); this.ratio = ratio; diff --git a/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/BindingsTemplate.java b/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/BindingsTemplate.java index 8a2949549..42a0cfa5f 100644 --- a/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/BindingsTemplate.java +++ b/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/BindingsTemplate.java @@ -39,6 +39,7 @@ import java.util.Optional; */ public class BindingsTemplate { private final static Logger logger = LogManager.getLogger(BindingsTemplate.class); + private final Map fconfig; private List bindPointNames = new ArrayList<>(); private List specifiers = new ArrayList<>(); @@ -46,7 +47,8 @@ public class BindingsTemplate { // specs.forEach(this::addFieldBinding); // } - public BindingsTemplate(List anchors, List specs) { + public BindingsTemplate(Map config, List anchors, List specs) { + this.fconfig = config; if (anchors.size() != specs.size()) { throw new InvalidParameterException("Anchors and Specifiers must be matched pair-wise."); } @@ -55,11 +57,22 @@ public class BindingsTemplate { } } - public BindingsTemplate(List bindpoints) { + public BindingsTemplate(Map config, List bindpoints) { + this.fconfig = config; addFieldBindings(bindpoints); } + public BindingsTemplate(List bindPoints) { + this.fconfig = Map.of(); + addFieldBindings(bindPoints); + + } + + public BindingsTemplate(Map config) { + this.fconfig = config; + } public BindingsTemplate() { + this.fconfig = Map.of(); } public void addFieldBindings(List bindPoints) { @@ -119,7 +132,7 @@ public class BindingsTemplate { public Bindings resolveBindings() { List> dataMappers = new ArrayList<>(); for (String specifier : specifiers) { - Optional> optionalDataMapper = VirtData.getOptionalMapper(specifier); + Optional> optionalDataMapper = VirtData.getOptionalMapper(specifier,fconfig); if (optionalDataMapper.isPresent()) { dataMappers.add(optionalDataMapper.get()); } else { diff --git a/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/VirtData.java b/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/VirtData.java index 3d8fd62b4..d37941541 100644 --- a/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/VirtData.java +++ b/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/VirtData.java @@ -19,7 +19,7 @@ public class VirtData { * @param namesAndSpecs names and specs in "name", "spec", ... form * @return A bindings template that can be used to resolve a bindings instance */ - public static BindingsTemplate getTemplate(String... namesAndSpecs) { + public static BindingsTemplate getTemplate(Map config, String... namesAndSpecs) { if ((namesAndSpecs.length % 2) != 0) { throw new RuntimeException( "args must be in 'name','spec', pairs. " + @@ -29,7 +29,11 @@ public class VirtData { for (int i = 0; i < namesAndSpecs.length; i += 2) { bindPoints.add(new BindPoint(namesAndSpecs[i],namesAndSpecs[i+1])); } - return getTemplate(bindPoints); + return getTemplate(config, bindPoints); + } + + public static BindingsTemplate getTemplate(String... namesAndSpecs) { + return getTemplate(Map.of(), namesAndSpecs); } // /** @@ -57,7 +61,7 @@ public class VirtData { * @param bindPoints A list of {@link BindPoint}s * @return A BindingsTemplate */ - public static BindingsTemplate getTemplate(List bindPoints) { + public static BindingsTemplate getTemplate(Map config, List bindPoints) { for (BindPoint bindPoint : bindPoints) { String bindspec = bindPoint.getBindspec(); VirtDataDSL.ParseResult parseResult = VirtDataDSL.parse(bindspec); @@ -65,7 +69,7 @@ public class VirtData { throw new RuntimeException(parseResult.throwable); } } - return new BindingsTemplate(bindPoints); + return new BindingsTemplate(config, bindPoints); } /** diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/stateful/LoadElement.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/stateful/LoadElement.java index c193c8f2a..1b018660f 100644 --- a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/stateful/LoadElement.java +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/stateful/LoadElement.java @@ -42,8 +42,8 @@ public class LoadElement implements Function, ConfigAware { } @Override - public void applyConfig(Map element) { - Map vars = (Map) element.get(mapname); + public void applyConfig(Map elements) { + Map vars = (Map) elements.get(mapname); if (vars!=null) { this.vars = vars; }