protected abstract void doProcess(Exchange exchange, MetricsEndpoint endpoint, MetricRegistry registry, String metricsName)
            throws Exception;
@Test
    public void testDoProcess() throws Exception {
        when(in.getHeader(HEADER_METRIC_NAME, String.class)).thenReturn(null);
        when(in.removeHeaders(HEADER_PATTERN)).thenReturn(true);
        okProducer.process(exchange);
        inOrder.verify(exchange, times(1)).getIn();
        inOrder.verify(endpoint, times(1)).getMetricsName();
        inOrder.verify(in, times(1)).getHeader(HEADER_METRIC_NAME, String.class);
        inOrder.verify(endpoint, times(1)).getRegistry();
        inOrder.verify(in, times(1)).removeHeaders(HEADER_PATTERN);
        inOrder.verifyNoMoreInteractions();
    }