Search in sources :

Example 1 with MethodFaultToleranceMetrics

use of fish.payara.microprofile.faulttolerance.service.MethodFaultToleranceMetrics 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);
                }
            };
        }
    };
}
Also used : Awaitility.await(org.awaitility.Awaitility.await) FaultToleranceMethodContext(fish.payara.microprofile.faulttolerance.FaultToleranceMethodContext) FaultToleranceServiceStub(fish.payara.microprofile.faulttolerance.service.FaultToleranceServiceStub) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) MetricRegistryImpl(fish.payara.microprofile.metrics.impl.MetricRegistryImpl) BlockingQueue(java.util.concurrent.BlockingQueue) CompletableFuture(java.util.concurrent.CompletableFuture) Test(org.junit.Test) FaultToleranceMethodContextStub(fish.payara.microprofile.faulttolerance.service.FaultToleranceMethodContextStub) AtomicReference(java.util.concurrent.atomic.AtomicReference) ExecutionException(java.util.concurrent.ExecutionException) TimeUnit(java.util.concurrent.TimeUnit) Bulkhead(org.eclipse.microprofile.faulttolerance.Bulkhead) Type(org.eclipse.microprofile.metrics.MetricRegistry.Type) Future(java.util.concurrent.Future) FaultToleranceUtils(fish.payara.microprofile.faulttolerance.service.FaultToleranceUtils) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) MethodFaultToleranceMetrics(fish.payara.microprofile.faulttolerance.service.MethodFaultToleranceMetrics) Map(java.util.Map) MetricRegistry(org.eclipse.microprofile.metrics.MetricRegistry) Method(java.lang.reflect.Method) FaultToleranceMetrics(fish.payara.microprofile.faulttolerance.FaultToleranceMetrics) Assert.assertEquals(org.junit.Assert.assertEquals) FaultToleranceServiceStub(fish.payara.microprofile.faulttolerance.service.FaultToleranceServiceStub) MethodFaultToleranceMetrics(fish.payara.microprofile.faulttolerance.service.MethodFaultToleranceMetrics) FaultToleranceMetrics(fish.payara.microprofile.faulttolerance.FaultToleranceMetrics) MetricRegistryImpl(fish.payara.microprofile.metrics.impl.MetricRegistryImpl) MethodFaultToleranceMetrics(fish.payara.microprofile.faulttolerance.service.MethodFaultToleranceMetrics) AtomicReference(java.util.concurrent.atomic.AtomicReference) FaultToleranceMethodContextStub(fish.payara.microprofile.faulttolerance.service.FaultToleranceMethodContextStub) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap)

Aggregations

FaultToleranceMethodContext (fish.payara.microprofile.faulttolerance.FaultToleranceMethodContext)1 FaultToleranceMetrics (fish.payara.microprofile.faulttolerance.FaultToleranceMetrics)1 FaultToleranceMethodContextStub (fish.payara.microprofile.faulttolerance.service.FaultToleranceMethodContextStub)1 FaultToleranceServiceStub (fish.payara.microprofile.faulttolerance.service.FaultToleranceServiceStub)1 FaultToleranceUtils (fish.payara.microprofile.faulttolerance.service.FaultToleranceUtils)1 MethodFaultToleranceMetrics (fish.payara.microprofile.faulttolerance.service.MethodFaultToleranceMetrics)1 MetricRegistryImpl (fish.payara.microprofile.metrics.impl.MetricRegistryImpl)1 Method (java.lang.reflect.Method)1 Map (java.util.Map)1 BlockingQueue (java.util.concurrent.BlockingQueue)1 CompletableFuture (java.util.concurrent.CompletableFuture)1 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)1 ExecutionException (java.util.concurrent.ExecutionException)1 Future (java.util.concurrent.Future)1 TimeUnit (java.util.concurrent.TimeUnit)1 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)1 AtomicReference (java.util.concurrent.atomic.AtomicReference)1 Awaitility.await (org.awaitility.Awaitility.await)1 Bulkhead (org.eclipse.microprofile.faulttolerance.Bulkhead)1 MetricRegistry (org.eclipse.microprofile.metrics.MetricRegistry)1