mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-20 11:38:28 -06:00
parameterize driver space in mappers
This commit is contained in:
parent
691e8ae40a
commit
cb826eb62e
@ -24,6 +24,7 @@ import com.datastax.oss.driver.api.core.cql.*;
|
||||
import com.datastax.oss.driver.api.core.metadata.Node;
|
||||
import com.datastax.oss.driver.api.core.metadata.token.Token;
|
||||
import io.nosqlbench.adapter.cqld4.Cqld4OpMetrics;
|
||||
import io.nosqlbench.adapter.cqld4.Cqld4Space;
|
||||
import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlOp;
|
||||
import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser;
|
||||
import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter;
|
||||
@ -36,7 +37,7 @@ import java.time.Duration;
|
||||
import java.util.Map;
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public abstract class Cqld4BaseOpDispenser extends BaseOpDispenser<Cqld4CqlOp> {
|
||||
public abstract class Cqld4BaseOpDispenser extends BaseOpDispenser<Cqld4CqlOp, Cqld4Space> {
|
||||
|
||||
private final static Logger logger = LogManager.getLogger("CQLD4");
|
||||
|
||||
|
@ -20,6 +20,7 @@ import com.datastax.dse.driver.api.core.graph.FluentGraphStatement;
|
||||
import com.datastax.dse.driver.api.core.graph.FluentGraphStatementBuilder;
|
||||
import com.datastax.oss.driver.api.core.CqlSession;
|
||||
import groovy.lang.Script;
|
||||
import io.nosqlbench.adapter.cqld4.Cqld4Space;
|
||||
import io.nosqlbench.adapter.cqld4.optypes.Cqld4FluentGraphOp;
|
||||
import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser;
|
||||
import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter;
|
||||
@ -33,7 +34,7 @@ import java.util.Map;
|
||||
import java.util.function.LongFunction;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class Cqld4FluentGraphOpDispenser extends BaseOpDispenser<Op> {
|
||||
public class Cqld4FluentGraphOpDispenser extends BaseOpDispenser<Op, Cqld4Space> {
|
||||
|
||||
private final LongFunction<? extends String> graphnameFunc;
|
||||
private final LongFunction<CqlSession> sessionFunc;
|
||||
|
@ -19,6 +19,7 @@ package io.nosqlbench.adapter.cqld4.opdispensers;
|
||||
import com.datastax.dse.driver.api.core.graph.ScriptGraphStatement;
|
||||
import com.datastax.dse.driver.api.core.graph.ScriptGraphStatementBuilder;
|
||||
import com.datastax.oss.driver.api.core.CqlSession;
|
||||
import io.nosqlbench.adapter.cqld4.Cqld4Space;
|
||||
import io.nosqlbench.adapter.cqld4.optypes.Cqld4ScriptGraphOp;
|
||||
import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser;
|
||||
import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter;
|
||||
@ -27,7 +28,7 @@ import io.nosqlbench.engine.api.templating.ParsedOp;
|
||||
import java.util.Optional;
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public class Cqld4GremlinOpDispenser extends BaseOpDispenser<Cqld4ScriptGraphOp> {
|
||||
public class Cqld4GremlinOpDispenser extends BaseOpDispenser<Cqld4ScriptGraphOp, Cqld4Space> {
|
||||
|
||||
private final LongFunction<? extends ScriptGraphStatement> stmtFunc;
|
||||
private final LongFunction<CqlSession> sessionFunc;
|
||||
|
@ -31,7 +31,7 @@ import org.apache.logging.log4j.Logger;
|
||||
import java.util.*;
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public class DiagOpDispenser extends BaseOpDispenser<DiagOp> implements NBReconfigurable {
|
||||
public class DiagOpDispenser extends BaseOpDispenser<DiagOp,DiagSpace> implements NBReconfigurable {
|
||||
private final static Logger logger = LogManager.getLogger(DiagOpDispenser.class);
|
||||
private OpFunc opFunc;
|
||||
|
||||
|
@ -18,6 +18,7 @@ package io.nosqlbench.adapter.dynamodb.opdispensers;
|
||||
|
||||
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
|
||||
import com.amazonaws.services.dynamodbv2.model.*;
|
||||
import io.nosqlbench.adapter.dynamodb.DynamoDBSpace;
|
||||
import io.nosqlbench.adapter.dynamodb.optypes.DDBCreateTableOp;
|
||||
import io.nosqlbench.adapter.dynamodb.optypes.DynamoDBOp;
|
||||
import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser;
|
||||
@ -105,7 +106,7 @@ import java.util.function.LongFunction;
|
||||
* }
|
||||
* }</pre>
|
||||
*/
|
||||
public class DDBCreateTableOpDispenser extends BaseOpDispenser<DynamoDBOp> {
|
||||
public class DDBCreateTableOpDispenser extends BaseOpDispenser<DynamoDBOp, DynamoDBSpace> {
|
||||
|
||||
private final DynamoDB ddb;
|
||||
private final LongFunction<String> tableNameFunc;
|
||||
|
@ -18,6 +18,7 @@ package io.nosqlbench.adapter.dynamodb.opdispensers;
|
||||
|
||||
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
|
||||
import com.amazonaws.services.dynamodbv2.model.DeleteTableRequest;
|
||||
import io.nosqlbench.adapter.dynamodb.DynamoDBSpace;
|
||||
import io.nosqlbench.adapter.dynamodb.optypes.DDBDeleteTableOp;
|
||||
import io.nosqlbench.adapter.dynamodb.optypes.DynamoDBOp;
|
||||
import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser;
|
||||
@ -34,7 +35,7 @@ import java.util.function.LongFunction;
|
||||
* }
|
||||
* }</pre>
|
||||
*/
|
||||
public class DDBDeleteTableOpDispenser extends BaseOpDispenser<DynamoDBOp> {
|
||||
public class DDBDeleteTableOpDispenser extends BaseOpDispenser<DynamoDBOp, DynamoDBSpace> {
|
||||
|
||||
private final DynamoDB ddb;
|
||||
private final LongFunction<String> tableNameFunc;
|
||||
|
@ -20,6 +20,7 @@ import com.amazonaws.services.dynamodbv2.document.DynamoDB;
|
||||
import com.amazonaws.services.dynamodbv2.document.PrimaryKey;
|
||||
import com.amazonaws.services.dynamodbv2.document.Table;
|
||||
import com.amazonaws.services.dynamodbv2.document.spec.GetItemSpec;
|
||||
import io.nosqlbench.adapter.dynamodb.DynamoDBSpace;
|
||||
import io.nosqlbench.adapter.dynamodb.optypes.DDBGetItemOp;
|
||||
import io.nosqlbench.adapter.dynamodb.optypes.DynamoDBOp;
|
||||
import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser;
|
||||
@ -30,7 +31,7 @@ import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public class DDBGetItemOpDispenser extends BaseOpDispenser<DynamoDBOp> {
|
||||
public class DDBGetItemOpDispenser extends BaseOpDispenser<DynamoDBOp, DynamoDBSpace> {
|
||||
private final DynamoDB ddb;
|
||||
private final LongFunction<Table> targetTableFunction;
|
||||
private final LongFunction<GetItemSpec> getItemSpecFunc;
|
||||
|
@ -18,6 +18,7 @@ package io.nosqlbench.adapter.dynamodb.opdispensers;
|
||||
|
||||
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
|
||||
import com.amazonaws.services.dynamodbv2.document.Item;
|
||||
import io.nosqlbench.adapter.dynamodb.DynamoDBSpace;
|
||||
import io.nosqlbench.adapter.dynamodb.optypes.DDBPutItemOp;
|
||||
import io.nosqlbench.adapter.dynamodb.optypes.DynamoDBOp;
|
||||
import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser;
|
||||
@ -28,7 +29,7 @@ import io.nosqlbench.api.errors.OpConfigError;
|
||||
import java.util.Map;
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public class DDBPutItemOpDispenser extends BaseOpDispenser<DynamoDBOp> {
|
||||
public class DDBPutItemOpDispenser extends BaseOpDispenser<DynamoDBOp, DynamoDBSpace> {
|
||||
|
||||
private final DynamoDB ddb;
|
||||
private final LongFunction<String> tableNameFunc;
|
||||
|
@ -20,6 +20,7 @@ import com.amazonaws.services.dynamodbv2.document.DynamoDB;
|
||||
import com.amazonaws.services.dynamodbv2.document.PrimaryKey;
|
||||
import com.amazonaws.services.dynamodbv2.document.Table;
|
||||
import com.amazonaws.services.dynamodbv2.document.spec.QuerySpec;
|
||||
import io.nosqlbench.adapter.dynamodb.DynamoDBSpace;
|
||||
import io.nosqlbench.adapter.dynamodb.optypes.DDBQueryOp;
|
||||
import io.nosqlbench.adapter.dynamodb.optypes.DynamoDBOp;
|
||||
import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser;
|
||||
@ -133,7 +134,7 @@ import java.util.function.LongFunction;
|
||||
* }
|
||||
* }</pre>
|
||||
*/
|
||||
public class DDBQueryOpDispenser extends BaseOpDispenser<DynamoDBOp> {
|
||||
public class DDBQueryOpDispenser extends BaseOpDispenser<DynamoDBOp, DynamoDBSpace> {
|
||||
|
||||
private final DynamoDB ddb;
|
||||
private final LongFunction<Table> tableFunc;
|
||||
|
@ -17,6 +17,7 @@
|
||||
package io.nosqlbench.adapter.dynamodb.opdispensers;
|
||||
|
||||
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
|
||||
import io.nosqlbench.adapter.dynamodb.DynamoDBSpace;
|
||||
import io.nosqlbench.adapter.dynamodb.optypes.DynamoDBOp;
|
||||
import io.nosqlbench.adapter.dynamodb.optypes.RawDynamodOp;
|
||||
import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser;
|
||||
@ -25,7 +26,7 @@ import io.nosqlbench.engine.api.templating.ParsedOp;
|
||||
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public class RawDynamoDBOpDispenser extends BaseOpDispenser<DynamoDBOp> {
|
||||
public class RawDynamoDBOpDispenser extends BaseOpDispenser<DynamoDBOp, DynamoDBSpace> {
|
||||
|
||||
private final LongFunction<? extends String> jsonFunction;
|
||||
private final DynamoDB ddb;
|
||||
|
@ -29,7 +29,7 @@ import java.util.Optional;
|
||||
import java.util.function.LongFunction;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class HttpOpDispenser extends BaseOpDispenser<HttpOp> {
|
||||
public class HttpOpDispenser extends BaseOpDispenser<HttpOp,HttpSpace> {
|
||||
|
||||
private final LongFunction<HttpOp> opFunc;
|
||||
public static final String DEFAULT_OK_BODY = ".+?";
|
||||
|
@ -22,7 +22,7 @@ import io.nosqlbench.engine.api.templating.ParsedOp;
|
||||
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public class StdoutOpDispenser extends BaseOpDispenser<StdoutOp> {
|
||||
public class StdoutOpDispenser extends BaseOpDispenser<StdoutOp,StdoutSpace> {
|
||||
|
||||
private final LongFunction<StdoutSpace> ctxfunc;
|
||||
private final LongFunction<String> outFunction;
|
||||
|
@ -17,13 +17,12 @@
|
||||
package io.nosqlbench.adapter.tcp;
|
||||
|
||||
import io.nosqlbench.engine.api.activityimpl.BaseOpDispenser;
|
||||
import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter;
|
||||
import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op;
|
||||
import io.nosqlbench.engine.api.templating.ParsedOp;
|
||||
|
||||
public class TcpOpDispenser extends BaseOpDispenser<Op> {
|
||||
public class TcpOpDispenser extends BaseOpDispenser<Op,TcpAdapterSpace> {
|
||||
|
||||
public TcpOpDispenser(DriverAdapter<? extends Op,TcpAdapterSpace> adapter, ParsedOp op) {
|
||||
public TcpOpDispenser(TcpDriverAdapter adapter, ParsedOp op) {
|
||||
super(adapter, op);
|
||||
}
|
||||
|
||||
|
@ -18,15 +18,14 @@ package io.nosqlbench.adapter.tcp;
|
||||
|
||||
import io.nosqlbench.engine.api.activityimpl.OpDispenser;
|
||||
import io.nosqlbench.engine.api.activityimpl.OpMapper;
|
||||
import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter;
|
||||
import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op;
|
||||
import io.nosqlbench.engine.api.templating.ParsedOp;
|
||||
|
||||
public class TcpOpMapper implements OpMapper<Op> {
|
||||
|
||||
private final DriverAdapter<Op, TcpAdapterSpace> adapter;
|
||||
private final TcpDriverAdapter adapter;
|
||||
|
||||
public TcpOpMapper(DriverAdapter<Op,TcpAdapterSpace> adapter) {
|
||||
public TcpOpMapper(TcpDriverAdapter adapter) {
|
||||
this.adapter = adapter;
|
||||
}
|
||||
|
||||
|
@ -35,10 +35,10 @@ import java.util.concurrent.TimeUnit;
|
||||
*
|
||||
* @param <T> The type of operation
|
||||
*/
|
||||
public abstract class BaseOpDispenser<T extends Op> implements OpDispenser<T> {
|
||||
public abstract class BaseOpDispenser<T extends Op, S> implements OpDispenser<T> {
|
||||
|
||||
private final String name;
|
||||
private final DriverAdapter adapter;
|
||||
protected final DriverAdapter<T, S> adapter;
|
||||
private boolean instrument;
|
||||
private Histogram resultSizeHistogram;
|
||||
private Timer successTimer;
|
||||
@ -46,7 +46,7 @@ public abstract class BaseOpDispenser<T extends Op> implements OpDispenser<T> {
|
||||
private String[] timerStarts = new String[0];
|
||||
private String[] timerStops = new String[0];
|
||||
|
||||
public BaseOpDispenser(DriverAdapter adapter,ParsedOp op) {
|
||||
public BaseOpDispenser(DriverAdapter<T,S> adapter,ParsedOp op) {
|
||||
this.name = op.getName();
|
||||
this.adapter = adapter;
|
||||
timerStarts = op.takeOptionalStaticValue("start-timers", String.class)
|
||||
@ -65,7 +65,7 @@ public abstract class BaseOpDispenser<T extends Op> implements OpDispenser<T> {
|
||||
configureInstrumentation(op);
|
||||
}
|
||||
|
||||
public DriverAdapter getAdapter() {
|
||||
public DriverAdapter<T,S> getAdapter() {
|
||||
return adapter;
|
||||
}
|
||||
|
||||
|
@ -19,18 +19,21 @@ package io.nosqlbench.engine.api.activityimpl.uniform;
|
||||
import io.nosqlbench.api.config.standard.*;
|
||||
import io.nosqlbench.engine.api.activityimpl.uniform.fieldmappers.FieldDestructuringMapper;
|
||||
import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op;
|
||||
import io.nosqlbench.engine.api.templating.ParsedOp;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.LongFunction;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public abstract class BaseDriverAdapter<R extends Op,S> implements DriverAdapter<R,S>, NBConfigurable, NBReconfigurable {
|
||||
|
||||
private DriverSpaceCache<? extends S> spaceCache;
|
||||
private NBConfiguration cfg;
|
||||
private LongFunction<S> spaceF;
|
||||
|
||||
/**
|
||||
* BaseDriverAdapter will take any provided functions from {@link #getOpStmtRemappers()}
|
||||
@ -172,4 +175,10 @@ public abstract class BaseDriverAdapter<R extends Op,S> implements DriverAdapter
|
||||
.asReadOnly();
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongFunction<S> getSpaceFunc(ParsedOp pop) {
|
||||
LongFunction<String> spaceNameF = pop.getAsFunctionOr("space", "default");
|
||||
DriverSpaceCache<? extends S> cache = getSpaceCache();
|
||||
return l -> getSpaceCache().get(spaceNameF.apply(l));
|
||||
}
|
||||
}
|
||||
|
@ -32,6 +32,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
/**
|
||||
* <P>The DriverAdapter interface is expected to be the replacement
|
||||
@ -188,4 +189,6 @@ public interface DriverAdapter<OPTYPE extends Op, SPACETYPE> {
|
||||
default Maturity getAdapterMaturity() {
|
||||
return this.getClass().getAnnotation(Service.class).maturity();
|
||||
}
|
||||
|
||||
LongFunction<SPACETYPE> getSpaceFunc(ParsedOp pop);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user