Search in sources :

Example 1 with Metrics

use of io.gravitee.reporter.api.http.Metrics in project gravitee-gateway by gravitee-io.

the class DefaultInvokerTest method shouldInvokeEndpointWithEncodedTargetURI.

@Test
public void shouldInvokeEndpointWithEncodedTargetURI() {
    final String targetUri = "http://host:8080/test toto  tété/titi";
    final String expectedTargetUri = "http://host:8080/test%20toto%20%20t%C3%A9t%C3%A9/titi";
    when(executionContext.getAttribute(ExecutionContext.ATTR_REQUEST_ENDPOINT)).thenReturn(targetUri);
    when(endpoint.available()).thenReturn(true);
    when(endpoint.target()).thenReturn("/test");
    when(endpoint.headers()).thenReturn(httpHeaders);
    when(endpoint.available()).thenReturn(true);
    when(endpoint.connector()).thenReturn(connector);
    when(connector.request(any(ProxyRequest.class))).thenReturn(proxyConnection);
    when(endpointManager.endpoints()).thenReturn(singleton(endpoint));
    final Metrics metrics = Metrics.on(System.currentTimeMillis()).build();
    when(serverRequest.metrics()).thenReturn(metrics);
    when(serverRequest.headers()).thenReturn(httpHeaders);
    when(api.getProxy()).thenReturn(proxy);
    when(proxy.getLoggingMode()).thenReturn(LoggingMode.NONE);
    when(stream.bodyHandler(any(Handler.class))).thenReturn(stream);
    invoker.invoke(executionContext, serverRequest, stream, connectionHandler);
    Assert.assertEquals(expectedTargetUri, metrics.getEndpoint());
}
Also used : Metrics(io.gravitee.reporter.api.http.Metrics) Handler(io.gravitee.gateway.api.handler.Handler) ProxyRequest(io.gravitee.gateway.api.proxy.ProxyRequest) Test(org.junit.Test)

Example 2 with Metrics

use of io.gravitee.reporter.api.http.Metrics in project gravitee-gateway by gravitee-io.

the class TransactionHandlerTest method shouldHaveTransactionId.

@Test
public void shouldHaveTransactionId() throws InterruptedException {
    final CountDownLatch lock = new CountDownLatch(1);
    when(request.id()).thenReturn(UUID.toString(UUID.random()));
    new TransactionHandler(request1 -> {
        assertNotNull(request1.transactionId());
        assertEquals(request1.transactionId(), request1.headers().getFirst(TransactionHandler.DEFAULT_TRANSACTIONAL_ID_HEADER));
        assertEquals(request1.transactionId(), request1.metrics().getTransactionId());
        assertEquals(request1.transactionId(), response.headers().getFirst(TransactionHandler.DEFAULT_TRANSACTIONAL_ID_HEADER));
        lock.countDown();
    }, response).handle(request);
    assertEquals(true, lock.await(10000, TimeUnit.MILLISECONDS));
}
Also used : HttpHeaders(io.gravitee.common.http.HttpHeaders) Mock(org.mockito.Mock) Assert.assertNotNull(org.junit.Assert.assertNotNull) Test(org.junit.Test) Mockito.when(org.mockito.Mockito.when) Metrics(io.gravitee.reporter.api.http.Metrics) TimeUnit(java.util.concurrent.TimeUnit) MockitoAnnotations(org.mockito.MockitoAnnotations) CountDownLatch(java.util.concurrent.CountDownLatch) Response(io.gravitee.gateway.api.Response) UUID(io.gravitee.common.utils.UUID) Request(io.gravitee.gateway.api.Request) Assert.assertEquals(org.junit.Assert.assertEquals) Before(org.junit.Before) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.Test)

Example 3 with Metrics

use of io.gravitee.reporter.api.http.Metrics in project gravitee-gateway by gravitee-io.

the class TransactionHandlerTest method shouldPropagateSameTransactionIdWithCustomHeader.

@Test
public void shouldPropagateSameTransactionIdWithCustomHeader() throws InterruptedException {
    final CountDownLatch lock = new CountDownLatch(1);
    String transactionId = UUID.toString(UUID.random());
    request.headers().set(CUSTOM_TRANSACTION_ID_HEADER, transactionId);
    new TransactionHandler(CUSTOM_TRANSACTION_ID_HEADER, request1 -> {
        assertNotNull(request1.transactionId());
        assertEquals(transactionId, request1.transactionId());
        assertEquals(transactionId, request1.headers().getFirst(CUSTOM_TRANSACTION_ID_HEADER));
        assertEquals(transactionId, request1.metrics().getTransactionId());
        assertEquals(request1.transactionId(), response.headers().getFirst(CUSTOM_TRANSACTION_ID_HEADER));
        lock.countDown();
    }, response).handle(request);
    assertEquals(true, lock.await(10000, TimeUnit.MILLISECONDS));
}
Also used : HttpHeaders(io.gravitee.common.http.HttpHeaders) Mock(org.mockito.Mock) Assert.assertNotNull(org.junit.Assert.assertNotNull) Test(org.junit.Test) Mockito.when(org.mockito.Mockito.when) Metrics(io.gravitee.reporter.api.http.Metrics) TimeUnit(java.util.concurrent.TimeUnit) MockitoAnnotations(org.mockito.MockitoAnnotations) CountDownLatch(java.util.concurrent.CountDownLatch) Response(io.gravitee.gateway.api.Response) UUID(io.gravitee.common.utils.UUID) Request(io.gravitee.gateway.api.Request) Assert.assertEquals(org.junit.Assert.assertEquals) Before(org.junit.Before) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.Test)

Example 4 with Metrics

use of io.gravitee.reporter.api.http.Metrics in project gravitee-gateway by gravitee-io.

the class RequestPolicyChainTest method doNext_multiplePolicy_throwError.

@Test
public void doNext_multiplePolicy_throwError() throws Exception {
    ExecutionContext executionContext = mock(ExecutionContext.class);
    Request request = mock(Request.class);
    Metrics metrics = Metrics.on(System.currentTimeMillis()).build();
    when(request.metrics()).thenReturn(metrics);
    PolicyChain chain = RequestPolicyChain.create(policies3(), executionContext);
    chain.setResultHandler(result -> {
    });
    chain.doNext(request, null);
    verify(request, atLeastOnce()).metrics();
    verify(policy3, atLeastOnce()).onRequest(request, null, chain, executionContext);
    verify(policy2, never()).onRequest(request, null, chain);
}
Also used : PolicyChain(io.gravitee.gateway.policy.impl.PolicyChain) RequestPolicyChain(io.gravitee.gateway.policy.impl.RequestPolicyChain) Metrics(io.gravitee.reporter.api.http.Metrics) ExecutionContext(io.gravitee.gateway.api.ExecutionContext) Request(io.gravitee.gateway.api.Request) Test(org.junit.Test)

Example 5 with Metrics

use of io.gravitee.reporter.api.http.Metrics in project gravitee-gateway by gravitee-io.

the class ResponsePolicyChainTest method doNext_multiplePolicy_throwError.

@Test
public void doNext_multiplePolicy_throwError() throws Exception {
    ExecutionContext executionContext = mock(ExecutionContext.class);
    Request request = mock(Request.class);
    Metrics metrics = Metrics.on(System.currentTimeMillis()).build();
    when(request.metrics()).thenReturn(metrics);
    PolicyChain chain = ResponsePolicyChain.create(Arrays.asList(policy2, policy3), executionContext);
    chain.setResultHandler(result -> {
    });
    chain.doNext(request, null);
    verify(request, atLeastOnce()).metrics();
    verify(policy3, atLeastOnce()).onResponse(request, null, chain, executionContext);
    verify(policy2, never()).onResponse(request, null, chain, executionContext);
}
Also used : PolicyChain(io.gravitee.gateway.policy.impl.PolicyChain) ResponsePolicyChain(io.gravitee.gateway.policy.impl.ResponsePolicyChain) Metrics(io.gravitee.reporter.api.http.Metrics) ExecutionContext(io.gravitee.gateway.api.ExecutionContext) Request(io.gravitee.gateway.api.Request) Test(org.junit.Test)

Aggregations

Metrics (io.gravitee.reporter.api.http.Metrics)7 Test (org.junit.Test)7 Request (io.gravitee.gateway.api.Request)6 HttpHeaders (io.gravitee.common.http.HttpHeaders)4 UUID (io.gravitee.common.utils.UUID)4 Response (io.gravitee.gateway.api.Response)4 CountDownLatch (java.util.concurrent.CountDownLatch)4 TimeUnit (java.util.concurrent.TimeUnit)4 Assert.assertEquals (org.junit.Assert.assertEquals)4 Assert.assertNotNull (org.junit.Assert.assertNotNull)4 Before (org.junit.Before)4 Mock (org.mockito.Mock)4 Mockito.when (org.mockito.Mockito.when)4 MockitoAnnotations (org.mockito.MockitoAnnotations)4 ExecutionContext (io.gravitee.gateway.api.ExecutionContext)2 PolicyChain (io.gravitee.gateway.policy.impl.PolicyChain)2 Handler (io.gravitee.gateway.api.handler.Handler)1 ProxyRequest (io.gravitee.gateway.api.proxy.ProxyRequest)1 RequestPolicyChain (io.gravitee.gateway.policy.impl.RequestPolicyChain)1 ResponsePolicyChain (io.gravitee.gateway.policy.impl.ResponsePolicyChain)1