Code review adjustments

This commit is contained in:
kijanowski
2023-05-12 16:51:38 +02:00
parent a8ce71f9e7
commit 2e47715ce7
18 changed files with 306 additions and 84 deletions

View File

@@ -19,6 +19,7 @@ package io.nosqlbench.engine.api.activityimpl;
import com.codahale.metrics.Histogram;
import com.codahale.metrics.Timer;
import io.nosqlbench.api.engine.metrics.ActivityMetrics;
import io.nosqlbench.api.errors.MVELCompilationError;
import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter;
import io.nosqlbench.engine.api.activityimpl.uniform.flowtypes.Op;
import io.nosqlbench.engine.api.metrics.ThreadLocalNamedTimers;
@@ -66,21 +67,29 @@ public abstract class BaseOpDispenser<T extends Op, S> implements OpDispenser<T>
}
}
configureInstrumentation(op);
configureExpectations(op);
}
// TODO/MVEL: Please add some error handling around that explains to the user
// what happened in the event of a compilation failure.
private void configureExpectations(ParsedOp op) {
op.getOptionalStaticValue("expected-result", String.class)
.map(MVEL::compileExpression)
.ifPresent(result -> this.expectedResultExpression = result);
configureResultExpectations(op);
}
public Serializable getExpectedResultExpression() {
return expectedResultExpression;
}
private void configureResultExpectations(ParsedOp op) {
op.getOptionalStaticValue("expected-result", String.class)
.map(this::compileExpectedResultExpression)
.ifPresent(result -> this.expectedResultExpression = result);
}
private Serializable compileExpectedResultExpression(String expectedResultExpression) {
try {
return MVEL.compileExpression(expectedResultExpression);
} catch (Exception e) {
throw new MVELCompilationError(
String.format("Failed to compile expected-result expression: \"%s\"", expectedResultExpression), e
);
}
}
String getOpName() {
return opName;
}

View File

@@ -33,9 +33,4 @@ package io.nosqlbench.engine.api.activityimpl.uniform.flowtypes;
*/
// TODO: optimize the runtime around the specific op type
public interface Op extends OpResultSize {
// TODO/MVEL: Let's take this out of here to keep Op as a tagging interface
// I think it will sit fine on the BaseOpDispenser, and lifecycles align for this nicely
default boolean verified() {
return false;
}
}