switch to ParsedTemplate in cqld4

This commit is contained in:
Jonathan Shook
2021-06-24 11:27:21 -05:00
parent c87778cf32
commit b4f51ce6dd
5 changed files with 39 additions and 24 deletions

View File

@@ -6,7 +6,7 @@ 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;
@@ -15,14 +15,14 @@ public class Cqld4OpMapper implements Function<OpTemplate, OpDispenser<Cqld4Op>>
private final Function<OpTemplate, OpDispenser<Cqld4Op>> 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<OpTemplate, OpDispenser<Cqld4Op>> resolve(OpTemplate) {
if (cmd.isStatic("prepared")) {
private Function<OpTemplate, OpDispenser<Cqld4Op>> 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);

View File

@@ -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<OpTemplate, OpDispenser<Cqld4Op>> {
public class Cqld4BatchStatementDispenser implements OpDispenser<Cqld4Op> {
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<Cqld4Op> apply(OpTemplate opTemplate) {
public Cqld4Op apply(long value) {
return null;
}
}

View File

@@ -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<OpTemplate, OpDispenser<Cqld4Op>> {
public Cqld4PreparedStatementDispenser(CommandTemplate cmd) {
public Cqld4PreparedStatementDispenser(ParsedCommand cmd) {
}
@Override

View File

@@ -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<Cqld4Op> {
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;
}

View File

@@ -51,11 +51,11 @@ public class ParsedCommand implements LongFunction<Map<String, ?>> {
*
* @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<Function<Map<String, Object>, Map<String, Object>>> preprocessors) {
public ParsedCommand(OpTemplate ot, List<Function<Map<String, Object>, Map<String, Object>>> preprocessors) {
this.name = ot.getName();
Map<String, Object> map = ot.getOp().orElseThrow();
@@ -112,4 +112,22 @@ public class ParsedCommand implements LongFunction<Map<String, ?>> {
});
return map;
}
public boolean isStatic(String prepared) {
return statics.containsKey(prepared);
}
public <T> T getStatic(String prepared, Class<T> classOfT) {
return (T) statics.get(prepared);
}
public <T> 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;
}
}