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() {
}
};
}
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);
}
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());
}
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());
}
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);
}
Aggregations