document op dispenser as OpDispenser type

This commit is contained in:
Jonathan Shook 2021-02-25 20:57:29 -06:00
parent a27ea6cdb2
commit 50c0363250
14 changed files with 40 additions and 31 deletions

View File

@ -1,6 +1,7 @@
package io.nosqlbench.activitytype.cmds; package io.nosqlbench.activitytype.cmds;
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.templating.CommandTemplate; import io.nosqlbench.engine.api.templating.CommandTemplate;
import io.nosqlbench.nb.api.errors.BasicError; import io.nosqlbench.nb.api.errors.BasicError;
@ -13,10 +14,9 @@ import java.time.temporal.ChronoUnit;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.function.LongFunction;
import java.util.regex.Pattern; import java.util.regex.Pattern;
public class ReadyHttpOp implements LongFunction<HttpOp> { public class ReadyHttpOp implements OpDispenser<HttpOp> {
private final CommandTemplate propertyTemplate; private final CommandTemplate propertyTemplate;
public static final String DEFAULT_OK_BODY = ".+?"; public static final String DEFAULT_OK_BODY = ".+?";

View File

@ -6,6 +6,7 @@ import io.nosqlbench.engine.api.activityapi.core.SyncAction;
import io.nosqlbench.engine.api.activityapi.errorhandling.modular.ErrorDetail; import io.nosqlbench.engine.api.activityapi.errorhandling.modular.ErrorDetail;
import io.nosqlbench.engine.api.activityapi.planning.OpSequence; import io.nosqlbench.engine.api.activityapi.planning.OpSequence;
import io.nosqlbench.engine.api.activityimpl.ActivityDef; import io.nosqlbench.engine.api.activityimpl.ActivityDef;
import io.nosqlbench.engine.api.activityimpl.OpDispenser;
import io.nosqlbench.nb.api.errors.BasicError; import io.nosqlbench.nb.api.errors.BasicError;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
@ -29,7 +30,7 @@ public class HttpAction implements SyncAction {
private final int slot; private final int slot;
private int maxTries = 1; private int maxTries = 1;
private OpSequence<LongFunction<HttpOp>> sequencer; private OpSequence<OpDispenser<HttpOp>> sequencer;
private HttpClient client; private HttpClient client;
private final HttpResponse.BodyHandler<String> bodyreader = HttpResponse.BodyHandlers.ofString(); private final HttpResponse.BodyHandler<String> bodyreader = HttpResponse.BodyHandlers.ofString();

View File

@ -10,6 +10,7 @@ import io.nosqlbench.engine.api.activityapi.core.ActivityDefObserver;
import io.nosqlbench.engine.api.activityapi.errorhandling.modular.NBErrorHandler; import io.nosqlbench.engine.api.activityapi.errorhandling.modular.NBErrorHandler;
import io.nosqlbench.engine.api.activityapi.planning.OpSequence; import io.nosqlbench.engine.api.activityapi.planning.OpSequence;
import io.nosqlbench.engine.api.activityimpl.ActivityDef; import io.nosqlbench.engine.api.activityimpl.ActivityDef;
import io.nosqlbench.engine.api.activityimpl.OpDispenser;
import io.nosqlbench.engine.api.activityimpl.SimpleActivity; import io.nosqlbench.engine.api.activityimpl.SimpleActivity;
import io.nosqlbench.engine.api.metrics.ActivityMetrics; import io.nosqlbench.engine.api.metrics.ActivityMetrics;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
@ -17,7 +18,6 @@ import org.apache.logging.log4j.Logger;
import java.net.http.HttpClient; import java.net.http.HttpClient;
import java.util.function.Function; import java.util.function.Function;
import java.util.function.LongFunction;
public class HttpActivity extends SimpleActivity implements Activity, ActivityDefObserver { public class HttpActivity extends SimpleActivity implements Activity, ActivityDefObserver {
private final static Logger logger = LogManager.getLogger(HttpActivity.class); private final static Logger logger = LogManager.getLogger(HttpActivity.class);
@ -37,7 +37,7 @@ public class HttpActivity extends SimpleActivity implements Activity, ActivityDe
public Timer resultSuccessTimer; public Timer resultSuccessTimer;
public Histogram statusCodeHisto; public Histogram statusCodeHisto;
private OpSequence<LongFunction<HttpOp>> sequencer; private OpSequence<OpDispenser<HttpOp>> sequencer;
private boolean diagnosticsEnabled; private boolean diagnosticsEnabled;
private long timeout = Long.MAX_VALUE; private long timeout = Long.MAX_VALUE;
private NBErrorHandler errorhandler; private NBErrorHandler errorhandler;
@ -129,7 +129,7 @@ public class HttpActivity extends SimpleActivity implements Activity, ActivityDe
return builder.build(); return builder.build();
} }
public OpSequence<LongFunction<HttpOp>> getSequencer() { public OpSequence<OpDispenser<HttpOp>> getSequencer() {
return sequencer; return sequencer;
} }

View File

@ -6,6 +6,7 @@ import io.nosqlbench.activitytype.http.HttpActivity;
import io.nosqlbench.engine.api.activityapi.core.BaseAsyncAction; import io.nosqlbench.engine.api.activityapi.core.BaseAsyncAction;
import io.nosqlbench.engine.api.activityapi.core.ops.fluent.opfacets.TrackedOp; import io.nosqlbench.engine.api.activityapi.core.ops.fluent.opfacets.TrackedOp;
import io.nosqlbench.engine.api.activityapi.planning.OpSequence; import io.nosqlbench.engine.api.activityapi.planning.OpSequence;
import io.nosqlbench.engine.api.activityimpl.OpDispenser;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
@ -18,7 +19,7 @@ public class HttpAsyncAction extends BaseAsyncAction<HttpAsyncOp, HttpActivity>
private final static Logger logger = LogManager.getLogger(HttpAsyncAction.class); private final static Logger logger = LogManager.getLogger(HttpAsyncAction.class);
private OpSequence<LongFunction<HttpOp>> sequencer; private OpSequence<OpDispenser<HttpOp>> sequencer;
private HttpClient client; private HttpClient client;
private CompletableFuture<HttpResponse<Void>> future; private CompletableFuture<HttpResponse<Void>> future;

View File

@ -8,6 +8,7 @@ import com.zaxxer.hikari.HikariDataSource;
import io.nosqlbench.activitytype.jdbc.impl.ReadyJDBCOp; import io.nosqlbench.activitytype.jdbc.impl.ReadyJDBCOp;
import io.nosqlbench.engine.api.activityapi.planning.OpSequence; import io.nosqlbench.engine.api.activityapi.planning.OpSequence;
import io.nosqlbench.engine.api.activityimpl.ActivityDef; import io.nosqlbench.engine.api.activityimpl.ActivityDef;
import io.nosqlbench.engine.api.activityimpl.OpDispenser;
import io.nosqlbench.engine.api.activityimpl.SimpleActivity; import io.nosqlbench.engine.api.activityimpl.SimpleActivity;
import io.nosqlbench.engine.api.metrics.ActivityMetrics; import io.nosqlbench.engine.api.metrics.ActivityMetrics;
import io.nosqlbench.engine.api.metrics.ExceptionCountMetrics; import io.nosqlbench.engine.api.metrics.ExceptionCountMetrics;
@ -17,7 +18,6 @@ import org.apache.logging.log4j.Logger;
import javax.sql.DataSource; import javax.sql.DataSource;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.function.LongFunction;
// This should not be exposed as as service directly unless it can // This should not be exposed as as service directly unless it can
// be used with a modular JDBC configuration. // be used with a modular JDBC configuration.
@ -31,7 +31,7 @@ public abstract class JDBCActivity extends SimpleActivity {
private SQLExceptionCountMetrics sqlExceptionCount; private SQLExceptionCountMetrics sqlExceptionCount;
protected DataSource dataSource; protected DataSource dataSource;
protected OpSequence<LongFunction<String>> opSequence; protected OpSequence<OpDispenser<String>> opSequence;
public JDBCActivity(ActivityDef activityDef) { public JDBCActivity(ActivityDef activityDef) {
super(activityDef); super(activityDef);
@ -91,7 +91,7 @@ public abstract class JDBCActivity extends SimpleActivity {
return dataSource; return dataSource;
} }
public OpSequence<LongFunction<String>> getOpSequence() { public OpSequence<OpDispenser<String>> getOpSequence() {
return opSequence; return opSequence;
} }

View File

@ -4,6 +4,7 @@ import com.codahale.metrics.Timer;
import io.nosqlbench.activitytype.jdbc.api.JDBCActivity; import io.nosqlbench.activitytype.jdbc.api.JDBCActivity;
import io.nosqlbench.engine.api.activityapi.core.SyncAction; import io.nosqlbench.engine.api.activityapi.core.SyncAction;
import io.nosqlbench.engine.api.activityapi.planning.OpSequence; import io.nosqlbench.engine.api.activityapi.planning.OpSequence;
import io.nosqlbench.engine.api.activityimpl.OpDispenser;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
@ -17,7 +18,7 @@ public class JDBCAction implements SyncAction {
private static final Logger LOGGER = LogManager.getLogger(JDBCAction.class); private static final Logger LOGGER = LogManager.getLogger(JDBCAction.class);
private final JDBCActivity activity; private final JDBCActivity activity;
private OpSequence<LongFunction<String>> sequencer; private OpSequence<OpDispenser<String>> sequencer;
public JDBCAction(JDBCActivity a, int slot) { public JDBCAction(JDBCActivity a, int slot) {
activity = a; activity = a;

View File

@ -1,14 +1,13 @@
package io.nosqlbench.activitytype.jdbc.impl; package io.nosqlbench.activitytype.jdbc.impl;
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.virtdata.core.bindings.BindingsTemplate; import io.nosqlbench.virtdata.core.bindings.BindingsTemplate;
import io.nosqlbench.virtdata.core.templates.ParsedTemplate; import io.nosqlbench.virtdata.core.templates.ParsedTemplate;
import io.nosqlbench.virtdata.core.templates.StringBindings; import io.nosqlbench.virtdata.core.templates.StringBindings;
import io.nosqlbench.virtdata.core.templates.StringBindingsTemplate; import io.nosqlbench.virtdata.core.templates.StringBindingsTemplate;
import java.util.function.LongFunction; public class ReadyJDBCOp implements OpDispenser<String> {
public class ReadyJDBCOp implements LongFunction<String> {
private final StringBindings bindings; private final StringBindings bindings;
public ReadyJDBCOp(OpTemplate stmtDef) { public ReadyJDBCOp(OpTemplate stmtDef) {

View File

@ -4,6 +4,7 @@ import io.nosqlbench.driver.jmx.ops.JmxOp;
import io.nosqlbench.engine.api.activityapi.core.SyncAction; import io.nosqlbench.engine.api.activityapi.core.SyncAction;
import io.nosqlbench.engine.api.activityapi.planning.OpSequence; import io.nosqlbench.engine.api.activityapi.planning.OpSequence;
import io.nosqlbench.engine.api.activityimpl.ActivityDef; import io.nosqlbench.engine.api.activityimpl.ActivityDef;
import io.nosqlbench.engine.api.activityimpl.OpDispenser;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
@ -16,7 +17,7 @@ public class JMXAction implements SyncAction {
private final ActivityDef activityDef; private final ActivityDef activityDef;
private final int slot; private final int slot;
private final JMXActivity activity; private final JMXActivity activity;
private OpSequence<LongFunction<JmxOp>> sequencer; private OpSequence<OpDispenser<JmxOp>> sequencer;
public JMXAction(ActivityDef activityDef, int slot, JMXActivity activity) { public JMXAction(ActivityDef activityDef, int slot, JMXActivity activity) {
this.activityDef = activityDef; this.activityDef = activityDef;

View File

@ -4,15 +4,15 @@ import io.nosqlbench.driver.jmx.ops.JmxOp;
import io.nosqlbench.engine.api.activityapi.core.Activity; import io.nosqlbench.engine.api.activityapi.core.Activity;
import io.nosqlbench.engine.api.activityapi.planning.OpSequence; import io.nosqlbench.engine.api.activityapi.planning.OpSequence;
import io.nosqlbench.engine.api.activityimpl.ActivityDef; import io.nosqlbench.engine.api.activityimpl.ActivityDef;
import io.nosqlbench.engine.api.activityimpl.OpDispenser;
import io.nosqlbench.engine.api.activityimpl.SimpleActivity; import io.nosqlbench.engine.api.activityimpl.SimpleActivity;
import io.nosqlbench.engine.api.util.SSLKsFactory; import io.nosqlbench.engine.api.util.SSLKsFactory;
import javax.net.ssl.SSLContext; import javax.net.ssl.SSLContext;
import java.util.function.LongFunction;
public class JMXActivity extends SimpleActivity implements Activity { public class JMXActivity extends SimpleActivity implements Activity {
private OpSequence<LongFunction<JmxOp>> sequence; private OpSequence<OpDispenser<JmxOp>> sequence;
private SSLContext sslContext; private SSLContext sslContext;
public JMXActivity(ActivityDef activityDef) { public JMXActivity(ActivityDef activityDef) {
@ -37,7 +37,7 @@ public class JMXActivity extends SimpleActivity implements Activity {
return sslContext; return sslContext;
} }
public OpSequence<LongFunction<JmxOp>> getSequencer() { public OpSequence<OpDispenser<JmxOp>> getSequencer() {
return sequence; return sequence;
} }
} }

View File

@ -4,6 +4,7 @@ import io.nosqlbench.driver.jmx.ops.JMXExplainOperation;
import io.nosqlbench.driver.jmx.ops.JMXPrintOperation; import io.nosqlbench.driver.jmx.ops.JMXPrintOperation;
import io.nosqlbench.driver.jmx.ops.JMXReadOperation; import io.nosqlbench.driver.jmx.ops.JMXReadOperation;
import io.nosqlbench.driver.jmx.ops.JmxOp; import io.nosqlbench.driver.jmx.ops.JmxOp;
import io.nosqlbench.engine.api.activityimpl.OpDispenser;
import io.nosqlbench.engine.api.templating.CommandTemplate; import io.nosqlbench.engine.api.templating.CommandTemplate;
import javax.management.MalformedObjectNameException; import javax.management.MalformedObjectNameException;
@ -16,9 +17,8 @@ import java.net.MalformedURLException;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.function.LongFunction;
public class ReadyJmxOp implements LongFunction<JmxOp> { public class ReadyJmxOp implements OpDispenser<JmxOp> {
private final CommandTemplate command; private final CommandTemplate command;

View File

@ -8,12 +8,12 @@ import io.nosqlbench.engine.api.activityapi.core.ActivityDefObserver;
import io.nosqlbench.engine.api.activityapi.errorhandling.modular.NBErrorHandler; import io.nosqlbench.engine.api.activityapi.errorhandling.modular.NBErrorHandler;
import io.nosqlbench.engine.api.activityapi.planning.OpSequence; import io.nosqlbench.engine.api.activityapi.planning.OpSequence;
import io.nosqlbench.engine.api.activityimpl.ActivityDef; import io.nosqlbench.engine.api.activityimpl.ActivityDef;
import io.nosqlbench.engine.api.activityimpl.OpDispenser;
import io.nosqlbench.engine.api.activityimpl.SimpleActivity; import io.nosqlbench.engine.api.activityimpl.SimpleActivity;
import io.nosqlbench.engine.api.metrics.ActivityMetrics; import io.nosqlbench.engine.api.metrics.ActivityMetrics;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import java.util.function.LongFunction;
import java.util.function.Supplier; import java.util.function.Supplier;
public class PulsarActivity extends SimpleActivity implements ActivityDefObserver { public class PulsarActivity extends SimpleActivity implements ActivityDefObserver {
@ -28,7 +28,7 @@ public class PulsarActivity extends SimpleActivity implements ActivityDefObserve
private PulsarNBClientConf clientConf; private PulsarNBClientConf clientConf;
private OpSequence<LongFunction<PulsarOp>> sequencer; private OpSequence<OpDispenser<PulsarOp>> sequencer;
// private PulsarClient activityClient; // private PulsarClient activityClient;
private Supplier<PulsarSpace> clientSupplier; private Supplier<PulsarSpace> clientSupplier;
@ -65,7 +65,7 @@ public class PulsarActivity extends SimpleActivity implements ActivityDefObserve
super.onActivityDefUpdate(activityDef); super.onActivityDefUpdate(activityDef);
} }
public OpSequence<LongFunction<PulsarOp>> getSequencer() { public OpSequence<OpDispenser<PulsarOp>> getSequencer() {
return sequencer; return sequencer;
} }

View File

@ -1,10 +1,10 @@
package io.nosqlbench.driver.pulsar.ops; package io.nosqlbench.driver.pulsar.ops;
import io.nosqlbench.driver.pulsar.util.PulsarActivityUtil;
import io.nosqlbench.driver.pulsar.PulsarSpace; import io.nosqlbench.driver.pulsar.PulsarSpace;
import io.nosqlbench.driver.pulsar.PulsarSpaceCache; import io.nosqlbench.driver.pulsar.PulsarSpaceCache;
import io.nosqlbench.driver.pulsar.util.PulsarNBClientConf; import io.nosqlbench.driver.pulsar.util.PulsarActivityUtil;
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.scoping.ScopedSupplier; import io.nosqlbench.engine.api.scoping.ScopedSupplier;
import io.nosqlbench.engine.api.templating.CommandTemplate; import io.nosqlbench.engine.api.templating.CommandTemplate;
import org.apache.pulsar.client.api.Producer; import org.apache.pulsar.client.api.Producer;
@ -13,7 +13,7 @@ import org.apache.pulsar.client.api.Schema;
import java.util.function.LongFunction; import java.util.function.LongFunction;
import java.util.function.Supplier; import java.util.function.Supplier;
public class ReadyPulsarOp implements LongFunction<PulsarOp> { public class ReadyPulsarOp implements OpDispenser<PulsarOp> {
private final CommandTemplate cmdTpl; private final CommandTemplate cmdTpl;
private final PulsarSpace clientSpace; private final PulsarSpace clientSpace;

View File

@ -0,0 +1,6 @@
package io.nosqlbench.engine.api.activityimpl;
import java.util.function.LongFunction;
public interface OpDispenser<T> extends LongFunction<T> {
}

View File

@ -409,9 +409,9 @@ public class SimpleActivity implements Activity, ProgressCapable {
* @param <O> * @param <O>
* @return * @return
*/ */
protected <O> OpSequence<LongFunction<O>> createOpSequenceFromCommands(Function<CommandTemplate, LongFunction<O>> opinit) { protected <O> OpSequence<OpDispenser<O>> createOpSequenceFromCommands(Function<CommandTemplate, OpDispenser<O>> opinit) {
Function<OpTemplate, CommandTemplate> f = CommandTemplate::new; Function<OpTemplate, CommandTemplate> f = CommandTemplate::new;
Function<OpTemplate, LongFunction<O>> opTemplateOFunction = f.andThen(opinit); Function<OpTemplate, OpDispenser<O>> opTemplateOFunction = f.andThen(opinit);
return createOpSequence(opTemplateOFunction); return createOpSequence(opTemplateOFunction);
} }
@ -438,14 +438,14 @@ public class SimpleActivity implements Activity, ProgressCapable {
* @param <O> A holder for an executable operation for the native driver used by this activity. * @param <O> A holder for an executable operation for the native driver used by this activity.
* @return The sequence of operations as determined by filtering and ratios * @return The sequence of operations as determined by filtering and ratios
*/ */
protected <O> OpSequence<LongFunction<O>> createOpSequence(Function<OpTemplate, LongFunction<O>> opinit) { protected <O> OpSequence<OpDispenser<O>> createOpSequence(Function<OpTemplate, OpDispenser<O>> opinit) {
String tagfilter = activityDef.getParams().getOptionalString("tags").orElse(""); String tagfilter = activityDef.getParams().getOptionalString("tags").orElse("");
StrInterpolator interp = new StrInterpolator(activityDef); StrInterpolator interp = new StrInterpolator(activityDef);
SequencerType sequencerType = getParams() SequencerType sequencerType = getParams()
.getOptionalString("seq") .getOptionalString("seq")
.map(SequencerType::valueOf) .map(SequencerType::valueOf)
.orElse(SequencerType.bucket); .orElse(SequencerType.bucket);
SequencePlanner<LongFunction<O>> planner = new SequencePlanner<>(sequencerType); SequencePlanner<OpDispenser<O>> planner = new SequencePlanner<>(sequencerType);
StmtsDocList stmtsDocList = null; StmtsDocList stmtsDocList = null;
@ -471,7 +471,7 @@ public class SimpleActivity implements Activity, ProgressCapable {
for (int i = 0; i < stmts.size(); i++) { for (int i = 0; i < stmts.size(); i++) {
long ratio = ratios.get(i); long ratio = ratios.get(i);
OpTemplate optemplate = stmts.get(i); OpTemplate optemplate = stmts.get(i);
LongFunction<O> driverSpecificReadyOp = opinit.apply(optemplate); OpDispenser<O> driverSpecificReadyOp = opinit.apply(optemplate);
planner.addOp(driverSpecificReadyOp, ratio); planner.addOp(driverSpecificReadyOp, ratio);
} }