mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
add verifier timer
This commit is contained in:
@@ -57,6 +57,7 @@ public abstract class BaseOpDispenser<T extends Op, S> implements OpDispenser<T>
|
||||
private final String opName;
|
||||
protected final DriverAdapter<T, S> adapter;
|
||||
private final NBLabels labels;
|
||||
public final Timer verifierTimer;
|
||||
private boolean instrument;
|
||||
private Timer successTimer;
|
||||
private Timer errorTimer;
|
||||
@@ -97,7 +98,8 @@ public abstract class BaseOpDispenser<T extends Op, S> implements OpDispenser<T>
|
||||
List<CycleFunction<Boolean>> verifiers = new ArrayList<>();
|
||||
verifiers = configureVerifiers(op);
|
||||
this._verifier = CycleFunctions.of((a, b) -> a && b, verifiers, true);
|
||||
this.tlVerifier = ThreadLocal.withInitial(() -> _verifier.newInstance());
|
||||
this.tlVerifier = ThreadLocal.withInitial(_verifier::newInstance);
|
||||
this.verifierTimer = ActivityMetrics.timer(this,"verifier",3);
|
||||
}
|
||||
|
||||
private CycleFunction<Boolean> cloneVerifiers() {
|
||||
|
||||
@@ -133,4 +133,6 @@ public interface ActivityInstrumentation {
|
||||
* @return a new or existing {@link Histogram}
|
||||
*/
|
||||
Histogram getOrCreateTriesHistogram();
|
||||
|
||||
Timer getOrCreateVerifierTimer();
|
||||
}
|
||||
|
||||
@@ -113,4 +113,10 @@ public class CoreActivityInstrumentation implements ActivityInstrumentation {
|
||||
public synchronized Histogram getOrCreateTriesHistogram() {
|
||||
return ActivityMetrics.histogram(this.activity,"tries", this.activity.getHdrDigits());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Timer getOrCreateVerifierTimer() {
|
||||
return ActivityMetrics.timer(this.activity,"verifier", this.activity.getHdrDigits());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,6 +59,7 @@ public class StandardAction<A extends StandardActivity<R, ?>, R extends Op> impl
|
||||
private final NBErrorHandler errorHandler;
|
||||
private final OpSequence<OpDispenser<? extends Op>> opsequence;
|
||||
private final int maxTries;
|
||||
private final Timer verifierTimer;
|
||||
|
||||
public StandardAction(A activity, int slot) {
|
||||
this.activity = activity;
|
||||
@@ -71,6 +72,7 @@ public class StandardAction<A extends StandardActivity<R, ?>, R extends Op> impl
|
||||
resultTimer = activity.getInstrumentation().getOrCreateResultTimer();
|
||||
resultSuccessTimer = activity.getInstrumentation().getOrCreateResultSuccessTimer();
|
||||
errorHandler = activity.getErrorHandler();
|
||||
verifierTimer = activity.getInstrumentation().getOrCreateVerifierTimer();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -109,16 +111,18 @@ public class StandardAction<A extends StandardActivity<R, ?>, R extends Op> impl
|
||||
"one of [RunnableOp, CycleOp, or ChainingOp]");
|
||||
}
|
||||
|
||||
CycleFunction<Boolean> verifier = dispenser.getVerifier();
|
||||
try {
|
||||
verifier.setVariable("result", result);
|
||||
verifier.setVariable("cycle",cycle);
|
||||
Boolean isGood = verifier.apply(cycle);
|
||||
if (!isGood) {
|
||||
throw new ResultVerificationError("result verification failed", maxTries - tries, verifier.getExpressionDetails());
|
||||
try (Timer.Context ignored = verifierTimer.time()) {
|
||||
CycleFunction<Boolean> verifier = dispenser.getVerifier();
|
||||
try {
|
||||
verifier.setVariable("result", result);
|
||||
verifier.setVariable("cycle",cycle);
|
||||
Boolean isGood = verifier.apply(cycle);
|
||||
if (!isGood) {
|
||||
throw new ResultVerificationError("result verification failed", maxTries - tries, verifier.getExpressionDetails());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new ResultVerificationError(e, maxTries - tries, verifier.getExpressionDetails());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new ResultVerificationError(e, maxTries - tries, verifier.getExpressionDetails());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
error = e;
|
||||
|
||||
Reference in New Issue
Block a user