From b4f51ce6dd1dd5c0b5210bbca8cabfac919795f0 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Thu, 24 Jun 2021 11:27:21 -0500 Subject: [PATCH] switch to ParsedTemplate in cqld4 --- .../driver/cqld4/Cqld4OpMapper.java | 18 +++++++-------- .../Cqld4BatchStatementDispenser.java | 13 +++++------ .../Cqld4PreparedStatementDispenser.java | 4 ++-- .../Cqld4SimpleCqlStatementDispenser.java | 6 ++--- .../engine/api/templating/ParsedCommand.java | 22 +++++++++++++++++-- 5 files changed, 39 insertions(+), 24 deletions(-) diff --git a/driver-cqld4/src/main/java/io/nosqlbench/driver/cqld4/Cqld4OpMapper.java b/driver-cqld4/src/main/java/io/nosqlbench/driver/cqld4/Cqld4OpMapper.java index fa43321f7..d206e6e6f 100644 --- a/driver-cqld4/src/main/java/io/nosqlbench/driver/cqld4/Cqld4OpMapper.java +++ b/driver-cqld4/src/main/java/io/nosqlbench/driver/cqld4/Cqld4OpMapper.java @@ -6,28 +6,28 @@ import io.nosqlbench.driver.cqld4.opdispensers.Cqld4PreparedStatementDispenser; import io.nosqlbench.driver.cqld4.opdispensers.Cqld4SimpleCqlStatementDispenser; import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.templating.CommandTemplate; +import io.nosqlbench.engine.api.templating.ParsedCommand; import java.util.function.Function; public class Cqld4OpMapper implements Function> { - private final Function> templateToDispenser; + private final Function> templateToDispenser; private final CqlSession session; - public Cqld4OpMapper(CqlSession session, OpTemplate opTemplate) { + public Cqld4OpMapper(CqlSession session, OpTemplate optpl) { this.session = session; - CommandTemplate cmd = new CommandTemplate(opTemplate); - templateToDispenser = resolve(opTemplate); + ParsedCommand cmd = new ParsedCommand(optpl); + templateToDispenser = resolve(cmd); } - private Function> resolve(OpTemplate) { - if (cmd.isStatic("prepared")) { + private Function> resolve(ParsedCommand cmd) { + if (cmd.isStatic("prepared") && cmd.getStatic("prepared", boolean.class)) { return new Cqld4PreparedStatementDispenser(cmd); } else if (cmd.isStatic("batch")) { - return ot -> new Cqld4BatchStatementDispenser(session,cmd); + return ot -> new Cqld4BatchStatementDispenser(session, cmd); } else { - return ot -> new Cqld4SimpleCqlStatementDispenser(session,cmd); + return ot -> new Cqld4SimpleCqlStatementDispenser(session, cmd); } } diff --git a/driver-cqld4/src/main/java/io/nosqlbench/driver/cqld4/opdispensers/Cqld4BatchStatementDispenser.java b/driver-cqld4/src/main/java/io/nosqlbench/driver/cqld4/opdispensers/Cqld4BatchStatementDispenser.java index ce8b4bc35..285721140 100644 --- a/driver-cqld4/src/main/java/io/nosqlbench/driver/cqld4/opdispensers/Cqld4BatchStatementDispenser.java +++ b/driver-cqld4/src/main/java/io/nosqlbench/driver/cqld4/opdispensers/Cqld4BatchStatementDispenser.java @@ -2,23 +2,20 @@ package io.nosqlbench.driver.cqld4.opdispensers; import com.datastax.oss.driver.api.core.CqlSession; import io.nosqlbench.driver.cqld4.Cqld4Op; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.templating.CommandTemplate; +import io.nosqlbench.engine.api.templating.ParsedCommand; -import java.util.function.Function; - -public class Cqld4BatchStatementDispenser implements Function> { +public class Cqld4BatchStatementDispenser implements OpDispenser { private final CqlSession session; - private final CommandTemplate cmd; + private final ParsedCommand cmd; - public Cqld4BatchStatementDispenser(CqlSession session, CommandTemplate cmd) { + public Cqld4BatchStatementDispenser(CqlSession session, ParsedCommand cmd) { this.session = session; this.cmd = cmd; } @Override - public OpDispenser apply(OpTemplate opTemplate) { + public Cqld4Op apply(long value) { return null; } } diff --git a/driver-cqld4/src/main/java/io/nosqlbench/driver/cqld4/opdispensers/Cqld4PreparedStatementDispenser.java b/driver-cqld4/src/main/java/io/nosqlbench/driver/cqld4/opdispensers/Cqld4PreparedStatementDispenser.java index 779a5d628..0acc9a6d0 100644 --- a/driver-cqld4/src/main/java/io/nosqlbench/driver/cqld4/opdispensers/Cqld4PreparedStatementDispenser.java +++ b/driver-cqld4/src/main/java/io/nosqlbench/driver/cqld4/opdispensers/Cqld4PreparedStatementDispenser.java @@ -3,12 +3,12 @@ package io.nosqlbench.driver.cqld4.opdispensers; import io.nosqlbench.driver.cqld4.Cqld4Op; import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.templating.CommandTemplate; +import io.nosqlbench.engine.api.templating.ParsedCommand; import java.util.function.Function; public class Cqld4PreparedStatementDispenser implements Function> { - public Cqld4PreparedStatementDispenser(CommandTemplate cmd) { + public Cqld4PreparedStatementDispenser(ParsedCommand cmd) { } @Override diff --git a/driver-cqld4/src/main/java/io/nosqlbench/driver/cqld4/opdispensers/Cqld4SimpleCqlStatementDispenser.java b/driver-cqld4/src/main/java/io/nosqlbench/driver/cqld4/opdispensers/Cqld4SimpleCqlStatementDispenser.java index 41767369c..5dcbe46e1 100644 --- a/driver-cqld4/src/main/java/io/nosqlbench/driver/cqld4/opdispensers/Cqld4SimpleCqlStatementDispenser.java +++ b/driver-cqld4/src/main/java/io/nosqlbench/driver/cqld4/opdispensers/Cqld4SimpleCqlStatementDispenser.java @@ -5,14 +5,14 @@ import com.datastax.oss.driver.api.core.cql.SimpleStatement; import io.nosqlbench.driver.cqld4.Cqld4Op; import io.nosqlbench.driver.cqld4.optypes.Cqld4SimpleCqlStatement; import io.nosqlbench.engine.api.activityimpl.OpDispenser; -import io.nosqlbench.engine.api.templating.CommandTemplate; +import io.nosqlbench.engine.api.templating.ParsedCommand; public class Cqld4SimpleCqlStatementDispenser implements OpDispenser { private final CqlSession session; - private final CommandTemplate cmd; + private final ParsedCommand cmd; - public Cqld4SimpleCqlStatementDispenser(CqlSession session, CommandTemplate cmd) { + public Cqld4SimpleCqlStatementDispenser(CqlSession session, ParsedCommand cmd) { this.session = session; this.cmd = cmd; } diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/templating/ParsedCommand.java b/engine-api/src/main/java/io/nosqlbench/engine/api/templating/ParsedCommand.java index 69bd11f2d..8a17d484f 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/templating/ParsedCommand.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/templating/ParsedCommand.java @@ -51,11 +51,11 @@ public class ParsedCommand implements LongFunction> { * * @param ot An OpTemplate representing an operation to be performed in a native driver. */ - ParsedCommand(OpTemplate ot) { + public ParsedCommand(OpTemplate ot) { this(ot, List.of()); } - ParsedCommand(OpTemplate ot, List, Map>> preprocessors) { + public ParsedCommand(OpTemplate ot, List, Map>> preprocessors) { this.name = ot.getName(); Map map = ot.getOp().orElseThrow(); @@ -112,4 +112,22 @@ public class ParsedCommand implements LongFunction> { }); return map; } + + public boolean isStatic(String prepared) { + return statics.containsKey(prepared); + } + + public T getStatic(String prepared, Class classOfT) { + return (T) statics.get(prepared); + } + + public T get(String fieldName, long input) { + if (statics.containsKey(fieldName)) { + return (T) statics.get(fieldName); + } + if (dynamics.containsKey(fieldName)) { + return (T) dynamics.get(fieldName).apply(input); + } + return null; + } }