mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
this commit fully replaces Activity with StandardActivity
This commit is contained in:
parent
862ea8fd3b
commit
ced01b132b
@ -30,7 +30,7 @@ import io.nosqlbench.nb.annotations.Service;
|
|||||||
import java.util.function.LongFunction;
|
import java.util.function.LongFunction;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Special thanks to Justin Chu who authored the original NoSQLBench MongoDB ActivityType.
|
* Special thanks to Justin Chu who authored the original NoSQLBench MongoDB StandardActivityType.
|
||||||
*/
|
*/
|
||||||
@Service(value = DriverAdapter.class, selector = "mongodb")
|
@Service(value = DriverAdapter.class, selector = "mongodb")
|
||||||
public class MongodbDriverAdapter extends BaseDriverAdapter<MongoOp<?>, MongoSpace> {
|
public class MongodbDriverAdapter extends BaseDriverAdapter<MongoOp<?>, MongoSpace> {
|
||||||
|
@ -225,7 +225,7 @@ opfield1: value1
|
|||||||
</UL>
|
</UL>
|
||||||
</P>
|
</P>
|
||||||
|
|
||||||
<H3>Enabling Activity Params</H3>
|
<H3>Enabling StandardActivity Params</H3>
|
||||||
<P>If a user wants to allow an activity param as an default for an fields, they must publish the op
|
<P>If a user wants to allow an activity param as an default for an fields, they must publish the op
|
||||||
field
|
field
|
||||||
name in the configuration model for the activity. Otherwise it is an error to specify the value at
|
name in the configuration model for the activity. Otherwise it is an error to specify the value at
|
||||||
@ -353,7 +353,7 @@ prepared: false
|
|||||||
document level,
|
document level,
|
||||||
down to each block and then down to each statement.
|
down to each block and then down to each statement.
|
||||||
|
|
||||||
<H3>Activity Params</H3>
|
<H3>StandardActivity Params</H3>
|
||||||
<PRE>{@code
|
<PRE>{@code
|
||||||
./nb run driver=... workload=... cl=LOCAL_QUORUM
|
./nb run driver=... workload=... cl=LOCAL_QUORUM
|
||||||
}</PRE>
|
}</PRE>
|
||||||
|
@ -106,7 +106,7 @@ public class ActivityDef implements NBNamedElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return tbe Activity Driver Adapter Name
|
* Return tbe StandardActivity Driver Adapter Name
|
||||||
*
|
*
|
||||||
* @return the driver adapter name
|
* @return the driver adapter name
|
||||||
*/
|
*/
|
||||||
|
@ -76,7 +76,7 @@ public class GrafanaRegionAnalyzer implements Runnable {
|
|||||||
//details:
|
//details:
|
||||||
// params: ActivityDef:(4)/{keycount=5000000000L, hosts=node1, main-cycles=500, threads=1, workload=./keyvalue.yaml, cycles=2, stride=2, tags=block:'schema.*', password=cassandra, rf=3, pooling=16:16:500, driver=cql, rampup-cycles=5000000000, alias=keyvalue_default_schema, valuecount=5000000000L, errors=count, username=cassandra}
|
// params: ActivityDef:(4)/{keycount=5000000000L, hosts=node1, main-cycles=500, threads=1, workload=./keyvalue.yaml, cycles=2, stride=2, tags=block:'schema.*', password=cassandra, rf=3, pooling=16:16:500, driver=cql, rampup-cycles=5000000000, alias=keyvalue_default_schema, valuecount=5000000000L, errors=count, username=cassandra}
|
||||||
//labels:
|
//labels:
|
||||||
// layer: Activity
|
// layer: StandardActivity
|
||||||
// alias: keyvalue_default_schema
|
// alias: keyvalue_default_schema
|
||||||
// driver: cql
|
// driver: cql
|
||||||
// workload: ./keyvalue.yaml
|
// workload: ./keyvalue.yaml
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
package io.nosqlbench.engine.api.activityapi.core;
|
package io.nosqlbench.engine.api.activityapi.core;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An ActionDispenser is created for each Activity instance within a scenario.
|
* An ActionDispenser is created for each StandardActivity instance within a scenario.
|
||||||
* When a thread is created, the motor and its input and action instances are resolved.
|
* When a thread is created, the motor and its input and action instances are resolved.
|
||||||
* The ActionDispenser is responsible for choosing how the action is resolved,
|
* The ActionDispenser is responsible for choosing how the action is resolved,
|
||||||
* whether that is a shared thread-safe action or an action per slot.
|
* whether that is a shared thread-safe action or an action per slot.
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package io.nosqlbench.engine.api.activityapi.core;
|
package io.nosqlbench.engine.api.activityapi.core;
|
||||||
|
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -23,5 +25,5 @@ import java.util.Map;
|
|||||||
* activities that are present in a configuration. Those dispensers will have th
|
* activities that are present in a configuration. Those dispensers will have th
|
||||||
*/
|
*/
|
||||||
public interface ActivitiesAware {
|
public interface ActivitiesAware {
|
||||||
void setActivitiesMap(Map<String,Activity> activities);
|
void setActivitiesMap(Map<String, StandardActivity> activities);
|
||||||
}
|
}
|
||||||
|
@ -1,123 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2022-2023 nosqlbench
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package io.nosqlbench.engine.api.activityapi.core;
|
|
||||||
|
|
||||||
import com.codahale.metrics.Counting;
|
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.ActivityWiring;
|
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
|
||||||
import io.nosqlbench.nb.api.components.core.NBComponent;
|
|
||||||
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
|
||||||
import io.nosqlbench.nb.api.engine.activityimpl.ParameterMap;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.progress.ProgressCapable;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.progress.StateCapable;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.errorhandling.ErrorMetrics;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.simrate.RateLimiter;
|
|
||||||
import io.nosqlbench.engine.api.activityimpl.motor.RunStateTally;
|
|
||||||
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricTimer;
|
|
||||||
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.PrintWriter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Provides the components needed to build and run an activity a runtime.
|
|
||||||
* The easiest way to build a useful Activity is to extend {@link StandardActivity}.
|
|
||||||
*/
|
|
||||||
public interface Activity extends Comparable<Activity>, ActivityDefObserver, ProgressCapable, StateCapable, NBComponent {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Register an object which should be closed after this activity is shutdown.
|
|
||||||
*
|
|
||||||
* @param closeable An Autocloseable object
|
|
||||||
*/
|
|
||||||
void registerAutoCloseable(AutoCloseable closeable);
|
|
||||||
|
|
||||||
ActivityDef getActivityDef();
|
|
||||||
|
|
||||||
default String getAlias() {
|
|
||||||
return this.getActivityDef().getAlias();
|
|
||||||
}
|
|
||||||
|
|
||||||
default ParameterMap getParams() {
|
|
||||||
return this.getActivityDef().getParams();
|
|
||||||
}
|
|
||||||
|
|
||||||
default void initActivity() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Close all autocloseables that have been registered with this Activity.
|
|
||||||
*/
|
|
||||||
void closeAutoCloseables();
|
|
||||||
|
|
||||||
@Override
|
|
||||||
RunState getRunState();
|
|
||||||
|
|
||||||
void setRunState(RunState runState);
|
|
||||||
|
|
||||||
long getStartedAtMillis();
|
|
||||||
|
|
||||||
default void shutdownActivity() {
|
|
||||||
}
|
|
||||||
|
|
||||||
default String getCycleSummary() {
|
|
||||||
return this.getActivityDef().getCycleSummary();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the current cycle rate limiter for this activity.
|
|
||||||
* The cycle rate limiter is used to throttle the rate at which
|
|
||||||
* cycles are dispatched across all threads in the activity
|
|
||||||
* @return the cycle {@link RateLimiter}
|
|
||||||
*/
|
|
||||||
RateLimiter getCycleLimiter();
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the current stride rate limiter for this activity.
|
|
||||||
* The stride rate limiter is used to throttle the rate at which
|
|
||||||
* new strides are dispatched across all threads in an activity.
|
|
||||||
* @return The stride {@link RateLimiter}
|
|
||||||
*/
|
|
||||||
RateLimiter getStrideLimiter();
|
|
||||||
|
|
||||||
PrintWriter getConsoleOut();
|
|
||||||
|
|
||||||
InputStream getConsoleIn();
|
|
||||||
|
|
||||||
void setConsoleOut(PrintWriter writer);
|
|
||||||
|
|
||||||
ErrorMetrics getExceptionMetrics();
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * When a driver needs to identify an error uniquely for the purposes of
|
|
||||||
// * routing it to the correct error handler, or naming it in logs, or naming
|
|
||||||
// * metrics, override this method in your activity.
|
|
||||||
// * @return A function that can reliably and safely map an instance of Throwable to a stable name.
|
|
||||||
// */
|
|
||||||
// default Function<Throwable,String> getErrorNameMapper() {
|
|
||||||
// return t -> t.getClass().getSimpleName();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
|
|
||||||
int getMaxTries();
|
|
||||||
default int getHdrDigits() {
|
|
||||||
return this.getParams().getOptionalInteger("hdr_digits").orElse(4);
|
|
||||||
}
|
|
||||||
RunStateTally getRunStateTally();
|
|
||||||
ActivityWiring getWiring();
|
|
||||||
|
|
||||||
}
|
|
@ -17,6 +17,7 @@
|
|||||||
package io.nosqlbench.engine.api.activityapi.core;
|
package io.nosqlbench.engine.api.activityapi.core;
|
||||||
|
|
||||||
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.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
||||||
import io.nosqlbench.nb.api.engine.activityimpl.ParameterMap;
|
import io.nosqlbench.nb.api.engine.activityimpl.ParameterMap;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
@ -25,9 +26,10 @@ import org.apache.logging.log4j.LogManager;
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param <D> An type of state holder for an operation, holding everything unique to that cycle and operation
|
* @param <D> An type of state holder for an operation, holding everything unique to that cycle and operation
|
||||||
* @param <A> An type of of an Activity, a state holder for a runtime instance of an Activity
|
* @param <A> An type of of an Activity, a state holder for a runtime instance of an StandardActivity
|
||||||
*/
|
*/
|
||||||
public abstract class BaseAsyncAction<D, A extends Activity> implements AsyncAction<D>, Stoppable, ActivityDefObserver {
|
public abstract class BaseAsyncAction<D, A extends StandardActivity> implements AsyncAction<D>,
|
||||||
|
Stoppable, ActivityDefObserver {
|
||||||
private final static Logger logger = LogManager.getLogger("BaseAsyncAction");
|
private final static Logger logger = LogManager.getLogger("BaseAsyncAction");
|
||||||
|
|
||||||
protected final A activity;
|
protected final A activity;
|
||||||
|
@ -21,6 +21,7 @@ import com.codahale.metrics.Histogram;
|
|||||||
import com.codahale.metrics.Timer;
|
import com.codahale.metrics.Timer;
|
||||||
import io.nosqlbench.adapters.api.activityimpl.OpDispenser;
|
import io.nosqlbench.adapters.api.activityimpl.OpDispenser;
|
||||||
import io.nosqlbench.engine.api.activityapi.planning.OpSequence;
|
import io.nosqlbench.engine.api.activityapi.planning.OpSequence;
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
||||||
import io.nosqlbench.nb.api.engine.activityimpl.ParameterMap;
|
import io.nosqlbench.nb.api.engine.activityimpl.ParameterMap;
|
||||||
import io.nosqlbench.nb.api.engine.metrics.instruments.*;
|
import io.nosqlbench.nb.api.engine.metrics.instruments.*;
|
||||||
@ -33,7 +34,7 @@ public class ComponentActivityInstrumentation {
|
|||||||
private static final String SERVICE_TIME = "_servicetime";
|
private static final String SERVICE_TIME = "_servicetime";
|
||||||
private static final String RESPONSE_TIME = "_responsetime";
|
private static final String RESPONSE_TIME = "_responsetime";
|
||||||
|
|
||||||
private final Activity activity;
|
private final StandardActivity activity;
|
||||||
private final ActivityDef def;
|
private final ActivityDef def;
|
||||||
private final ParameterMap params;
|
private final ParameterMap params;
|
||||||
private final int hdrdigits;
|
private final int hdrdigits;
|
||||||
@ -55,7 +56,7 @@ public class ComponentActivityInstrumentation {
|
|||||||
private NBMetricGauge errorRateTotal;
|
private NBMetricGauge errorRateTotal;
|
||||||
private NBMetricGauge errorsTotal;
|
private NBMetricGauge errorsTotal;
|
||||||
|
|
||||||
public ComponentActivityInstrumentation(final Activity activity) {
|
public ComponentActivityInstrumentation(final StandardActivity activity) {
|
||||||
this.activity = activity;
|
this.activity = activity;
|
||||||
def = activity.getActivityDef();
|
def = activity.getActivityDef();
|
||||||
params = this.def.getParams();
|
params = this.def.getParams();
|
||||||
|
@ -34,7 +34,7 @@ import java.io.PrintWriter;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides the components needed to build and run an activity a runtime.
|
* Provides the components needed to build and run an activity a runtime.
|
||||||
* The easiest way to build a useful Activity is to extend {@link StandardActivity}.
|
* The easiest way to build a useful StandardActivity is to extend {@link StandardActivity}.
|
||||||
*/
|
*/
|
||||||
public interface IActivityWiring extends Comparable<IActivityWiring>, ActivityDefObserver, ProgressCapable, StateCapable, NBComponent {
|
public interface IActivityWiring extends Comparable<IActivityWiring>, ActivityDefObserver, ProgressCapable, StateCapable, NBComponent {
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ package io.nosqlbench.engine.api.activityapi.core;
|
|||||||
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A MotorDispenser is created for each Activity instance within a scenario.
|
* A MotorDispenser is created for each StandardActivity instance within a scenario.
|
||||||
* When a thread is created, the motor and its input and action instances are resolved.
|
* When a thread is created, the motor and its input and action instances are resolved.
|
||||||
* The MotorDispenser is responsible for choosing how the motor is resolved,
|
* The MotorDispenser is responsible for choosing how the motor is resolved,
|
||||||
* whether that is a shared thread-safe motor or, more conventionally, a separate motor per slot.
|
* whether that is a shared thread-safe motor or, more conventionally, a separate motor per slot.
|
||||||
|
@ -17,15 +17,11 @@
|
|||||||
package io.nosqlbench.engine.api.activityapi.core.ops.fluent;
|
package io.nosqlbench.engine.api.activityapi.core.ops.fluent;
|
||||||
|
|
||||||
import com.codahale.metrics.Counter;
|
import com.codahale.metrics.Counter;
|
||||||
import com.codahale.metrics.Counting;
|
|
||||||
import com.codahale.metrics.Timer;
|
import com.codahale.metrics.Timer;
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.ActivityDefObserver;
|
import io.nosqlbench.engine.api.activityapi.core.ActivityDefObserver;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.ops.fluent.opfacets.*;
|
import io.nosqlbench.engine.api.activityapi.core.ops.fluent.opfacets.*;
|
||||||
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricCounter;
|
|
||||||
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricTimer;
|
|
||||||
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
@ -16,18 +16,15 @@
|
|||||||
|
|
||||||
package io.nosqlbench.engine.api.activityapi.core.progress;
|
package io.nosqlbench.engine.api.activityapi.core.progress;
|
||||||
|
|
||||||
import com.codahale.metrics.Counting;
|
|
||||||
import com.codahale.metrics.Timer;
|
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricTimer;
|
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricTimer;
|
||||||
import io.nosqlbench.nb.api.engine.util.Unit;
|
import io.nosqlbench.nb.api.engine.util.Unit;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
||||||
public class ActivityMetricProgressMeter implements ProgressMeterDisplay, CompletedMeter, RemainingMeter, ActiveMeter {
|
public class ActivityMetricProgressMeter implements ProgressMeterDisplay, CompletedMeter, RemainingMeter, ActiveMeter {
|
||||||
|
|
||||||
private final Activity activity;
|
private final StandardActivity activity;
|
||||||
private final Instant startInstant;
|
private final Instant startInstant;
|
||||||
private final NBMetricTimer bindTimer;
|
private final NBMetricTimer bindTimer;
|
||||||
private final NBMetricTimer cyclesTimer;
|
private final NBMetricTimer cyclesTimer;
|
||||||
|
@ -16,8 +16,8 @@
|
|||||||
|
|
||||||
package io.nosqlbench.engine.api.activityapi.cyclelog.filters;
|
package io.nosqlbench.engine.api.activityapi.cyclelog.filters;
|
||||||
|
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.api.util.SimpleConfig;
|
import io.nosqlbench.engine.api.util.SimpleConfig;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.nb.annotations.Maturity;
|
import io.nosqlbench.nb.annotations.Maturity;
|
||||||
import io.nosqlbench.nb.api.spi.SimpleServiceLoader;
|
import io.nosqlbench.nb.api.spi.SimpleServiceLoader;
|
||||||
|
|
||||||
@ -28,7 +28,7 @@ public interface ExperimentalResultFilterType {
|
|||||||
SimpleServiceLoader<ExperimentalResultFilterType> FINDER =
|
SimpleServiceLoader<ExperimentalResultFilterType> FINDER =
|
||||||
new SimpleServiceLoader<>(ExperimentalResultFilterType.class, Maturity.Any);
|
new SimpleServiceLoader<>(ExperimentalResultFilterType.class, Maturity.Any);
|
||||||
|
|
||||||
default IntPredicateDispenser getFilterDispenser(Activity activity) {
|
default IntPredicateDispenser getFilterDispenser(StandardActivity activity) {
|
||||||
SimpleConfig conf = new SimpleConfig(activity.getWiring(), "resultfilter");
|
SimpleConfig conf = new SimpleConfig(activity.getWiring(), "resultfilter");
|
||||||
return getFilterDispenser(conf);
|
return getFilterDispenser(conf);
|
||||||
}
|
}
|
||||||
|
@ -16,9 +16,7 @@
|
|||||||
|
|
||||||
package io.nosqlbench.engine.api.activityapi.cyclelog.inputs.cyclelog;
|
package io.nosqlbench.engine.api.activityapi.cyclelog.inputs.cyclelog;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.ActivityWiring;
|
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.actions.StandardAction;
|
|
||||||
import io.nosqlbench.nb.api.components.core.NBBaseComponent;
|
import io.nosqlbench.nb.api.components.core.NBBaseComponent;
|
||||||
import io.nosqlbench.nb.api.components.core.NBComponent;
|
import io.nosqlbench.nb.api.components.core.NBComponent;
|
||||||
import io.nosqlbench.nb.api.labels.NBLabeledElement;
|
import io.nosqlbench.nb.api.labels.NBLabeledElement;
|
||||||
@ -29,7 +27,6 @@ import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleSegmen
|
|||||||
import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.ResultReadable;
|
import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.ResultReadable;
|
||||||
import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results_rle.CycleResultsRLEBufferReadable;
|
import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results_rle.CycleResultsRLEBufferReadable;
|
||||||
import io.nosqlbench.engine.api.util.SimpleConfig;
|
import io.nosqlbench.engine.api.util.SimpleConfig;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult;
|
import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult;
|
||||||
import io.nosqlbench.engine.api.activityapi.input.Input;
|
import io.nosqlbench.engine.api.activityapi.input.Input;
|
||||||
|
|
||||||
|
@ -22,13 +22,11 @@ import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results_rle.CycleRe
|
|||||||
import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results_rle.CycleSpanResults;
|
import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results_rle.CycleSpanResults;
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.ActivityWiring;
|
import io.nosqlbench.engine.api.activityimpl.uniform.ActivityWiring;
|
||||||
import io.nosqlbench.engine.api.util.SimpleConfig;
|
import io.nosqlbench.engine.api.util.SimpleConfig;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult;
|
import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult;
|
||||||
import io.nosqlbench.engine.api.activityapi.cyclelog.inputs.cyclelog.CanFilterResultValue;
|
import io.nosqlbench.engine.api.activityapi.cyclelog.inputs.cyclelog.CanFilterResultValue;
|
||||||
import io.nosqlbench.engine.api.activityapi.output.Output;
|
import io.nosqlbench.engine.api.activityapi.output.Output;
|
||||||
import io.nosqlbench.nb.api.components.core.NBBaseComponent;
|
import io.nosqlbench.nb.api.components.core.NBBaseComponent;
|
||||||
import io.nosqlbench.nb.api.components.core.NBComponent;
|
import io.nosqlbench.nb.api.components.core.NBComponent;
|
||||||
import io.nosqlbench.nb.api.config.standard.TestComponent;
|
|
||||||
import io.nosqlbench.nb.api.labels.NBLabels;
|
import io.nosqlbench.nb.api.labels.NBLabels;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
package io.nosqlbench.engine.api.activityapi.cyclelog.outputs.cyclelog;
|
package io.nosqlbench.engine.api.activityapi.cyclelog.outputs.cyclelog;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.cyclelog.outputs.ReorderingConcurrentResultBuffer;
|
import io.nosqlbench.engine.api.activityapi.cyclelog.outputs.ReorderingConcurrentResultBuffer;
|
||||||
import io.nosqlbench.engine.api.activityapi.input.Input;
|
import io.nosqlbench.engine.api.activityapi.input.Input;
|
||||||
import io.nosqlbench.engine.api.activityapi.output.Output;
|
import io.nosqlbench.engine.api.activityapi.output.Output;
|
||||||
|
@ -18,7 +18,7 @@ package io.nosqlbench.engine.api.activityapi.cyclelog.outputs.logger;
|
|||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.output.Output;
|
import io.nosqlbench.engine.api.activityapi.output.Output;
|
||||||
import io.nosqlbench.engine.api.activityapi.output.OutputDispenser;
|
import io.nosqlbench.engine.api.activityapi.output.OutputDispenser;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.nb.annotations.Service;
|
import io.nosqlbench.nb.annotations.Service;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
@ -27,9 +27,9 @@ import org.apache.logging.log4j.Logger;
|
|||||||
public class LoggingMarkerDispenser implements OutputDispenser {
|
public class LoggingMarkerDispenser implements OutputDispenser {
|
||||||
|
|
||||||
private final static Logger logger = LogManager.getLogger(LoggingMarkerDispenser.class);
|
private final static Logger logger = LogManager.getLogger(LoggingMarkerDispenser.class);
|
||||||
private final Activity activity;
|
private final StandardActivity activity;
|
||||||
|
|
||||||
public LoggingMarkerDispenser(Activity activity) {
|
public LoggingMarkerDispenser(StandardActivity activity) {
|
||||||
this.activity = activity;
|
this.activity = activity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
package io.nosqlbench.engine.api.activityapi.input;
|
package io.nosqlbench.engine.api.activityapi.input;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An InputDispenser is created for each Activity instance within a scenario.
|
* An InputDispenser is created for each StandardActivity instance within a scenario.
|
||||||
* When a thread is created, the motor and its input and action instances are resolved.
|
* When a thread is created, the motor and its input and action instances are resolved.
|
||||||
* The InputDispenser is responsible for choosing how the input is resolved,
|
* The InputDispenser is responsible for choosing how the input is resolved,
|
||||||
* whether that is a shared thread-safe input or an input per slot.
|
* whether that is a shared thread-safe input or an input per slot.
|
||||||
|
@ -16,11 +16,8 @@
|
|||||||
|
|
||||||
package io.nosqlbench.engine.api.activityapi.input;
|
package io.nosqlbench.engine.api.activityapi.input;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.ActivityWiring;
|
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.nb.annotations.Maturity;
|
import io.nosqlbench.nb.annotations.Maturity;
|
||||||
import io.nosqlbench.nb.api.components.core.NBComponent;
|
|
||||||
import io.nosqlbench.nb.api.spi.SimpleServiceLoader;
|
import io.nosqlbench.nb.api.spi.SimpleServiceLoader;
|
||||||
|
|
||||||
public interface InputType {
|
public interface InputType {
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
package io.nosqlbench.engine.api.activityapi.output;
|
package io.nosqlbench.engine.api.activityapi.output;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.ActivityWiring;
|
import io.nosqlbench.engine.api.activityimpl.uniform.ActivityWiring;
|
||||||
import io.nosqlbench.nb.annotations.Maturity;
|
import io.nosqlbench.nb.annotations.Maturity;
|
||||||
import io.nosqlbench.nb.api.components.core.NBComponent;
|
import io.nosqlbench.nb.api.components.core.NBComponent;
|
||||||
|
@ -16,9 +16,9 @@
|
|||||||
|
|
||||||
package io.nosqlbench.engine.api.activityimpl;
|
package io.nosqlbench.engine.api.activityimpl;
|
||||||
|
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
|
|
||||||
public interface ActivityDispenser {
|
public interface ActivityDispenser {
|
||||||
Activity getActivity(ActivityDef activityDef);
|
StandardActivity getActivity(ActivityDef activityDef);
|
||||||
}
|
}
|
||||||
|
@ -19,9 +19,7 @@ package io.nosqlbench.engine.api.activityimpl;
|
|||||||
import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.ResultReadable;
|
import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.ResultReadable;
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.ActivityWiring;
|
import io.nosqlbench.engine.api.activityimpl.uniform.ActivityWiring;
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.actions.StandardAction;
|
|
||||||
import io.nosqlbench.engine.api.util.SimpleConfig;
|
import io.nosqlbench.engine.api.util.SimpleConfig;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.cyclelog.filters.ResultFilterDispenser;
|
import io.nosqlbench.engine.api.activityapi.cyclelog.filters.ResultFilterDispenser;
|
||||||
import io.nosqlbench.engine.api.activityapi.cyclelog.filters.ResultValueFilterType;
|
import io.nosqlbench.engine.api.activityapi.cyclelog.filters.ResultValueFilterType;
|
||||||
import io.nosqlbench.engine.api.activityapi.input.InputDispenser;
|
import io.nosqlbench.engine.api.activityapi.input.InputDispenser;
|
||||||
@ -29,7 +27,6 @@ import io.nosqlbench.engine.api.activityapi.input.InputType;
|
|||||||
import io.nosqlbench.engine.api.activityapi.output.OutputDispenser;
|
import io.nosqlbench.engine.api.activityapi.output.OutputDispenser;
|
||||||
import io.nosqlbench.engine.api.activityapi.output.OutputType;
|
import io.nosqlbench.engine.api.activityapi.output.OutputType;
|
||||||
import io.nosqlbench.nb.api.components.core.NBComponent;
|
import io.nosqlbench.nb.api.components.core.NBComponent;
|
||||||
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
@ -38,7 +35,7 @@ public class CoreServices {
|
|||||||
|
|
||||||
private static StandardActivity parent;
|
private static StandardActivity parent;
|
||||||
|
|
||||||
public static <A extends Activity> Optional<OutputDispenser> getOutputDispenser(
|
public static <A> Optional<OutputDispenser> getOutputDispenser(
|
||||||
NBComponent parent, ActivityWiring activity) {
|
NBComponent parent, ActivityWiring activity) {
|
||||||
OutputDispenser outputDispenser = new SimpleConfig(activity, "output").getString("type")
|
OutputDispenser outputDispenser = new SimpleConfig(activity, "output").getString("type")
|
||||||
.flatMap(OutputType.FINDER::get)
|
.flatMap(OutputType.FINDER::get)
|
||||||
@ -55,7 +52,7 @@ public class CoreServices {
|
|||||||
return Optional.ofNullable(outputDispenser);
|
return Optional.ofNullable(outputDispenser);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <A extends Activity> Optional<Predicate<ResultReadable>> getOutputFilter(ActivityWiring activity) {
|
public static <A> Optional<Predicate<ResultReadable>> getOutputFilter(ActivityWiring activity) {
|
||||||
String paramdata= activity.getParams().getOptionalString("of")
|
String paramdata= activity.getParams().getOptionalString("of")
|
||||||
.orElse(activity.getParams().getOptionalString("outputfilter").orElse(null));
|
.orElse(activity.getParams().getOptionalString("outputfilter").orElse(null));
|
||||||
if (paramdata==null) {
|
if (paramdata==null) {
|
||||||
@ -72,7 +69,7 @@ public class CoreServices {
|
|||||||
// return intPredicateDispenser;
|
// return intPredicateDispenser;
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
public static <A extends Activity> InputDispenser getInputDispenser(StandardActivity activity) {
|
public static <A> InputDispenser getInputDispenser(StandardActivity activity) {
|
||||||
String inputTypeName = new SimpleConfig(activity, "input").getString("type").orElse("atomicseq");
|
String inputTypeName = new SimpleConfig(activity, "input").getString("type").orElse("atomicseq");
|
||||||
InputType inputType = InputType.FINDER.getOrThrow(inputTypeName);
|
InputType inputType = InputType.FINDER.getOrThrow(inputTypeName);
|
||||||
InputDispenser dispenser = inputType.getInputDispenser(activity);
|
InputDispenser dispenser = inputType.getInputDispenser(activity);
|
||||||
@ -83,7 +80,7 @@ public class CoreServices {
|
|||||||
return dispenser;
|
return dispenser;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <A extends Activity> Optional<Predicate<ResultReadable>> getInputFilter(Activity activity) {
|
public static <A> Optional<Predicate<ResultReadable>> getInputFilter(StandardActivity activity) {
|
||||||
String paramdata= activity.getParams().getOptionalString("if")
|
String paramdata= activity.getParams().getOptionalString("if")
|
||||||
.orElse(activity.getParams().getOptionalString("inputfilter").orElse(null));
|
.orElse(activity.getParams().getOptionalString("inputfilter").orElse(null));
|
||||||
if (paramdata==null) {
|
if (paramdata==null) {
|
||||||
|
@ -15,9 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package io.nosqlbench.engine.api.activityimpl.action;
|
package io.nosqlbench.engine.api.activityimpl.action;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Action;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.ActionDispenser;
|
import io.nosqlbench.engine.api.activityapi.core.ActionDispenser;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.SyncAction;
|
import io.nosqlbench.engine.api.activityapi.core.SyncAction;
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.ActivityWiring;
|
import io.nosqlbench.engine.api.activityimpl.uniform.ActivityWiring;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
@ -19,7 +19,6 @@ package io.nosqlbench.engine.api.activityimpl.input;
|
|||||||
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.api.util.SimpleConfig;
|
import io.nosqlbench.engine.api.util.SimpleConfig;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.ActivitiesAware;
|
import io.nosqlbench.engine.api.activityapi.core.ActivitiesAware;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.input.Input;
|
import io.nosqlbench.engine.api.activityapi.input.Input;
|
||||||
import io.nosqlbench.engine.api.activityapi.input.InputDispenser;
|
import io.nosqlbench.engine.api.activityapi.input.InputDispenser;
|
||||||
import io.nosqlbench.engine.api.activityapi.input.InputType;
|
import io.nosqlbench.engine.api.activityapi.input.InputType;
|
||||||
@ -29,7 +28,7 @@ import java.util.Map;
|
|||||||
public class CoreInputDispenser implements InputDispenser, ActivitiesAware {
|
public class CoreInputDispenser implements InputDispenser, ActivitiesAware {
|
||||||
|
|
||||||
private final StandardActivity activity;
|
private final StandardActivity activity;
|
||||||
private Map<String, Activity> activities;
|
private Map<String, StandardActivity> activities;
|
||||||
private Input input;
|
private Input input;
|
||||||
|
|
||||||
public CoreInputDispenser(StandardActivity activity) {
|
public CoreInputDispenser(StandardActivity activity) {
|
||||||
@ -57,7 +56,7 @@ public class CoreInputDispenser implements InputDispenser, ActivitiesAware {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setActivitiesMap(Map<String, Activity> activities) {
|
public void setActivitiesMap(Map<String, StandardActivity> activities) {
|
||||||
this.activities = activities;
|
this.activities = activities;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
package io.nosqlbench.engine.api.activityimpl.input;
|
package io.nosqlbench.engine.api.activityimpl.input;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.input.Input;
|
import io.nosqlbench.engine.api.activityapi.input.Input;
|
||||||
import io.nosqlbench.engine.api.activityapi.input.InputDispenser;
|
import io.nosqlbench.engine.api.activityapi.input.InputDispenser;
|
||||||
import io.nosqlbench.engine.api.activityapi.input.InputType;
|
import io.nosqlbench.engine.api.activityapi.input.InputType;
|
||||||
@ -33,10 +32,10 @@ public class TargetRateInputType implements InputType {
|
|||||||
|
|
||||||
public static class Dispenser implements InputDispenser {
|
public static class Dispenser implements InputDispenser {
|
||||||
|
|
||||||
private final Activity activity;
|
private final StandardActivity activity;
|
||||||
private final AtomicInput input;
|
private final AtomicInput input;
|
||||||
|
|
||||||
public Dispenser(Activity activity) {
|
public Dispenser(StandardActivity activity) {
|
||||||
this.activity = activity;
|
this.activity = activity;
|
||||||
this.input = new AtomicInput(activity, activity.getActivityDef());
|
this.input = new AtomicInput(activity, activity.getActivityDef());
|
||||||
}
|
}
|
||||||
|
@ -17,10 +17,10 @@
|
|||||||
package io.nosqlbench.engine.api.activityimpl.marker;
|
package io.nosqlbench.engine.api.activityimpl.marker;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment;
|
import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsSegment;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult;
|
import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResult;
|
||||||
import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsIntervalSegment;
|
import io.nosqlbench.engine.api.activityapi.cyclelog.buffers.results.CycleResultsIntervalSegment;
|
||||||
import io.nosqlbench.engine.api.activityapi.output.Output;
|
import io.nosqlbench.engine.api.activityapi.output.Output;
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ public class ContiguousOutputChunker implements Output {
|
|||||||
initExtents();
|
initExtents();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ContiguousOutputChunker(Activity activity) {
|
public ContiguousOutputChunker(StandardActivity activity) {
|
||||||
|
|
||||||
if (!(activity.getWiring().getInputDispenserDelegate().getInput(0).isContiguous())) {
|
if (!(activity.getWiring().getInputDispenserDelegate().getInput(0).isContiguous())) {
|
||||||
throw new RuntimeException("This type of output may not be used with non-contiguous inputs yet.");
|
throw new RuntimeException("This type of output may not be used with non-contiguous inputs yet.");
|
||||||
|
@ -55,7 +55,7 @@ public class CoreMotor<D> extends NBBaseComponent implements ActivityDefObserver
|
|||||||
private static final Logger logger = LogManager.getLogger(CoreMotor.class);
|
private static final Logger logger = LogManager.getLogger(CoreMotor.class);
|
||||||
|
|
||||||
private final long slotId;
|
private final long slotId;
|
||||||
private final Activity activity;
|
private final StandardActivity activity;
|
||||||
|
|
||||||
private Timer inputTimer;
|
private Timer inputTimer;
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ public class CoreMotor<D> extends NBBaseComponent implements ActivityDefObserver
|
|||||||
|
|
||||||
private Input input;
|
private Input input;
|
||||||
private SyncAction action;
|
private SyncAction action;
|
||||||
// private final Activity activity;
|
// private final StandardActivity activity;
|
||||||
private Output output;
|
private Output output;
|
||||||
|
|
||||||
private final MotorState motorState;
|
private final MotorState motorState;
|
||||||
|
@ -17,13 +17,12 @@
|
|||||||
package io.nosqlbench.engine.api.activityimpl.uniform;
|
package io.nosqlbench.engine.api.activityimpl.uniform;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.ActionDispenser;
|
import io.nosqlbench.engine.api.activityapi.core.ActionDispenser;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.actions.StandardAction;
|
import io.nosqlbench.engine.api.activityimpl.uniform.actions.StandardAction;
|
||||||
|
|
||||||
public class StandardActionDispenser implements ActionDispenser {
|
public class StandardActionDispenser implements ActionDispenser {
|
||||||
private final StandardActivity activity;
|
private final StandardActivity activity;
|
||||||
|
|
||||||
public <A extends Activity> StandardActionDispenser(StandardActivity activity) {
|
public <A> StandardActionDispenser(StandardActivity activity) {
|
||||||
this.activity = activity;
|
this.activity = activity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,7 +32,9 @@ import io.nosqlbench.adapters.api.activityimpl.uniform.flowtypes.CycleOp;
|
|||||||
import io.nosqlbench.adapters.api.templating.ParsedOp;
|
import io.nosqlbench.adapters.api.templating.ParsedOp;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.*;
|
import io.nosqlbench.engine.api.activityapi.core.*;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.progress.ActivityMetricProgressMeter;
|
import io.nosqlbench.engine.api.activityapi.core.progress.ActivityMetricProgressMeter;
|
||||||
|
import io.nosqlbench.engine.api.activityapi.core.progress.ProgressCapable;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.progress.ProgressMeterDisplay;
|
import io.nosqlbench.engine.api.activityapi.core.progress.ProgressMeterDisplay;
|
||||||
|
import io.nosqlbench.engine.api.activityapi.core.progress.StateCapable;
|
||||||
import io.nosqlbench.engine.api.activityapi.errorhandling.ErrorMetrics;
|
import io.nosqlbench.engine.api.activityapi.errorhandling.ErrorMetrics;
|
||||||
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.SequencePlanner;
|
import io.nosqlbench.engine.api.activityapi.planning.SequencePlanner;
|
||||||
@ -44,8 +46,8 @@ import io.nosqlbench.engine.api.activityimpl.OpLookupService;
|
|||||||
import io.nosqlbench.engine.api.activityimpl.motor.RunStateTally;
|
import io.nosqlbench.engine.api.activityimpl.motor.RunStateTally;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.InvokableResult;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.InvokableResult;
|
||||||
import io.nosqlbench.nb.api.advisor.NBAdvisorOutput;
|
import io.nosqlbench.nb.api.advisor.NBAdvisorOutput;
|
||||||
import io.nosqlbench.nb.api.components.core.NBBaseComponent;
|
|
||||||
import io.nosqlbench.nb.api.components.status.NBStatusComponent;
|
import io.nosqlbench.nb.api.components.status.NBStatusComponent;
|
||||||
|
import io.nosqlbench.nb.api.engine.activityimpl.ParameterMap;
|
||||||
import io.nosqlbench.nb.api.engine.metrics.instruments.MetricCategory;
|
import io.nosqlbench.nb.api.engine.metrics.instruments.MetricCategory;
|
||||||
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricCounter;
|
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricCounter;
|
||||||
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricHistogram;
|
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricHistogram;
|
||||||
@ -84,7 +86,9 @@ import java.util.function.LongFunction;
|
|||||||
@param <S>
|
@param <S>
|
||||||
The context type for the activity, AKA the 'space' for a named driver instance and its
|
The context type for the activity, AKA the 'space' for a named driver instance and its
|
||||||
associated object graph */
|
associated object graph */
|
||||||
public class StandardActivity<R extends java.util.function.LongFunction, S> extends NBStatusComponent implements Activity, InvokableResult, SyntheticOpTemplateProvider, ActivityDefObserver {
|
public class StandardActivity<R extends java.util.function.LongFunction, S>
|
||||||
|
extends NBStatusComponent implements InvokableResult, SyntheticOpTemplateProvider, ActivityDefObserver, StateCapable,
|
||||||
|
ProgressCapable, Comparable<StandardActivity> {
|
||||||
private static final Logger logger = LogManager.getLogger("ACTIVITY");
|
private static final Logger logger = LogManager.getLogger("ACTIVITY");
|
||||||
private final OpSequence<OpDispenser<? extends CycleOp<?>>> sequence;
|
private final OpSequence<OpDispenser<? extends CycleOp<?>>> sequence;
|
||||||
private final ConcurrentHashMap<String, DriverAdapter<CycleOp<?>, Space>> adapters = new ConcurrentHashMap<>();
|
private final ConcurrentHashMap<String, DriverAdapter<CycleOp<?>, Space>> adapters = new ConcurrentHashMap<>();
|
||||||
@ -126,10 +130,6 @@ public class StandardActivity<R extends java.util.function.LongFunction, S> exte
|
|||||||
this.activityDef = activityDef;
|
this.activityDef = activityDef;
|
||||||
this.wiring = wiring;
|
this.wiring = wiring;
|
||||||
|
|
||||||
int hdrdigits = getComponentProp("hdr_digits")
|
|
||||||
.map(Integer::parseInt).orElse(3);
|
|
||||||
|
|
||||||
|
|
||||||
this.pendingOpsCounter = create().counter(
|
this.pendingOpsCounter = create().counter(
|
||||||
"pending_ops",
|
"pending_ops",
|
||||||
MetricCategory.Core,
|
MetricCategory.Core,
|
||||||
@ -142,6 +142,7 @@ public class StandardActivity<R extends java.util.function.LongFunction, S> exte
|
|||||||
/// {@link OpSequence} in conjunction with
|
/// {@link OpSequence} in conjunction with
|
||||||
/// an {@link OpDispenser}. This is named for "binding
|
/// an {@link OpDispenser}. This is named for "binding
|
||||||
/// a cycle to an operation".
|
/// a cycle to an operation".
|
||||||
|
int hdrdigits = getHdrDigits();
|
||||||
this.bindTimer = create().timer(
|
this.bindTimer = create().timer(
|
||||||
"bind", hdrdigits, MetricCategory.Core,
|
"bind", hdrdigits, MetricCategory.Core,
|
||||||
"Time the step within a cycle which binds generated data to an op template to synthesize an executable operation."
|
"Time the step within a cycle which binds generated data to an op template to synthesize an executable operation."
|
||||||
@ -424,6 +425,10 @@ public class StandardActivity<R extends java.util.function.LongFunction, S> exte
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ParameterMap getParams() {
|
||||||
|
return activityDef.getParams();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private ParsedOp upconvert(
|
private ParsedOp upconvert(
|
||||||
OpTemplate ot, Optional<String> defaultDriverOption, NBConfigModel yamlmodel,
|
OpTemplate ot, Optional<String> defaultDriverOption, NBConfigModel yamlmodel,
|
||||||
@ -476,7 +481,6 @@ public class StandardActivity<R extends java.util.function.LongFunction, S> exte
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void initActivity() {
|
public void initActivity() {
|
||||||
initOrUpdateRateLimiters(this.activityDef);
|
initOrUpdateRateLimiters(this.activityDef);
|
||||||
setDefaultsFromOpSequence(sequence);
|
setDefaultsFromOpSequence(sequence);
|
||||||
@ -548,7 +552,6 @@ public class StandardActivity<R extends java.util.function.LongFunction, S> exte
|
|||||||
dedicated <em>state space</em> types. Any space which implements {@link Shutdownable}
|
dedicated <em>state space</em> types. Any space which implements {@link Shutdownable}
|
||||||
will be closed when this activity shuts down.
|
will be closed when this activity shuts down.
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
public void shutdownActivity() {
|
public void shutdownActivity() {
|
||||||
for (Map.Entry<String, DriverAdapter<CycleOp<?>, Space>> entry : adapters.entrySet()) {
|
for (Map.Entry<String, DriverAdapter<CycleOp<?>, Space>> entry : adapters.entrySet()) {
|
||||||
String adapterName = entry.getKey();
|
String adapterName = entry.getKey();
|
||||||
@ -832,7 +835,6 @@ public class StandardActivity<R extends java.util.function.LongFunction, S> exte
|
|||||||
return runState;
|
return runState;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public synchronized void setRunState(RunState runState) {
|
public synchronized void setRunState(RunState runState) {
|
||||||
this.runState = runState;
|
this.runState = runState;
|
||||||
if (RunState.Running == runState) {
|
if (RunState.Running == runState) {
|
||||||
@ -840,12 +842,10 @@ public class StandardActivity<R extends java.util.function.LongFunction, S> exte
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getStartedAtMillis() {
|
public long getStartedAtMillis() {
|
||||||
return startedAtMillis;
|
return startedAtMillis;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ActivityDef getActivityDef() {
|
public ActivityDef getActivityDef() {
|
||||||
return activityDef;
|
return activityDef;
|
||||||
}
|
}
|
||||||
@ -874,7 +874,12 @@ public class StandardActivity<R extends java.util.function.LongFunction, S> exte
|
|||||||
cycleLimiterSource = ThreadLocalRateLimiters.createOrUpdate(this, cycleLimiterSource, spec);
|
cycleLimiterSource = ThreadLocalRateLimiters.createOrUpdate(this, cycleLimiterSource, spec);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
/**
|
||||||
|
* Get the current cycle rate limiter for this activity.
|
||||||
|
* The cycle rate limiter is used to throttle the rate at which
|
||||||
|
* cycles are dispatched across all threads in the activity
|
||||||
|
* @return the cycle {@link RateLimiter}
|
||||||
|
*/
|
||||||
public RateLimiter getCycleLimiter() {
|
public RateLimiter getCycleLimiter() {
|
||||||
if (cycleLimiterSource!=null) {
|
if (cycleLimiterSource!=null) {
|
||||||
return cycleLimiterSource.get();
|
return cycleLimiterSource.get();
|
||||||
@ -882,7 +887,12 @@ public class StandardActivity<R extends java.util.function.LongFunction, S> exte
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@Override
|
/**
|
||||||
|
* Get the current stride rate limiter for this activity.
|
||||||
|
* The stride rate limiter is used to throttle the rate at which
|
||||||
|
* new strides are dispatched across all threads in an activity.
|
||||||
|
* @return The stride {@link RateLimiter}
|
||||||
|
*/
|
||||||
public synchronized RateLimiter getStrideLimiter() {
|
public synchronized RateLimiter getStrideLimiter() {
|
||||||
if (strideLimiterSource!=null) {
|
if (strideLimiterSource!=null) {
|
||||||
return strideLimiterSource.get();
|
return strideLimiterSource.get();
|
||||||
@ -891,19 +901,17 @@ public class StandardActivity<R extends java.util.function.LongFunction, S> exte
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public RunStateTally getRunStateTally() {
|
public RunStateTally getRunStateTally() {
|
||||||
return tally;
|
return tally;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ActivityWiring getWiring() {
|
public ActivityWiring getWiring() {
|
||||||
return this.wiring;
|
return this.wiring;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, String> asResult() {
|
public Map<String, String> asResult() {
|
||||||
return Map.of("activity",this.getAlias());
|
return Map.of("activity",this.getActivityDef().getAlias());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -913,7 +921,6 @@ public class StandardActivity<R extends java.util.function.LongFunction, S> exte
|
|||||||
*
|
*
|
||||||
* @return The number of allowable retries
|
* @return The number of allowable retries
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
public int getMaxTries() {
|
public int getMaxTries() {
|
||||||
return this.activityDef.getParams().getOptionalInteger("maxtries").orElse(10);
|
return this.activityDef.getParams().getOptionalInteger("maxtries").orElse(10);
|
||||||
}
|
}
|
||||||
@ -927,7 +934,6 @@ public class StandardActivity<R extends java.util.function.LongFunction, S> exte
|
|||||||
return errorHandler;
|
return errorHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void closeAutoCloseables() {
|
public void closeAutoCloseables() {
|
||||||
for (AutoCloseable closeable : closeables) {
|
for (AutoCloseable closeable : closeables) {
|
||||||
logger.debug(() -> "CLOSING " + closeable.getClass().getCanonicalName() + ": " + closeable);
|
logger.debug(() -> "CLOSING " + closeable.getClass().getCanonicalName() + ": " + closeable);
|
||||||
@ -941,16 +947,14 @@ public class StandardActivity<R extends java.util.function.LongFunction, S> exte
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compareTo(Activity o) {
|
public int compareTo(StandardActivity o) {
|
||||||
return getAlias().compareTo(o.getAlias());
|
return this.getActivityDef().getAlias().compareTo(o.getActivityDef().getAlias());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void registerAutoCloseable(AutoCloseable closeable) {
|
public void registerAutoCloseable(AutoCloseable closeable) {
|
||||||
this.closeables.add(closeable);
|
this.closeables.add(closeable);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public synchronized PrintWriter getConsoleOut() {
|
public synchronized PrintWriter getConsoleOut() {
|
||||||
if (null == console) {
|
if (null == console) {
|
||||||
this.console = new PrintWriter(System.out, false, StandardCharsets.UTF_8);
|
this.console = new PrintWriter(System.out, false, StandardCharsets.UTF_8);
|
||||||
@ -958,17 +962,14 @@ public class StandardActivity<R extends java.util.function.LongFunction, S> exte
|
|||||||
return this.console;
|
return this.console;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public synchronized InputStream getConsoleIn() {
|
public synchronized InputStream getConsoleIn() {
|
||||||
return System.in;
|
return System.in;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setConsoleOut(PrintWriter writer) {
|
public void setConsoleOut(PrintWriter writer) {
|
||||||
this.console = writer;
|
this.console = writer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public synchronized ErrorMetrics getExceptionMetrics() {
|
public synchronized ErrorMetrics getExceptionMetrics() {
|
||||||
if (null == this.errorMetrics) {
|
if (null == this.errorMetrics) {
|
||||||
errorMetrics = new ErrorMetrics(this);
|
errorMetrics = new ErrorMetrics(this);
|
||||||
@ -977,6 +978,12 @@ public class StandardActivity<R extends java.util.function.LongFunction, S> exte
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getAlias() {
|
||||||
|
return getActivityDef().getAlias();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getHdrDigits() {
|
||||||
|
return getComponentProp("hdr_digits").map(Integer::parseInt).orElse(3);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,10 +18,8 @@ package io.nosqlbench.engine.api.activityimpl.uniform;
|
|||||||
|
|
||||||
|
|
||||||
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
|
import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter;
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.actions.StandardAction;
|
|
||||||
import io.nosqlbench.nb.api.components.core.NBComponent;
|
import io.nosqlbench.nb.api.components.core.NBComponent;
|
||||||
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.ActivitiesAware;
|
import io.nosqlbench.engine.api.activityapi.core.ActivitiesAware;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.ActionDispenser;
|
import io.nosqlbench.engine.api.activityapi.core.ActionDispenser;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.MotorDispenser;
|
import io.nosqlbench.engine.api.activityapi.core.MotorDispenser;
|
||||||
@ -68,7 +66,7 @@ public class StandardActivityType<A extends StandardActivity<?,?>> {
|
|||||||
* Create an instance of an activity from the activity type.
|
* Create an instance of an activity from the activity type.
|
||||||
*
|
*
|
||||||
* @param activityDef the definition that initializes and controls the activity.
|
* @param activityDef the definition that initializes and controls the activity.
|
||||||
* @return a distinct Activity instance for each call
|
* @return a distinct StandardActivity instance for each call
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public A getActivity(final ActivityDef activityDef,
|
public A getActivity(final ActivityDef activityDef,
|
||||||
@ -96,9 +94,9 @@ public class StandardActivityType<A extends StandardActivity<?,?>> {
|
|||||||
* @param activities a map of existing activities
|
* @param activities a map of existing activities
|
||||||
* @return a distinct activity instance for each call
|
* @return a distinct activity instance for each call
|
||||||
*/
|
*/
|
||||||
public Activity getAssembledActivity(
|
public StandardActivity getAssembledActivity(
|
||||||
final NBComponent parent, final ActivityDef activityDef,
|
final NBComponent parent, final ActivityDef activityDef,
|
||||||
final Map<String, Activity> activities
|
final Map<String, StandardActivity> activities
|
||||||
) {
|
) {
|
||||||
// final A activity = this.getActivity(activityDef, parent);
|
// final A activity = this.getActivity(activityDef, parent);
|
||||||
ActivityWiring wiring = new ActivityWiring(activityDef);
|
ActivityWiring wiring = new ActivityWiring(activityDef);
|
||||||
@ -141,7 +139,7 @@ public class StandardActivityType<A extends StandardActivity<?,?>> {
|
|||||||
* Return the InputDispenser instance that will be used by the associated activity to create Input factories
|
* Return the InputDispenser instance that will be used by the associated activity to create Input factories
|
||||||
* for each thread slot.
|
* for each thread slot.
|
||||||
*
|
*
|
||||||
* @param activity the Activity instance which will parameterize this InputDispenser
|
* @param activity the StandardActivity instance which will parameterize this InputDispenser
|
||||||
* @return the InputDispenser for the associated activity
|
* @return the InputDispenser for the associated activity
|
||||||
*/
|
*/
|
||||||
public InputDispenser getInputDispenser(final StandardActivity activity) {
|
public InputDispenser getInputDispenser(final StandardActivity activity) {
|
||||||
|
@ -16,8 +16,8 @@
|
|||||||
|
|
||||||
package io.nosqlbench.engine.api.util;
|
package io.nosqlbench.engine.api.util;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
|
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
@ -34,13 +34,13 @@ public class ConfigTuples implements Iterable<ConfigTuples.Section> {
|
|||||||
this.sections = sections;
|
this.sections = sections;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConfigTuples(Activity activity, String param) {
|
public ConfigTuples(StandardActivity activity, String param) {
|
||||||
this(activity.getParams().getOptionalString(param).orElse(""));
|
this(activity.getParams().getOptionalString(param).orElse(""));
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Section> parseParams(String configdata) {
|
private List<Section> parseParams(String configdata) {
|
||||||
try {
|
try {
|
||||||
List<Section> sections = Arrays.stream(configdata.split("[,]"))
|
List<Section> sections = Arrays.stream(configdata.split(","))
|
||||||
.filter(Objects::nonNull)
|
.filter(Objects::nonNull)
|
||||||
.filter(s -> !s.isEmpty())
|
.filter(s -> !s.isEmpty())
|
||||||
.map(s -> new Section(s, "[:=]"))
|
.map(s -> new Section(s, "[:=]"))
|
||||||
|
@ -16,8 +16,8 @@
|
|||||||
|
|
||||||
package io.nosqlbench.engine.api.util;
|
package io.nosqlbench.engine.api.util;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.ActivityWiring;
|
import io.nosqlbench.engine.api.activityimpl.uniform.ActivityWiring;
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
||||||
import io.nosqlbench.nb.api.engine.activityimpl.ParameterMap;
|
import io.nosqlbench.nb.api.engine.activityimpl.ParameterMap;
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ public class SimpleConfig {
|
|||||||
this.params = parseParams(configdata);
|
this.params = parseParams(configdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SimpleConfig(Activity activity, String params) {
|
public SimpleConfig(StandardActivity activity, String params) {
|
||||||
this(activity.getActivityDef(),params);
|
this(activity.getActivityDef(),params);
|
||||||
}
|
}
|
||||||
public SimpleConfig(ActivityWiring wiring, String param) {
|
public SimpleConfig(ActivityWiring wiring, String param) {
|
||||||
@ -50,7 +50,7 @@ public class SimpleConfig {
|
|||||||
|
|
||||||
private Map<String, String> parseParams(String configdata) {
|
private Map<String, String> parseParams(String configdata) {
|
||||||
try {
|
try {
|
||||||
return Arrays.stream(configdata.split("[,]"))
|
return Arrays.stream(configdata.split(","))
|
||||||
.filter(Objects::nonNull)
|
.filter(Objects::nonNull)
|
||||||
.filter(s -> !s.isEmpty())
|
.filter(s -> !s.isEmpty())
|
||||||
// .peek(System.out::println)
|
// .peek(System.out::println)
|
||||||
|
@ -17,6 +17,7 @@ package io.nosqlbench.engine.core.lifecycle.activity;
|
|||||||
|
|
||||||
import com.codahale.metrics.Gauge;
|
import com.codahale.metrics.Gauge;
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.ActivityWiring;
|
import io.nosqlbench.engine.api.activityimpl.uniform.ActivityWiring;
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.core.lifecycle.IndexedThreadFactory;
|
import io.nosqlbench.engine.core.lifecycle.IndexedThreadFactory;
|
||||||
import io.nosqlbench.nb.api.engine.metrics.instruments.MetricCategory;
|
import io.nosqlbench.nb.api.engine.metrics.instruments.MetricCategory;
|
||||||
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricGauge;
|
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricGauge;
|
||||||
@ -68,7 +69,7 @@ public class ActivityExecutor implements NBLabeledElement, ParameterMap.Listener
|
|||||||
private static final Logger activitylogger = LogManager.getLogger("ACTIVITY");
|
private static final Logger activitylogger = LogManager.getLogger("ACTIVITY");
|
||||||
|
|
||||||
private final LinkedList<Motor<?>> motors = new LinkedList<>();
|
private final LinkedList<Motor<?>> motors = new LinkedList<>();
|
||||||
private final Activity activity;
|
private final StandardActivity activity;
|
||||||
private final ActivityDef activityDef;
|
private final ActivityDef activityDef;
|
||||||
private final RunStateTally tally;
|
private final RunStateTally tally;
|
||||||
private final MotorDispenser motorSource;
|
private final MotorDispenser motorSource;
|
||||||
@ -81,7 +82,7 @@ public class ActivityExecutor implements NBLabeledElement, ParameterMap.Listener
|
|||||||
private ActivityExecutorShutdownHook shutdownHook = null;
|
private ActivityExecutorShutdownHook shutdownHook = null;
|
||||||
private NBMetricGauge threadsGauge;
|
private NBMetricGauge threadsGauge;
|
||||||
|
|
||||||
public ActivityExecutor(Activity activity) {
|
public ActivityExecutor(StandardActivity activity) {
|
||||||
this.activity = activity;
|
this.activity = activity;
|
||||||
this.activityDef = activity.getActivityDef();
|
this.activityDef = activity.getActivityDef();
|
||||||
this.motorSource = activity.getWiring().getMotorDispenserDelegate();
|
this.motorSource = activity.getWiring().getMotorDispenserDelegate();
|
||||||
@ -145,7 +146,8 @@ public class ActivityExecutor implements NBLabeledElement, ParameterMap.Listener
|
|||||||
|
|
||||||
public Exception forceStopActivity(int initialMillisToWait) {
|
public Exception forceStopActivity(int initialMillisToWait) {
|
||||||
|
|
||||||
activitylogger.debug("FORCE STOP/before alias=(" + activity.getAlias() + ")");
|
activitylogger.debug("FORCE STOP/before alias=(" + activity.getActivityDef().getAlias() +
|
||||||
|
")");
|
||||||
activity.setRunState(RunState.Stopped);
|
activity.setRunState(RunState.Stopped);
|
||||||
|
|
||||||
executorService.shutdownNow();
|
executorService.shutdownNow();
|
||||||
@ -378,7 +380,7 @@ public class ActivityExecutor implements NBLabeledElement, ParameterMap.Listener
|
|||||||
return motors.stream().anyMatch(m -> m.getState().get() == RunState.Running);
|
return motors.stream().anyMatch(m -> m.getState().get() == RunState.Running);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Activity getActivity() {
|
public StandardActivity getActivity() {
|
||||||
return activity;
|
return activity;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -542,7 +544,7 @@ public class ActivityExecutor implements NBLabeledElement, ParameterMap.Listener
|
|||||||
*/
|
*/
|
||||||
private void startRunningActivityThreads() {
|
private void startRunningActivityThreads() {
|
||||||
|
|
||||||
logger.info(() -> "starting activity " + activity.getAlias() + " for cycles " + activity.getCycleSummary());
|
logger.info(() -> "starting activity " + activity.getAlias() + " for cycles " + activity.getActivityDef().getCycleSummary());
|
||||||
Annotators.recordAnnotation(Annotation.newBuilder()
|
Annotators.recordAnnotation(Annotation.newBuilder()
|
||||||
.element(this)
|
.element(this)
|
||||||
.now()
|
.now()
|
||||||
|
@ -16,9 +16,9 @@
|
|||||||
|
|
||||||
package io.nosqlbench.engine.core.lifecycle.activity;
|
package io.nosqlbench.engine.core.lifecycle.activity;
|
||||||
|
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
||||||
import io.nosqlbench.nb.api.components.core.NBComponent;
|
import io.nosqlbench.nb.api.components.core.NBComponent;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivityType;
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivityType;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
@ -33,14 +33,14 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||||||
*/
|
*/
|
||||||
public class ActivityLoader {
|
public class ActivityLoader {
|
||||||
private static final Logger logger = LogManager.getLogger("ACTIVITIES");
|
private static final Logger logger = LogManager.getLogger("ACTIVITIES");
|
||||||
private final Map<String, Activity> activityMap = new ConcurrentHashMap<>();
|
private final Map<String, StandardActivity> activityMap = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
public ActivityLoader() {
|
public ActivityLoader() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized Activity loadActivity(ActivityDef activityDef, final NBComponent parent) {
|
public synchronized StandardActivity loadActivity(ActivityDef activityDef, final NBComponent parent) {
|
||||||
activityDef= activityDef.deprecate("yaml","workload").deprecate("type","driver");
|
activityDef= activityDef.deprecate("yaml","workload").deprecate("type","driver");
|
||||||
final Activity activity =
|
final StandardActivity activity =
|
||||||
new StandardActivityType<>(activityDef, parent).getAssembledActivity(parent, activityDef, this.activityMap);this.activityMap.put(activity.getAlias(),activity);
|
new StandardActivityType<>(activityDef, parent).getAssembledActivity(parent, activityDef, this.activityMap);this.activityMap.put(activity.getAlias(),activity);
|
||||||
ActivityLoader.logger.debug("Resolved activity for alias '{}'", activityDef.getAlias());
|
ActivityLoader.logger.debug("Resolved activity for alias '{}'", activityDef.getAlias());
|
||||||
return activity;
|
return activity;
|
||||||
|
@ -16,10 +16,10 @@
|
|||||||
|
|
||||||
package io.nosqlbench.engine.core.lifecycle.activity;
|
package io.nosqlbench.engine.core.lifecycle.activity;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.RunState;
|
import io.nosqlbench.engine.api.activityapi.core.RunState;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.progress.ProgressCapable;
|
import io.nosqlbench.engine.api.activityapi.core.progress.ProgressCapable;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.progress.ProgressMeterDisplay;
|
import io.nosqlbench.engine.api.activityapi.core.progress.ProgressMeterDisplay;
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.core.lifecycle.ExecutionResult;
|
import io.nosqlbench.engine.core.lifecycle.ExecutionResult;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
@ -32,11 +32,12 @@ import java.util.concurrent.TimeoutException;
|
|||||||
public class ActivityRuntimeInfo implements ProgressCapable {
|
public class ActivityRuntimeInfo implements ProgressCapable {
|
||||||
|
|
||||||
private final static Logger logger = LogManager.getLogger(ActivityRuntimeInfo.class);
|
private final static Logger logger = LogManager.getLogger(ActivityRuntimeInfo.class);
|
||||||
private final Activity activity;
|
private final StandardActivity activity;
|
||||||
private final Future<ExecutionResult> future;
|
private final Future<ExecutionResult> future;
|
||||||
private final ActivityExecutor executor;
|
private final ActivityExecutor executor;
|
||||||
|
|
||||||
public ActivityRuntimeInfo(Activity activity, Future<ExecutionResult> result, ActivityExecutor executor) {
|
public ActivityRuntimeInfo(StandardActivity activity, Future<ExecutionResult> result,
|
||||||
|
ActivityExecutor executor) {
|
||||||
|
|
||||||
this.activity = activity;
|
this.activity = activity;
|
||||||
this.future = result;
|
this.future = result;
|
||||||
@ -72,7 +73,7 @@ public class ActivityRuntimeInfo implements ProgressCapable {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Activity getActivity() {
|
public StandardActivity getActivity() {
|
||||||
return this.activity;
|
return this.activity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,19 +16,16 @@
|
|||||||
|
|
||||||
package io.nosqlbench.engine.core.lifecycle.commands;
|
package io.nosqlbench.engine.core.lifecycle.commands;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBBaseCommand;
|
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBBaseCommand;
|
||||||
import io.nosqlbench.nb.annotations.Service;
|
import io.nosqlbench.nb.annotations.Service;
|
||||||
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;
|
||||||
|
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
@Service(value = NBBaseCommand.class,selector = "example")
|
@Service(value = NBBaseCommand.class,selector = "example")
|
||||||
public class CMD_example extends NBBaseCommand {
|
public class CMD_example extends NBBaseCommand {
|
||||||
|
@ -16,19 +16,16 @@
|
|||||||
|
|
||||||
package io.nosqlbench.engine.core.lifecycle.commands;
|
package io.nosqlbench.engine.core.lifecycle.commands;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBBaseCommand;
|
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBBaseCommand;
|
||||||
import io.nosqlbench.nb.annotations.Service;
|
import io.nosqlbench.nb.annotations.Service;
|
||||||
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;
|
||||||
|
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
@Service(value = NBBaseCommand.class,selector = "force_stop")
|
@Service(value = NBBaseCommand.class,selector = "force_stop")
|
||||||
public class CMD_forceStop extends NBBaseCommand {
|
public class CMD_forceStop extends NBBaseCommand {
|
||||||
|
@ -16,19 +16,16 @@
|
|||||||
|
|
||||||
package io.nosqlbench.engine.core.lifecycle.commands;
|
package io.nosqlbench.engine.core.lifecycle.commands;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBBaseCommand;
|
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBBaseCommand;
|
||||||
import io.nosqlbench.nb.annotations.Service;
|
import io.nosqlbench.nb.annotations.Service;
|
||||||
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;
|
||||||
|
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
@Service(value = NBBaseCommand.class,selector = "start")
|
@Service(value = NBBaseCommand.class,selector = "start")
|
||||||
public class CMD_start extends NBBaseCommand {
|
public class CMD_start extends NBBaseCommand {
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
package io.nosqlbench.engine.core.lifecycle.commands;
|
package io.nosqlbench.engine.core.lifecycle.commands;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
||||||
@ -44,7 +44,7 @@ public class CMD_stop extends NBBaseCommand {
|
|||||||
= params.maybeGet("activity").orElseThrow(
|
= params.maybeGet("activity").orElseThrow(
|
||||||
() -> new RuntimeException("The stop command requires an 'activity' parameter")
|
() -> new RuntimeException("The stop command requires an 'activity' parameter")
|
||||||
);
|
);
|
||||||
Optional<Activity> activity = controller.getActivity(activityName);
|
Optional<StandardActivity> activity = controller.getActivity(activityName);
|
||||||
if (activity.isEmpty()) {
|
if (activity.isEmpty()) {
|
||||||
BasicError error = new BasicError("Activity '" + activityName + "' was not found for stop command.");
|
BasicError error = new BasicError("Activity '" + activityName + "' was not found for stop command.");
|
||||||
logger.warn(error);
|
logger.warn(error);
|
||||||
|
@ -15,12 +15,12 @@
|
|||||||
*/
|
*/
|
||||||
package io.nosqlbench.engine.core.lifecycle.scenario.container;
|
package io.nosqlbench.engine.core.lifecycle.scenario.container;
|
||||||
|
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
||||||
import io.nosqlbench.nb.api.engine.activityimpl.ParameterMap;
|
import io.nosqlbench.nb.api.engine.activityimpl.ParameterMap;
|
||||||
import io.nosqlbench.nb.api.components.core.NBComponent;
|
import io.nosqlbench.nb.api.components.core.NBComponent;
|
||||||
import io.nosqlbench.nb.api.components.core.NBBaseComponent;
|
import io.nosqlbench.nb.api.components.core.NBBaseComponent;
|
||||||
import io.nosqlbench.nb.api.components.core.NBComponentErrorHandler;
|
import io.nosqlbench.nb.api.components.core.NBComponentErrorHandler;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.progress.ProgressMeterDisplay;
|
import io.nosqlbench.engine.api.activityapi.core.progress.ProgressMeterDisplay;
|
||||||
import io.nosqlbench.engine.core.lifecycle.ExecutionResult;
|
import io.nosqlbench.engine.core.lifecycle.ExecutionResult;
|
||||||
import io.nosqlbench.engine.core.lifecycle.IndexedThreadFactory;
|
import io.nosqlbench.engine.core.lifecycle.IndexedThreadFactory;
|
||||||
@ -65,7 +65,7 @@ public class ContainerActivitiesController extends NBBaseComponent {
|
|||||||
*
|
*
|
||||||
* @param activityDef string in alias=value1;driver=value2;... format
|
* @param activityDef string in alias=value1;driver=value2;... format
|
||||||
*/
|
*/
|
||||||
public Activity start(ActivityDef activityDef) {
|
public StandardActivity start(ActivityDef activityDef) {
|
||||||
ActivityRuntimeInfo ari = doStartActivity(activityDef);
|
ActivityRuntimeInfo ari = doStartActivity(activityDef);
|
||||||
return ari.getActivity();
|
return ari.getActivity();
|
||||||
}
|
}
|
||||||
@ -73,7 +73,7 @@ public class ContainerActivitiesController extends NBBaseComponent {
|
|||||||
|
|
||||||
private ActivityRuntimeInfo doStartActivity(ActivityDef activityDef) {
|
private ActivityRuntimeInfo doStartActivity(ActivityDef activityDef) {
|
||||||
if (!this.activityInfoMap.containsKey(activityDef.getAlias())) {
|
if (!this.activityInfoMap.containsKey(activityDef.getAlias())) {
|
||||||
Activity activity = this.activityLoader.loadActivity(activityDef, this);
|
StandardActivity activity = this.activityLoader.loadActivity(activityDef, this);
|
||||||
activity.initActivity();
|
activity.initActivity();
|
||||||
ActivityExecutor executor = new ActivityExecutor(activity);
|
ActivityExecutor executor = new ActivityExecutor(activity);
|
||||||
Future<ExecutionResult> startedActivity = executorService.submit(executor);
|
Future<ExecutionResult> startedActivity = executorService.submit(executor);
|
||||||
@ -91,9 +91,9 @@ public class ContainerActivitiesController extends NBBaseComponent {
|
|||||||
*
|
*
|
||||||
* @param activityDefMap A map containing the activity definition
|
* @param activityDefMap A map containing the activity definition
|
||||||
*/
|
*/
|
||||||
public Activity start(Map<String, String> activityDefMap) {
|
public StandardActivity start(Map<String, String> activityDefMap) {
|
||||||
ActivityDef ad = new ActivityDef(new ParameterMap(activityDefMap));
|
ActivityDef ad = new ActivityDef(new ParameterMap(activityDefMap));
|
||||||
Activity started = start(ad);
|
StandardActivity started = start(ad);
|
||||||
awaitAllThreadsOnline(started,30000L);
|
awaitAllThreadsOnline(started,30000L);
|
||||||
return started;
|
return started;
|
||||||
}
|
}
|
||||||
@ -104,7 +104,7 @@ public class ContainerActivitiesController extends NBBaseComponent {
|
|||||||
*
|
*
|
||||||
* @param alias the alias of an activity that is already known to the scenario
|
* @param alias the alias of an activity that is already known to the scenario
|
||||||
*/
|
*/
|
||||||
public Activity start(String alias) {
|
public StandardActivity start(String alias) {
|
||||||
return start(ActivityDef.parseActivityDef(alias));
|
return start(ActivityDef.parseActivityDef(alias));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -186,12 +186,12 @@ public class ContainerActivitiesController extends NBBaseComponent {
|
|||||||
return runtimeInfo.awaitAllThreadsOnline(timeoutMs);
|
return runtimeInfo.awaitAllThreadsOnline(timeoutMs);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void stop(Activity activity) {
|
public synchronized void stop(StandardActivity activity) {
|
||||||
stop(activity.getActivityDef());
|
stop(activity.getActivityDef());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public boolean awaitAllThreadsOnline(Activity activity, long timeoutMs) {
|
public boolean awaitAllThreadsOnline(StandardActivity activity, long timeoutMs) {
|
||||||
return awaitAllThreadsOnline(activity.getActivityDef(), timeoutMs);
|
return awaitAllThreadsOnline(activity.getActivityDef(), timeoutMs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -442,13 +442,13 @@ public class ContainerActivitiesController extends NBBaseComponent {
|
|||||||
// ActivityMetrics.reportTo(System.out);
|
// ActivityMetrics.reportTo(System.out);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Optional<Activity> getSoloActivity() {
|
public Optional<StandardActivity> getSoloActivity() {
|
||||||
if (this.getActivityExecutorMap().size()==1) {
|
if (this.getActivityExecutorMap().size()==1) {
|
||||||
return Optional.of(activityInfoMap.values().iterator().next().getActivity());
|
return Optional.of(activityInfoMap.values().iterator().next().getActivity());
|
||||||
}
|
}
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
public Optional<Activity> getActivity(String activityName) {
|
public Optional<StandardActivity> getActivity(String activityName) {
|
||||||
return Optional.ofNullable(this.activityInfoMap.get(activityName)).map(ActivityRuntimeInfo::getActivity);
|
return Optional.ofNullable(this.activityInfoMap.get(activityName)).map(ActivityRuntimeInfo::getActivity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ class ActivityExecutorTest {
|
|||||||
// ActivityDef activityDef = ActivityDef.parseActivityDef("driver=diag;alias=test-restart;cycles=1000;cyclerate=10;op=initdelay:initdelay=5000;");
|
// ActivityDef activityDef = ActivityDef.parseActivityDef("driver=diag;alias=test-restart;cycles=1000;cyclerate=10;op=initdelay:initdelay=5000;");
|
||||||
// new ActivityTypeLoader().load(activityDef);
|
// new ActivityTypeLoader().load(activityDef);
|
||||||
//
|
//
|
||||||
// final Activity activity = new DelayedInitActivity(activityDef);
|
// final StandardActivity activity = new DelayedInitActivity(activityDef);
|
||||||
// InputDispenser inputDispenser = new CoreInputDispenser(activity);
|
// InputDispenser inputDispenser = new CoreInputDispenser(activity);
|
||||||
// ActionDispenser adisp = new CoreActionDispenser(activity);
|
// ActionDispenser adisp = new CoreActionDispenser(activity);
|
||||||
// OutputDispenser tdisp = CoreServices.getOutputDispenser(activity).orElse(null);
|
// OutputDispenser tdisp = CoreServices.getOutputDispenser(activity).orElse(null);
|
||||||
@ -108,7 +108,7 @@ class ActivityExecutorTest {
|
|||||||
Optional<StandardActivityType> standardActivityType = new ActivityTypeLoader().load(
|
Optional<StandardActivityType> standardActivityType = new ActivityTypeLoader().load(
|
||||||
activityDef, TestComponent.INSTANCE);
|
activityDef, TestComponent.INSTANCE);
|
||||||
|
|
||||||
// Activity activity = new DelayedInitActivity(activityDef);
|
// StandardActivity activity = new DelayedInitActivity(activityDef);
|
||||||
ActivityWiring wiring = new ActivityWiring(activityDef);
|
ActivityWiring wiring = new ActivityWiring(activityDef);
|
||||||
StandardActivity activity = standardActivityType.get().getActivity(
|
StandardActivity activity = standardActivityType.get().getActivity(
|
||||||
activityDef, TestComponent.INSTANCE, wiring);
|
activityDef, TestComponent.INSTANCE, wiring);
|
||||||
|
@ -18,11 +18,8 @@ package io.nosqlbench.engine.core;
|
|||||||
|
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.ActivityWiring;
|
import io.nosqlbench.engine.api.activityimpl.uniform.ActivityWiring;
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.api.activityimpl.uniform.actions.StandardAction;
|
|
||||||
import io.nosqlbench.nb.api.config.standard.TestComponent;
|
import io.nosqlbench.nb.api.config.standard.TestComponent;
|
||||||
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
import io.nosqlbench.nb.api.engine.activityimpl.ActivityDef;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Action;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Motor;
|
import io.nosqlbench.engine.api.activityapi.core.Motor;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.SyncAction;
|
import io.nosqlbench.engine.api.activityapi.core.SyncAction;
|
||||||
import io.nosqlbench.engine.api.activityimpl.motor.CoreMotor;
|
import io.nosqlbench.engine.api.activityimpl.motor.CoreMotor;
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package io.nosqlbench.nbr.examples.injava;
|
package io.nosqlbench.nbr.examples.injava;
|
||||||
|
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBBaseCommand;
|
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBBaseCommand;
|
||||||
@ -23,7 +24,6 @@ import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricGauge;
|
|||||||
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricTimer;
|
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricTimer;
|
||||||
import io.nosqlbench.nb.api.components.core.NBComponent;
|
import io.nosqlbench.nb.api.components.core.NBComponent;
|
||||||
import io.nosqlbench.nb.api.components.events.ParamChange;
|
import io.nosqlbench.nb.api.components.events.ParamChange;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.simrate.CycleRateSpec;
|
import io.nosqlbench.engine.api.activityapi.simrate.CycleRateSpec;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
||||||
|
|
||||||
@ -107,7 +107,7 @@ public class NB_cocycledelay_bursty extends NBBaseCommand {
|
|||||||
|
|
||||||
controller.waitMillis(500);
|
controller.waitMillis(500);
|
||||||
stdout.println("starting activity co_cycle_delay_bursty");
|
stdout.println("starting activity co_cycle_delay_bursty");
|
||||||
Activity activity = controller.start(co_cycle_delay_bursty);
|
StandardActivity activity = controller.start(co_cycle_delay_bursty);
|
||||||
controller.waitMillis(1000);
|
controller.waitMillis(1000);
|
||||||
|
|
||||||
NBMetricTimer service_time_counter = container.find().topMetric("activity=co_cycle_delay_bursty,name=cycles_servicetime", NBMetricTimer.class);
|
NBMetricTimer service_time_counter = container.find().topMetric("activity=co_cycle_delay_bursty,name=cycles_servicetime", NBMetricTimer.class);
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
package io.nosqlbench.nbr.examples.injava;
|
package io.nosqlbench.nbr.examples.injava;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
||||||
@ -57,7 +57,7 @@ public class NB_readmetrics extends NBBaseCommand {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Object invoke(NBCommandParams params, PrintWriter stdout, PrintWriter stderr, Reader stdin, ContainerActivitiesController controller) {
|
public Object invoke(NBCommandParams params, PrintWriter stdout, PrintWriter stderr, Reader stdin, ContainerActivitiesController controller) {
|
||||||
Activity activity = controller.start(Map.of(
|
StandardActivity activity = controller.start(Map.of(
|
||||||
"alias", "testactivity",
|
"alias", "testactivity",
|
||||||
"driver", "diag",
|
"driver", "diag",
|
||||||
"cycles", "0..1000000000",
|
"cycles", "0..1000000000",
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
package io.nosqlbench.nbr.examples.injava;
|
package io.nosqlbench.nbr.examples.injava;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBBaseCommand;
|
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBBaseCommand;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
||||||
@ -47,7 +47,7 @@ public class NB_threadchange extends NBBaseCommand {
|
|||||||
@Override
|
@Override
|
||||||
public Object invoke(NBCommandParams params, PrintWriter stdout, PrintWriter stderr, Reader stdin, ContainerActivitiesController controller) {
|
public Object invoke(NBCommandParams params, PrintWriter stdout, PrintWriter stderr, Reader stdin, ContainerActivitiesController controller) {
|
||||||
|
|
||||||
Activity activity = controller.start(
|
StandardActivity activity = controller.start(
|
||||||
"driver=diag;alias=threadchange;cycles=0..60000;threads=1;interval=2000;op='noop';rate=1000");
|
"driver=diag;alias=threadchange;cycles=0..60000;threads=1;interval=2000;op='noop';rate=1000");
|
||||||
activity.getActivityDef().setThreads(1);
|
activity.getActivityDef().setThreads(1);
|
||||||
stdout.println("threads now " + activity.getActivityDef().getThreads());
|
stdout.println("threads now " + activity.getActivityDef().getThreads());
|
||||||
|
@ -16,9 +16,9 @@
|
|||||||
|
|
||||||
package io.nosqlbench.scenarios.simframe;
|
package io.nosqlbench.scenarios.simframe;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.simrate.CycleRateSpec;
|
import io.nosqlbench.engine.api.activityapi.simrate.CycleRateSpec;
|
||||||
import io.nosqlbench.engine.api.activityapi.simrate.SimRateSpec;
|
import io.nosqlbench.engine.api.activityapi.simrate.SimRateSpec;
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
||||||
import io.nosqlbench.nb.api.components.events.ParamChange;
|
import io.nosqlbench.nb.api.components.events.ParamChange;
|
||||||
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricTimer;
|
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricTimer;
|
||||||
@ -29,7 +29,7 @@ import java.util.concurrent.locks.LockSupport;
|
|||||||
public class SimFrameUtils {
|
public class SimFrameUtils {
|
||||||
public static final String SIM_CYCLES = "sim_cycles";
|
public static final String SIM_CYCLES = "sim_cycles";
|
||||||
|
|
||||||
public static void awaitActivity(Activity flywheel) {
|
public static void awaitActivity(StandardActivity flywheel) {
|
||||||
// await flywheel actually spinning, or timeout with error
|
// await flywheel actually spinning, or timeout with error
|
||||||
NBMetricTimer result_success_timer = flywheel.find().timer("name:result_success");
|
NBMetricTimer result_success_timer = flywheel.find().timer("name:result_success");
|
||||||
for (int i = 0; i < 1000; i++) {
|
for (int i = 0; i < 1000; i++) {
|
||||||
@ -44,12 +44,12 @@ public class SimFrameUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Activity findFlywheelActivity(ContainerActivitiesController controller, String providedActivityName) {
|
public static StandardActivity findFlywheelActivity(ContainerActivitiesController controller, String providedActivityName) {
|
||||||
Optional<Activity> optionalActivity = Optional.ofNullable(providedActivityName).flatMap(controller::getActivity);
|
Optional<StandardActivity> optionalActivity = Optional.ofNullable(providedActivityName).flatMap(controller::getActivity);
|
||||||
if (providedActivityName!=null && optionalActivity.isEmpty()) {
|
if (providedActivityName!=null && optionalActivity.isEmpty()) {
|
||||||
throw new RuntimeException("you specified activity '" + providedActivityName + "' but it was not found.");
|
throw new RuntimeException("you specified activity '" + providedActivityName + "' but it was not found.");
|
||||||
}
|
}
|
||||||
Activity flywheel = optionalActivity.or(controller::getSoloActivity)
|
StandardActivity flywheel = optionalActivity.or(controller::getSoloActivity)
|
||||||
.orElseThrow(() -> new RuntimeException("You didn't provide the name of an activity to attach to, nor was there a solo activity available in this context"));
|
.orElseThrow(() -> new RuntimeException("You didn't provide the name of an activity to attach to, nor was there a solo activity available in this context"));
|
||||||
|
|
||||||
// Start the flywheel at an "idle" speed, even if the user hasn't set it
|
// Start the flywheel at an "idle" speed, even if the user hasn't set it
|
||||||
|
@ -16,14 +16,13 @@
|
|||||||
|
|
||||||
package io.nosqlbench.scenarios.simframe.capture;
|
package io.nosqlbench.scenarios.simframe.capture;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricGauge;
|
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricGauge;
|
||||||
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricHistogram;
|
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricHistogram;
|
||||||
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricTimer;
|
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricTimer;
|
||||||
import io.nosqlbench.scenarios.simframe.capture.SimFrameCapture;
|
|
||||||
|
|
||||||
public class SimFrameValueData extends SimFrameCapture {
|
public class SimFrameValueData extends SimFrameCapture {
|
||||||
public SimFrameValueData(Activity activity) {
|
public SimFrameValueData(StandardActivity activity) {
|
||||||
NBMetricTimer result_timer = activity.find().timer("name:result");
|
NBMetricTimer result_timer = activity.find().timer("name:result");
|
||||||
NBMetricTimer result_success_timer = activity.find().timer("name:result_success");
|
NBMetricTimer result_success_timer = activity.find().timer("name:result_success");
|
||||||
NBMetricGauge cyclerate_gauge = activity.find().gauge("name=config_cyclerate");
|
NBMetricGauge cyclerate_gauge = activity.find().gauge("name=config_cyclerate");
|
||||||
|
@ -16,9 +16,9 @@
|
|||||||
|
|
||||||
package io.nosqlbench.scenarios.simframe.optimizers;
|
package io.nosqlbench.scenarios.simframe.optimizers;
|
||||||
|
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBBaseCommand;
|
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBBaseCommand;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
||||||
import io.nosqlbench.nb.annotations.Service;
|
import io.nosqlbench.nb.annotations.Service;
|
||||||
@ -63,7 +63,7 @@ public class CMD_optimize extends NBBaseCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object invoke(NBCommandParams params, PrintWriter stdout, PrintWriter stderr, Reader stdin, ContainerActivitiesController controller) {
|
public Object invoke(NBCommandParams params, PrintWriter stdout, PrintWriter stderr, Reader stdin, ContainerActivitiesController controller) {
|
||||||
Activity flywheel = SimFrameUtils.findFlywheelActivity(controller, params.get("activity"));
|
StandardActivity flywheel = SimFrameUtils.findFlywheelActivity(controller, params.get("activity"));
|
||||||
stdout.println("starting analysis on activity '" + flywheel.getAlias() + "'");
|
stdout.println("starting analysis on activity '" + flywheel.getAlias() + "'");
|
||||||
SimFrameUtils.awaitActivity(flywheel);
|
SimFrameUtils.awaitActivity(flywheel);
|
||||||
SimFrameCapture capture = new SimFrameValueData(flywheel);
|
SimFrameCapture capture = new SimFrameValueData(flywheel);
|
||||||
|
@ -17,9 +17,9 @@
|
|||||||
|
|
||||||
package io.nosqlbench.scenarios.simframe.optimizers;
|
package io.nosqlbench.scenarios.simframe.optimizers;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.simrate.CycleRateSpec;
|
import io.nosqlbench.engine.api.activityapi.simrate.CycleRateSpec;
|
||||||
import io.nosqlbench.engine.api.activityapi.simrate.SimRateSpec;
|
import io.nosqlbench.engine.api.activityapi.simrate.SimRateSpec;
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
||||||
@ -60,11 +60,12 @@ public class CMD_reset extends NBBaseCommand {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Object invoke(NBCommandParams params, PrintWriter stdout, PrintWriter stderr, Reader stdin, ContainerActivitiesController controller) {
|
public Object invoke(NBCommandParams params, PrintWriter stdout, PrintWriter stderr, Reader stdin, ContainerActivitiesController controller) {
|
||||||
Optional<Activity> optionalActivity = Optional.ofNullable(params.get("activity")).flatMap(controller::getActivity);
|
Optional<StandardActivity> optionalActivity =
|
||||||
|
Optional.ofNullable(params.get("activity")).flatMap(controller::getActivity);
|
||||||
if (params.get("activity")!=null && optionalActivity.isEmpty()) {
|
if (params.get("activity")!=null && optionalActivity.isEmpty()) {
|
||||||
throw new RuntimeException("you specified activity '" + params.get("activity") + "' but it was not found.");
|
throw new RuntimeException("you specified activity '" + params.get("activity") + "' but it was not found.");
|
||||||
}
|
}
|
||||||
try (Activity flywheel = optionalActivity.or(controller::getSoloActivity)
|
try (StandardActivity flywheel = optionalActivity.or(controller::getSoloActivity)
|
||||||
.orElseThrow(() -> new RuntimeException("You didn't provide the name of an activity to attach to, nor was there a solo activity available in this context"))) {
|
.orElseThrow(() -> new RuntimeException("You didn't provide the name of an activity to attach to, nor was there a solo activity available in this context"))) {
|
||||||
|
|
||||||
params.forEach((key, value) -> {
|
params.forEach((key, value) -> {
|
||||||
|
@ -16,9 +16,9 @@
|
|||||||
|
|
||||||
package io.nosqlbench.scenarios.simframe.optimizers.findmax;
|
package io.nosqlbench.scenarios.simframe.optimizers.findmax;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.simrate.CycleRateSpec;
|
import io.nosqlbench.engine.api.activityapi.simrate.CycleRateSpec;
|
||||||
import io.nosqlbench.engine.api.activityapi.simrate.SimRateSpec;
|
import io.nosqlbench.engine.api.activityapi.simrate.SimRateSpec;
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.InvokableResult;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.InvokableResult;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
||||||
@ -48,7 +48,7 @@ public class CMD_findmax extends NBBaseCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object invoke(NBCommandParams params, PrintWriter stdout, PrintWriter stderr, Reader stdin, ContainerActivitiesController controller) {
|
public Object invoke(NBCommandParams params, PrintWriter stdout, PrintWriter stderr, Reader stdin, ContainerActivitiesController controller) {
|
||||||
Activity flywheel = SimFrameUtils.findFlywheelActivity(controller, params.get("activity"));
|
StandardActivity flywheel = SimFrameUtils.findFlywheelActivity(controller, params.get("activity"));
|
||||||
stdout.println("starting analysis on activity '" + flywheel.getAlias() + "'");
|
stdout.println("starting analysis on activity '" + flywheel.getAlias() + "'");
|
||||||
SimFrameUtils.awaitActivity(flywheel);
|
SimFrameUtils.awaitActivity(flywheel);
|
||||||
|
|
||||||
|
@ -16,8 +16,8 @@
|
|||||||
|
|
||||||
package io.nosqlbench.scenarios.simframe.optimizers.findmax;
|
package io.nosqlbench.scenarios.simframe.optimizers.findmax;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.RunState;
|
import io.nosqlbench.engine.api.activityapi.core.RunState;
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
||||||
import io.nosqlbench.scenarios.simframe.capture.SimFrameCapture;
|
import io.nosqlbench.scenarios.simframe.capture.SimFrameCapture;
|
||||||
import io.nosqlbench.scenarios.simframe.capture.SimFrameJournal;
|
import io.nosqlbench.scenarios.simframe.capture.SimFrameJournal;
|
||||||
@ -25,7 +25,7 @@ import io.nosqlbench.scenarios.simframe.planning.SimFrameFunction;
|
|||||||
|
|
||||||
public class FindmaxFrameFunction implements SimFrameFunction<FindmaxFrameParams> {
|
public class FindmaxFrameFunction implements SimFrameFunction<FindmaxFrameParams> {
|
||||||
|
|
||||||
private final Activity flywheel;
|
private final StandardActivity flywheel;
|
||||||
private final SimFrameCapture capture;
|
private final SimFrameCapture capture;
|
||||||
private final SimFrameJournal<FindmaxFrameParams> journal;
|
private final SimFrameJournal<FindmaxFrameParams> journal;
|
||||||
private final FindmaxConfig settings;
|
private final FindmaxConfig settings;
|
||||||
@ -35,7 +35,7 @@ public class FindmaxFrameFunction implements SimFrameFunction<FindmaxFrameParams
|
|||||||
public FindmaxFrameFunction(
|
public FindmaxFrameFunction(
|
||||||
ContainerActivitiesController controller,
|
ContainerActivitiesController controller,
|
||||||
FindmaxConfig settings,
|
FindmaxConfig settings,
|
||||||
Activity flywheel,
|
StandardActivity flywheel,
|
||||||
SimFrameCapture capture,
|
SimFrameCapture capture,
|
||||||
SimFrameJournal<FindmaxFrameParams> journal,
|
SimFrameJournal<FindmaxFrameParams> journal,
|
||||||
FindmaxParamModel model
|
FindmaxParamModel model
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package io.nosqlbench.scenarios.simframe.optimizers.optimo;
|
package io.nosqlbench.scenarios.simframe.optimizers.optimo;
|
||||||
|
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBBufferedContainer;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBBaseCommand;
|
import io.nosqlbench.engine.core.lifecycle.scenario.execution.NBBaseCommand;
|
||||||
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricGauge;
|
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricGauge;
|
||||||
@ -23,7 +24,6 @@ import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricHistogram;
|
|||||||
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricTimer;
|
import io.nosqlbench.nb.api.engine.metrics.instruments.NBMetricTimer;
|
||||||
import io.nosqlbench.nb.api.components.events.ParamChange;
|
import io.nosqlbench.nb.api.components.events.ParamChange;
|
||||||
import io.nosqlbench.nb.api.components.events.SetThreads;
|
import io.nosqlbench.nb.api.components.events.SetThreads;
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.simrate.CycleRateSpec;
|
import io.nosqlbench.engine.api.activityapi.simrate.CycleRateSpec;
|
||||||
import io.nosqlbench.engine.api.activityapi.simrate.SimRateSpec;
|
import io.nosqlbench.engine.api.activityapi.simrate.SimRateSpec;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
||||||
@ -74,7 +74,7 @@ public class CMD_optimo extends NBBaseCommand {
|
|||||||
public Object invoke(NBCommandParams params, PrintWriter stdout, PrintWriter stderr, Reader stdin, ContainerActivitiesController controller) {
|
public Object invoke(NBCommandParams params, PrintWriter stdout, PrintWriter stderr, Reader stdin, ContainerActivitiesController controller) {
|
||||||
// TODO: having "scenario" here as well as in "named scenario" in workload templates is confusing. Make this clearer.
|
// TODO: having "scenario" here as well as in "named scenario" in workload templates is confusing. Make this clearer.
|
||||||
|
|
||||||
Activity flywheel = SimFrameUtils.findFlywheelActivity(controller, params.get("activity"));
|
StandardActivity flywheel = SimFrameUtils.findFlywheelActivity(controller, params.get("activity"));
|
||||||
stdout.println("starting analysis on activity '" + flywheel.getAlias() + "'");
|
stdout.println("starting analysis on activity '" + flywheel.getAlias() + "'");
|
||||||
SimFrameUtils.awaitActivity(flywheel);
|
SimFrameUtils.awaitActivity(flywheel);
|
||||||
|
|
||||||
@ -125,7 +125,7 @@ public class CMD_optimo extends NBBaseCommand {
|
|||||||
// could be a better result if the range is arbitrarily limiting the parameter space.
|
// could be a better result if the range is arbitrarily limiting the parameter space.
|
||||||
}
|
}
|
||||||
|
|
||||||
private SimFrameCapture perfValueMeasures(Activity activity, OptimoSearchSettings settings) {
|
private SimFrameCapture perfValueMeasures(StandardActivity activity, OptimoSearchSettings settings) {
|
||||||
SimFrameCapture sampler = new SimFrameCapture();
|
SimFrameCapture sampler = new SimFrameCapture();
|
||||||
|
|
||||||
NBMetricTimer result_timer = activity.find().timer("name:result");
|
NBMetricTimer result_timer = activity.find().timer("name:result");
|
||||||
|
@ -16,8 +16,8 @@
|
|||||||
|
|
||||||
package io.nosqlbench.scenarios.simframe.optimizers.optimo;
|
package io.nosqlbench.scenarios.simframe.optimizers.optimo;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.RunState;
|
import io.nosqlbench.engine.api.activityapi.core.RunState;
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
||||||
import io.nosqlbench.scenarios.simframe.capture.SimFrameCapture;
|
import io.nosqlbench.scenarios.simframe.capture.SimFrameCapture;
|
||||||
import io.nosqlbench.scenarios.simframe.capture.SimFrameJournal;
|
import io.nosqlbench.scenarios.simframe.capture.SimFrameJournal;
|
||||||
@ -25,7 +25,7 @@ import io.nosqlbench.scenarios.simframe.planning.SimFrameFunction;
|
|||||||
|
|
||||||
public class OptimoFrameFunction implements SimFrameFunction<OptimoFrameParams> {
|
public class OptimoFrameFunction implements SimFrameFunction<OptimoFrameParams> {
|
||||||
|
|
||||||
private final Activity flywheel;
|
private final StandardActivity flywheel;
|
||||||
private final SimFrameCapture capture;
|
private final SimFrameCapture capture;
|
||||||
private final SimFrameJournal<OptimoFrameParams> journal;
|
private final SimFrameJournal<OptimoFrameParams> journal;
|
||||||
private final OptimoSearchSettings settings;
|
private final OptimoSearchSettings settings;
|
||||||
@ -34,7 +34,7 @@ public class OptimoFrameFunction implements SimFrameFunction<OptimoFrameParams>
|
|||||||
public OptimoFrameFunction(
|
public OptimoFrameFunction(
|
||||||
ContainerActivitiesController controller,
|
ContainerActivitiesController controller,
|
||||||
OptimoSearchSettings settings,
|
OptimoSearchSettings settings,
|
||||||
Activity flywheel,
|
StandardActivity flywheel,
|
||||||
SimFrameCapture capture,
|
SimFrameCapture capture,
|
||||||
SimFrameJournal<OptimoFrameParams> journal
|
SimFrameJournal<OptimoFrameParams> journal
|
||||||
) {
|
) {
|
||||||
|
@ -16,9 +16,9 @@
|
|||||||
|
|
||||||
package io.nosqlbench.scenarios.simframe.optimizers.planners.findmax;
|
package io.nosqlbench.scenarios.simframe.optimizers.planners.findmax;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.simrate.CycleRateSpec;
|
import io.nosqlbench.engine.api.activityapi.simrate.CycleRateSpec;
|
||||||
import io.nosqlbench.engine.api.activityapi.simrate.SimRateSpec;
|
import io.nosqlbench.engine.api.activityapi.simrate.SimRateSpec;
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
||||||
import io.nosqlbench.nb.api.components.core.NBBaseComponent;
|
import io.nosqlbench.nb.api.components.core.NBBaseComponent;
|
||||||
import io.nosqlbench.nb.api.components.events.ParamChange;
|
import io.nosqlbench.nb.api.components.events.ParamChange;
|
||||||
@ -102,7 +102,7 @@ public class FindmaxPlanner extends SimFramePlanner<FindmaxConfig, FindmaxFrameP
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void applyParams(FindmaxFrameParams params, Activity flywheel) {
|
public void applyParams(FindmaxFrameParams params, StandardActivity flywheel) {
|
||||||
flywheel.onEvent(ParamChange.of(new CycleRateSpec(params.rate_shelf()+params.rate_delta(), 1.1d, SimRateSpec.Verb.restart)));
|
flywheel.onEvent(ParamChange.of(new CycleRateSpec(params.rate_shelf()+params.rate_delta(), 1.1d, SimRateSpec.Verb.restart)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,9 +16,9 @@
|
|||||||
|
|
||||||
package io.nosqlbench.scenarios.simframe.optimizers.planners.ratchet;
|
package io.nosqlbench.scenarios.simframe.optimizers.planners.ratchet;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.simrate.CycleRateSpec;
|
import io.nosqlbench.engine.api.activityapi.simrate.CycleRateSpec;
|
||||||
import io.nosqlbench.engine.api.activityapi.simrate.SimRateSpec;
|
import io.nosqlbench.engine.api.activityapi.simrate.SimRateSpec;
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
||||||
import io.nosqlbench.nb.api.components.core.NBBaseComponent;
|
import io.nosqlbench.nb.api.components.core.NBBaseComponent;
|
||||||
import io.nosqlbench.nb.api.components.events.ParamChange;
|
import io.nosqlbench.nb.api.components.events.ParamChange;
|
||||||
@ -79,7 +79,7 @@ public class RatchetPlanner extends SimFramePlanner<RatchetConfig, RatchetFrameP
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void applyParams(RatchetFrameParams params, Activity flywheel) {
|
public void applyParams(RatchetFrameParams params, StandardActivity flywheel) {
|
||||||
flywheel.onEvent(ParamChange.of(new CycleRateSpec(params.rate(), 1.1d, SimRateSpec.Verb.restart)));
|
flywheel.onEvent(ParamChange.of(new CycleRateSpec(params.rate(), 1.1d, SimRateSpec.Verb.restart)));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -16,9 +16,9 @@
|
|||||||
|
|
||||||
package io.nosqlbench.scenarios.simframe.optimizers.planners.rcurve;
|
package io.nosqlbench.scenarios.simframe.optimizers.planners.rcurve;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
|
||||||
import io.nosqlbench.engine.api.activityapi.simrate.CycleRateSpec;
|
import io.nosqlbench.engine.api.activityapi.simrate.CycleRateSpec;
|
||||||
import io.nosqlbench.engine.api.activityapi.simrate.SimRateSpec;
|
import io.nosqlbench.engine.api.activityapi.simrate.SimRateSpec;
|
||||||
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
||||||
import io.nosqlbench.nb.api.components.core.NBBaseComponent;
|
import io.nosqlbench.nb.api.components.core.NBBaseComponent;
|
||||||
import io.nosqlbench.nb.api.components.events.ParamChange;
|
import io.nosqlbench.nb.api.components.events.ParamChange;
|
||||||
@ -92,7 +92,7 @@ public class RCurvePlanner extends SimFramePlanner<RCurveConfig, RCurveFramePara
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void applyParams(RCurveFrameParams params, Activity flywheel) {
|
public void applyParams(RCurveFrameParams params, StandardActivity flywheel) {
|
||||||
flywheel.onEvent(ParamChange.of(new CycleRateSpec(params.rate(), 1.1d, SimRateSpec.Verb.restart)));
|
flywheel.onEvent(ParamChange.of(new CycleRateSpec(params.rate(), 1.1d, SimRateSpec.Verb.restart)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
package io.nosqlbench.scenarios.simframe.planning;
|
package io.nosqlbench.scenarios.simframe.planning;
|
||||||
|
|
||||||
import io.nosqlbench.engine.api.activityapi.core.Activity;
|
import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivity;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.ContainerActivitiesController;
|
||||||
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
import io.nosqlbench.engine.core.lifecycle.scenario.container.NBCommandParams;
|
||||||
import io.nosqlbench.nb.api.components.core.NBBaseComponent;
|
import io.nosqlbench.nb.api.components.core.NBBaseComponent;
|
||||||
@ -64,8 +64,8 @@ public abstract class SimFramePlanner<C,P extends Record> extends NBBaseComponen
|
|||||||
*/
|
*/
|
||||||
public abstract P nextStep(JournalView<P> journal);
|
public abstract P nextStep(JournalView<P> journal);
|
||||||
|
|
||||||
public abstract void applyParams(P params, Activity activity);
|
public abstract void applyParams(P params, StandardActivity activity);
|
||||||
public P analyze(Activity flywheel, SimFrameCapture capture, PrintWriter stdout, PrintWriter stderr, ContainerActivitiesController controller) {
|
public P analyze(StandardActivity flywheel, SimFrameCapture capture, PrintWriter stdout, PrintWriter stderr, ContainerActivitiesController controller) {
|
||||||
var frameParams = initialStep();
|
var frameParams = initialStep();
|
||||||
|
|
||||||
while (frameParams != null) {
|
while (frameParams != null) {
|
||||||
|
Loading…
Reference in New Issue
Block a user