### Question:
ThriftMonitoring { public static String getMethodName(TAsyncMethodCall methodCall){ return methodNameCache.computeIfAbsent(methodCall.getClass(), clazz -> { String simpleName = clazz.getSimpleName(); if (simpleName.endsWith(METHOD_CLASS_SUFFIX) && simpleName.length() > METHOD_CLASS_SUFFIX.length()) { return simpleName.substring(0, simpleName.length() - METHOD_CLASS_SUFFIX.length()); } else { return simpleName; } }); }  static ThriftMonitor getMonitor(); static synchronized void setThriftMonitor(ThriftMonitor thriftMonitor); static void disable(); static boolean isDisabled(); static String formatPoolJmxPrefix(
            String thriftServiceName,
            ThriftClientAddress address,
            ThriftCallType callType
    ); static String getMethodName(TAsyncMethodCall methodCall); static String escapeDots(String str); static final String POOL_JMX_BASE; static final String METHOD_CLASS_SUFFIX; }### Answer:
@Test(groups = "unit") public void getMethodName() throws Exception { String name = ThriftMonitoring.getMethodName(new DemoServer.AsyncClient.responseFullAsync_call( 0, null, mock(TAsyncClient.class), null, null )); assertEquals(name, "responseFullAsync"); }