@Test public void testInvoke() { final String originApplication = "consumerA"; final Invoker invoker = mock(Invoker.class); when(invoker.getInterface()).thenReturn(DemoService.class); final Invocation invocation = mock(Invocation.class); Method method = DemoService.class.getMethods()[0]; when(invocation.getMethodName()).thenReturn(method.getName()); when(invocation.getParameterTypes()).thenReturn(method.getParameterTypes()); when(invocation.getAttachment(DubboUtils.DUBBO_APPLICATION_KEY, "")).thenReturn(originApplication); final Result result = mock(Result.class); when(result.hasException()).thenReturn(false); when(invoker.invoke(invocation)).thenAnswer(new Answer<Object>() { @Override public Object answer(InvocationOnMock invocationOnMock) throws Throwable { verifyInvocationStructure(originApplication, invoker, invocation); return result; } }); filter.invoke(invoker, invocation); verify(invoker).invoke(invocation); Context context = ContextUtil.getContext(); assertNull(context); }
@Override public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { String application = DubboUtils.getApplication(invocation, ""); Entry interfaceEntry = null; Entry methodEntry = null; try { String resourceName = getResourceName(invoker, invocation); String interfaceName = invoker.getInterface().getName(); ContextUtil.enter(resourceName, application); interfaceEntry = SphU.entry(interfaceName, EntryType.IN); methodEntry = SphU.entry(resourceName, EntryType.IN, 1, invocation.getArguments()); Result result = invoker.invoke(invocation); if (result.hasException()) { Tracer.trace(result.getException()); } return result; } catch (BlockException e) { return DubboFallbackRegistry.getProviderFallback().handle(invoker, invocation, e); } catch (RpcException e) { Tracer.trace(e); throw e; } finally { if (methodEntry != null) { methodEntry.exit(1, invocation.getArguments()); } if (interfaceEntry != null) { interfaceEntry.exit(); } ContextUtil.exit(); } }
SentinelDubboProviderFilter extends AbstractDubboFilter implements Filter { @Override public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { String application = DubboUtils.getApplication(invocation, ""); Entry interfaceEntry = null; Entry methodEntry = null; try { String resourceName = getResourceName(invoker, invocation); String interfaceName = invoker.getInterface().getName(); ContextUtil.enter(resourceName, application); interfaceEntry = SphU.entry(interfaceName, EntryType.IN); methodEntry = SphU.entry(resourceName, EntryType.IN, 1, invocation.getArguments()); Result result = invoker.invoke(invocation); if (result.hasException()) { Tracer.trace(result.getException()); } return result; } catch (BlockException e) { return DubboFallbackRegistry.getProviderFallback().handle(invoker, invocation, e); } catch (RpcException e) { Tracer.trace(e); throw e; } finally { if (methodEntry != null) { methodEntry.exit(1, invocation.getArguments()); } if (interfaceEntry != null) { interfaceEntry.exit(); } ContextUtil.exit(); } } }
SentinelDubboProviderFilter extends AbstractDubboFilter implements Filter { @Override public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { String application = DubboUtils.getApplication(invocation, ""); Entry interfaceEntry = null; Entry methodEntry = null; try { String resourceName = getResourceName(invoker, invocation); String interfaceName = invoker.getInterface().getName(); ContextUtil.enter(resourceName, application); interfaceEntry = SphU.entry(interfaceName, EntryType.IN); methodEntry = SphU.entry(resourceName, EntryType.IN, 1, invocation.getArguments()); Result result = invoker.invoke(invocation); if (result.hasException()) { Tracer.trace(result.getException()); } return result; } catch (BlockException e) { return DubboFallbackRegistry.getProviderFallback().handle(invoker, invocation, e); } catch (RpcException e) { Tracer.trace(e); throw e; } finally { if (methodEntry != null) { methodEntry.exit(1, invocation.getArguments()); } if (interfaceEntry != null) { interfaceEntry.exit(); } ContextUtil.exit(); } } SentinelDubboProviderFilter(); }
SentinelDubboProviderFilter extends AbstractDubboFilter implements Filter { @Override public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { String application = DubboUtils.getApplication(invocation, ""); Entry interfaceEntry = null; Entry methodEntry = null; try { String resourceName = getResourceName(invoker, invocation); String interfaceName = invoker.getInterface().getName(); ContextUtil.enter(resourceName, application); interfaceEntry = SphU.entry(interfaceName, EntryType.IN); methodEntry = SphU.entry(resourceName, EntryType.IN, 1, invocation.getArguments()); Result result = invoker.invoke(invocation); if (result.hasException()) { Tracer.trace(result.getException()); } return result; } catch (BlockException e) { return DubboFallbackRegistry.getProviderFallback().handle(invoker, invocation, e); } catch (RpcException e) { Tracer.trace(e); throw e; } finally { if (methodEntry != null) { methodEntry.exit(1, invocation.getArguments()); } if (interfaceEntry != null) { interfaceEntry.exit(); } ContextUtil.exit(); } } SentinelDubboProviderFilter(); @Override Result invoke(Invoker<?> invoker, Invocation invocation); }
SentinelDubboProviderFilter extends AbstractDubboFilter implements Filter { @Override public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { String application = DubboUtils.getApplication(invocation, ""); Entry interfaceEntry = null; Entry methodEntry = null; try { String resourceName = getResourceName(invoker, invocation); String interfaceName = invoker.getInterface().getName(); ContextUtil.enter(resourceName, application); interfaceEntry = SphU.entry(interfaceName, EntryType.IN); methodEntry = SphU.entry(resourceName, EntryType.IN, 1, invocation.getArguments()); Result result = invoker.invoke(invocation); if (result.hasException()) { Tracer.trace(result.getException()); } return result; } catch (BlockException e) { return DubboFallbackRegistry.getProviderFallback().handle(invoker, invocation, e); } catch (RpcException e) { Tracer.trace(e); throw e; } finally { if (methodEntry != null) { methodEntry.exit(1, invocation.getArguments()); } if (interfaceEntry != null) { interfaceEntry.exit(); } ContextUtil.exit(); } } SentinelDubboProviderFilter(); @Override Result invoke(Invoker<?> invoker, Invocation invocation);  }