Search in sources :

Example 91 with Invoker

use of org.apache.dubbo.rpc.Invoker in project dubbo by alibaba.

the class MetricsFilter method initMetricsInvoker.

private Invoker<MetricsService> initMetricsInvoker() {
    return new Invoker<MetricsService>() {

        @Override
        public Class<MetricsService> getInterface() {
            return MetricsService.class;
        }

        @Override
        public Result invoke(Invocation invocation) throws RpcException {
            String group = invocation.getArguments()[0].toString();
            MetricRegistry registry = MetricManager.getIMetricManager().getMetricRegistryByGroup(group);
            SortedMap<MetricName, FastCompass> fastCompasses = registry.getFastCompasses();
            long timestamp = System.currentTimeMillis();
            double rateFactor = TimeUnit.SECONDS.toSeconds(1);
            double durationFactor = 1.0 / TimeUnit.MILLISECONDS.toNanos(1);
            MetricsCollector collector = MetricsCollectorFactory.createNew(CollectLevel.NORMAL, Collections.EMPTY_MAP, rateFactor, durationFactor, null);
            for (Map.Entry<MetricName, FastCompass> entry : fastCompasses.entrySet()) {
                collector.collect(entry.getKey(), entry.getValue(), timestamp);
            }
            List<MetricObject> res = collector.build();
            res.addAll(getThreadPoolMessage());
            return AsyncRpcResult.newDefaultAsyncResult(JSON.toJSONString(res), invocation);
        }

        @Override
        public URL getUrl() {
            return URL.valueOf(protocolName + "://" + NetUtils.getIpByConfig() + ":" + port + "/" + MetricsService.class.getName());
        }

        @Override
        public boolean isAvailable() {
            return false;
        }

        @Override
        public void destroy() {
        }
    };
}
Also used : MetricsCollector(com.alibaba.metrics.common.MetricsCollector) Invocation(org.apache.dubbo.rpc.Invocation) MetricsService(org.apache.dubbo.monitor.MetricsService) MetricRegistry(com.alibaba.metrics.MetricRegistry) MetricName(com.alibaba.metrics.MetricName) Invoker(org.apache.dubbo.rpc.Invoker) FastCompass(com.alibaba.metrics.FastCompass) MetricObject(com.alibaba.metrics.common.MetricObject) HashMap(java.util.HashMap) Map(java.util.Map) SortedMap(java.util.SortedMap)

Example 92 with Invoker

use of org.apache.dubbo.rpc.Invoker in project dubbo by alibaba.

the class ProviderAuthFilterTest method testAuthFailedWhenParameterError.

@Test
void testAuthFailedWhenParameterError() {
    String service = "org.apache.dubbo.DemoService";
    String method = "test";
    Object[] originalParams = new Object[] { "dubbo1", "dubbo2" };
    long currentTimeMillis = System.currentTimeMillis();
    URL url = URL.valueOf("dubbo://10.10.10.10:2181").setServiceInterface(service).addParameter(Constants.ACCESS_KEY_ID_KEY, "ak").addParameter(Constants.SECRET_ACCESS_KEY_KEY, "sk").addParameter(CommonConstants.APPLICATION_KEY, "test-provider").addParameter(Constants.PARAMETER_SIGNATURE_ENABLE_KEY, true).addParameter(Constants.SERVICE_AUTH, true);
    Invoker invoker = mock(Invoker.class);
    Invocation invocation = mock(Invocation.class);
    when(invocation.getObjectAttachment(Constants.AK_KEY)).thenReturn("ak");
    when(invocation.getObjectAttachment(CommonConstants.CONSUMER)).thenReturn("test-consumer");
    when(invocation.getObjectAttachment(Constants.REQUEST_TIMESTAMP_KEY)).thenReturn(currentTimeMillis);
    when(invocation.getMethodName()).thenReturn(method);
    Object[] fakeParams = new Object[] { "dubbo1", "dubbo3" };
    when(invocation.getArguments()).thenReturn(fakeParams);
    when(invoker.getUrl()).thenReturn(url);
    String requestString = String.format(Constants.SIGNATURE_STRING_FORMAT, url.getColonSeparatedKey(), invocation.getMethodName(), "sk", currentTimeMillis);
    String sign = SignatureUtils.sign(originalParams, requestString, "sk");
    when(invocation.getObjectAttachment(Constants.REQUEST_SIGNATURE_KEY)).thenReturn(sign);
    ProviderAuthFilter providerAuthFilter = new ProviderAuthFilter();
    Result result = providerAuthFilter.invoke(invoker, invocation);
    assertTrue(result.hasException());
    assertTrue(result.getException() instanceof RpcAuthenticationException);
}
Also used : Invoker(org.apache.dubbo.rpc.Invoker) Invocation(org.apache.dubbo.rpc.Invocation) RpcAuthenticationException(org.apache.dubbo.auth.exception.RpcAuthenticationException) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) URL(org.apache.dubbo.common.URL) Result(org.apache.dubbo.rpc.Result) Test(org.junit.jupiter.api.Test)

Example 93 with Invoker

use of org.apache.dubbo.rpc.Invoker in project dubbo by alibaba.

the class ProviderAuthFilterTest method testAuthFailed.

@Test
void testAuthFailed() {
    URL url = URL.valueOf("dubbo://10.10.10.10:2181").addParameter(Constants.ACCESS_KEY_ID_KEY, "ak").addParameter(Constants.SECRET_ACCESS_KEY_KEY, "sk").addParameter(CommonConstants.APPLICATION_KEY, "test").addParameter(Constants.SERVICE_AUTH, true);
    Invoker invoker = mock(Invoker.class);
    Invocation invocation = mock(Invocation.class);
    when(invocation.getAttachment(Constants.REQUEST_SIGNATURE_KEY)).thenReturn(null);
    when(invoker.getUrl()).thenReturn(url);
    ProviderAuthFilter providerAuthFilter = new ProviderAuthFilter();
    Result result = providerAuthFilter.invoke(invoker, invocation);
    assertTrue(result.hasException());
}
Also used : Invoker(org.apache.dubbo.rpc.Invoker) Invocation(org.apache.dubbo.rpc.Invocation) URL(org.apache.dubbo.common.URL) Result(org.apache.dubbo.rpc.Result) Test(org.junit.jupiter.api.Test)

Example 94 with Invoker

use of org.apache.dubbo.rpc.Invoker in project dubbo by alibaba.

the class ProviderAuthFilterTest method testAuthFailedWhenNoSignature.

@Test
void testAuthFailedWhenNoSignature() {
    URL url = URL.valueOf("dubbo://10.10.10.10:2181").addParameter(Constants.ACCESS_KEY_ID_KEY, "ak").addParameter(Constants.SECRET_ACCESS_KEY_KEY, "sk").addParameter(CommonConstants.APPLICATION_KEY, "test").addParameter(Constants.SERVICE_AUTH, true);
    Invoker invoker = mock(Invoker.class);
    Invocation invocation = mock(Invocation.class);
    when(invocation.getAttachment(Constants.REQUEST_SIGNATURE_KEY)).thenReturn(null);
    when(invoker.getUrl()).thenReturn(url);
    ProviderAuthFilter providerAuthFilter = new ProviderAuthFilter();
    Result result = providerAuthFilter.invoke(invoker, invocation);
    assertTrue(result.hasException());
}
Also used : Invoker(org.apache.dubbo.rpc.Invoker) Invocation(org.apache.dubbo.rpc.Invocation) URL(org.apache.dubbo.common.URL) Result(org.apache.dubbo.rpc.Result) Test(org.junit.jupiter.api.Test)

Example 95 with Invoker

use of org.apache.dubbo.rpc.Invoker in project dubbo by alibaba.

the class ProviderAuthFilterTest method testAuthFailedWhenNoAccessKeyPair.

@Test
void testAuthFailedWhenNoAccessKeyPair() {
    URL url = URL.valueOf("dubbo://10.10.10.10:2181").addParameter(CommonConstants.APPLICATION_KEY, "test-provider").addParameter(Constants.SERVICE_AUTH, true);
    Invoker invoker = mock(Invoker.class);
    Invocation invocation = mock(Invocation.class);
    when(invocation.getObjectAttachment(Constants.REQUEST_SIGNATURE_KEY)).thenReturn("dubbo");
    when(invocation.getObjectAttachment(Constants.AK_KEY)).thenReturn("ak");
    when(invocation.getObjectAttachment(CommonConstants.CONSUMER)).thenReturn("test-consumer");
    when(invocation.getObjectAttachment(Constants.REQUEST_TIMESTAMP_KEY)).thenReturn(System.currentTimeMillis());
    when(invoker.getUrl()).thenReturn(url);
    ProviderAuthFilter providerAuthFilter = new ProviderAuthFilter();
    Result result = providerAuthFilter.invoke(invoker, invocation);
    assertTrue(result.hasException());
    assertTrue(result.getException() instanceof RpcAuthenticationException);
}
Also used : Invoker(org.apache.dubbo.rpc.Invoker) Invocation(org.apache.dubbo.rpc.Invocation) RpcAuthenticationException(org.apache.dubbo.auth.exception.RpcAuthenticationException) URL(org.apache.dubbo.common.URL) Result(org.apache.dubbo.rpc.Result) Test(org.junit.jupiter.api.Test)

Aggregations

Invoker (org.apache.dubbo.rpc.Invoker)128 Test (org.junit.jupiter.api.Test)104 URL (org.apache.dubbo.common.URL)74 RpcInvocation (org.apache.dubbo.rpc.RpcInvocation)66 ArrayList (java.util.ArrayList)48 Invocation (org.apache.dubbo.rpc.Invocation)42 Result (org.apache.dubbo.rpc.Result)26 AppResponse (org.apache.dubbo.rpc.AppResponse)21 MockClusterInvoker (org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker)21 RegistryDirectory (org.apache.dubbo.registry.integration.RegistryDirectory)20 Router (org.apache.dubbo.rpc.cluster.Router)18 MockInvoker (org.apache.dubbo.rpc.cluster.router.MockInvoker)18 HashMap (java.util.HashMap)13 LoadBalance (org.apache.dubbo.rpc.cluster.LoadBalance)13 AsyncRpcResult (org.apache.dubbo.rpc.AsyncRpcResult)12 RpcException (org.apache.dubbo.rpc.RpcException)12 LeastActiveLoadBalance (org.apache.dubbo.rpc.cluster.loadbalance.LeastActiveLoadBalance)8 RandomLoadBalance (org.apache.dubbo.rpc.cluster.loadbalance.RandomLoadBalance)8 RoundRobinLoadBalance (org.apache.dubbo.rpc.cluster.loadbalance.RoundRobinLoadBalance)8 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)8