add verifier timer

This commit is contained in:
Jonathan Shook
2023-09-26 00:05:32 -05:00
parent bd57c26de1
commit 39f2a55e06
4 changed files with 24 additions and 10 deletions

View File

@@ -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() {

View File

@@ -133,4 +133,6 @@ public interface ActivityInstrumentation {
* @return a new or existing {@link Histogram}
*/
Histogram getOrCreateTriesHistogram();
Timer getOrCreateVerifierTimer();
}

View File

@@ -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());
}
}

View File

@@ -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;