use of fish.payara.microprofile.faulttolerance.service.FaultToleranceServiceStub in project Payara by payara.
the class BulkheadLifecycleTckTest method createService.
@Override
protected FaultToleranceServiceStub createService() {
// this test needs to use more advanced state per method as multiple methods are involved
// therefore the below special setup where we have state per method as in the actual implementation
final Map<Object, AtomicReference<BlockingQueue<Thread>>> concurrentExecutionByMethodId = new ConcurrentHashMap<>();
final Map<Object, AtomicInteger> waitingQueuePopulationByMethodId = new ConcurrentHashMap<>();
registry = new MetricRegistryImpl(Type.BASE);
return new FaultToleranceServiceStub() {
@Override
protected FaultToleranceMethodContext stubMethodContext(StubContext ctx) {
FaultToleranceMetrics metrics = new MethodFaultToleranceMetrics(registry, FaultToleranceUtils.getCanonicalMethodName(ctx.context));
return new FaultToleranceMethodContextStub(ctx, state, concurrentExecutionByMethodId.computeIfAbsent(ctx.key, key -> new AtomicReference<>()), waitingQueuePopulationByMethodId.computeIfAbsent(ctx.key, key -> new AtomicInteger())) {
@Override
public FaultToleranceMetrics getMetrics() {
return metrics;
}
@Override
public Future<?> runDelayed(long delayMillis, Runnable task) throws Exception {
return CompletableFuture.completedFuture(null);
}
};
}
};
}
use of fish.payara.microprofile.faulttolerance.service.FaultToleranceServiceStub in project Payara by payara.
the class FallbackBasicTest method proceedToResultValue.
private Object proceedToResultValue(Object... methodArguments) throws Exception {
Method annotatedMethod = TestUtils.getAnnotatedMethod();
FaultTolerancePolicy policy = FaultTolerancePolicy.asAnnotated(getClass(), annotatedMethod);
StaticAnalysisContext context = new StaticAnalysisContext(this, annotatedMethod, methodArguments);
return policy.proceed(context, () -> new FaultToleranceServiceStub().getMethodContext(context, policy));
}
use of fish.payara.microprofile.faulttolerance.service.FaultToleranceServiceStub in project Payara by payara.
the class AsyncronousExceptionHandlingTest method proceedToDoneFuture.
private Future<?> proceedToDoneFuture() throws Exception {
Method annotatedMethod = TestUtils.getAnnotatedMethod();
FaultTolerancePolicy policy = FaultTolerancePolicy.asAnnotated(getClass(), annotatedMethod);
StaticAnalysisContext context = new StaticAnalysisContext(this, annotatedMethod);
Future<?> result = AsynchronousPolicy.toFuture(policy.proceed(context, () -> new FaultToleranceServiceStub().getMethodContext(context, policy)));
assertTrue(result.isDone());
return result;
}
Aggregations