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,28 +6,28 @@ import io.nosqlbench.driver.cqld4.opdispensers.Cqld4PreparedStatementDispenser;
import io.nosqlbench.driver.cqld4.opdispensers.Cqld4SimpleCqlStatementDispenser; import io.nosqlbench.driver.cqld4.opdispensers.Cqld4SimpleCqlStatementDispenser;
import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate;
import io.nosqlbench.engine.api.activityimpl.OpDispenser; 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; import java.util.function.Function;
public class Cqld4OpMapper implements Function<OpTemplate, OpDispenser<Cqld4Op>> { public class Cqld4OpMapper implements Function<OpTemplate, OpDispenser<Cqld4Op>> {
private final Function<OpTemplate,OpDispenser<Cqld4Op>> templateToDispenser; private final Function<OpTemplate, OpDispenser<Cqld4Op>> templateToDispenser;
private final CqlSession session; private final CqlSession session;
public Cqld4OpMapper(CqlSession session, OpTemplate opTemplate) { public Cqld4OpMapper(CqlSession session, OpTemplate optpl) {
this.session = session; this.session = session;
CommandTemplate cmd = new CommandTemplate(opTemplate); ParsedCommand cmd = new ParsedCommand(optpl);
templateToDispenser = resolve(opTemplate); templateToDispenser = resolve(cmd);
} }
private Function<OpTemplate, OpDispenser<Cqld4Op>> resolve(OpTemplate) { private Function<OpTemplate, OpDispenser<Cqld4Op>> resolve(ParsedCommand cmd) {
if (cmd.isStatic("prepared")) { if (cmd.isStatic("prepared") && cmd.getStatic("prepared", boolean.class)) {
return new Cqld4PreparedStatementDispenser(cmd); return new Cqld4PreparedStatementDispenser(cmd);
} else if (cmd.isStatic("batch")) { } else if (cmd.isStatic("batch")) {
return ot -> new Cqld4BatchStatementDispenser(session,cmd); return ot -> new Cqld4BatchStatementDispenser(session, cmd);
} else { } else {
return ot -> new Cqld4SimpleCqlStatementDispenser(session,cmd); return ot -> new Cqld4SimpleCqlStatementDispenser(session, cmd);
} }
} }

View File

@@ -2,23 +2,20 @@ package io.nosqlbench.driver.cqld4.opdispensers;
import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.CqlSession;
import io.nosqlbench.driver.cqld4.Cqld4Op; 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.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 OpDispenser<Cqld4Op> {
public class Cqld4BatchStatementDispenser implements Function<OpTemplate, OpDispenser<Cqld4Op>> {
private final CqlSession session; 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.session = session;
this.cmd = cmd; this.cmd = cmd;
} }
@Override @Override
public OpDispenser<Cqld4Op> apply(OpTemplate opTemplate) { public Cqld4Op apply(long value) {
return null; return null;
} }
} }

View File

@@ -3,12 +3,12 @@ package io.nosqlbench.driver.cqld4.opdispensers;
import io.nosqlbench.driver.cqld4.Cqld4Op; import io.nosqlbench.driver.cqld4.Cqld4Op;
import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate;
import io.nosqlbench.engine.api.activityimpl.OpDispenser; 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; import java.util.function.Function;
public class Cqld4PreparedStatementDispenser implements Function<OpTemplate, OpDispenser<Cqld4Op>> { public class Cqld4PreparedStatementDispenser implements Function<OpTemplate, OpDispenser<Cqld4Op>> {
public Cqld4PreparedStatementDispenser(CommandTemplate cmd) { public Cqld4PreparedStatementDispenser(ParsedCommand cmd) {
} }
@Override @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.Cqld4Op;
import io.nosqlbench.driver.cqld4.optypes.Cqld4SimpleCqlStatement; import io.nosqlbench.driver.cqld4.optypes.Cqld4SimpleCqlStatement;
import io.nosqlbench.engine.api.activityimpl.OpDispenser; 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> { public class Cqld4SimpleCqlStatementDispenser implements OpDispenser<Cqld4Op> {
private final CqlSession session; 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.session = session;
this.cmd = cmd; 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. * @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()); 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(); this.name = ot.getName();
Map<String, Object> map = ot.getOp().orElseThrow(); Map<String, Object> map = ot.getOp().orElseThrow();
@@ -112,4 +112,22 @@ public class ParsedCommand implements LongFunction<Map<String, ?>> {
}); });
return map; 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;
}
} }