@Test
  public void testSubmitBinaryAnnotationInt() {
    when(mockServerSpan.getSpan()).thenReturn(mockSpan);
    when(mockServerSpanState.getCurrentServerSpan()).thenReturn(mockServerSpan);
    when(mockServerSpanState.getEndPoint()).thenReturn(mockEndPoint);
    serverTracer.submitBinaryAnnotation(KEY, INT_VALUE);
    verify(mockServerSpanState).getCurrentServerSpan();
    verify(mockServerSpanState).getEndPoint();

    verify(mockAnnotationSubmitter).submitBinaryAnnotation(mockSpan, mockEndPoint, KEY, INT_VALUE);
    verifyNoMoreInteractions(mockServerSpanState, mockSpanCollector, mockAnnotationSubmitter);
  }
  @Test
  public void testSubmitAnnotationString() {
    when(mockServerSpan.getSpan()).thenReturn(mockSpan);
    when(mockServerSpanState.getCurrentServerSpan()).thenReturn(mockServerSpan);
    when(mockServerSpanState.getEndPoint()).thenReturn(mockEndPoint);
    serverTracer.submitAnnotation(ANNOTATION_NAME);
    verify(mockServerSpanState).getCurrentServerSpan();
    verify(mockServerSpanState).getEndPoint();

    verify(mockAnnotationSubmitter).submitAnnotation(mockSpan, mockEndPoint, ANNOTATION_NAME);
    verifyNoMoreInteractions(mockServerSpanState, mockSpanCollector, mockAnnotationSubmitter);
  }
  @Test
  public void testSetServerReceived() {
    when(mockServerSpan.getSpan()).thenReturn(mockSpan);
    when(mockServerSpanState.getCurrentServerSpan()).thenReturn(mockServerSpan);
    when(mockServerSpanState.getEndPoint()).thenReturn(mockEndPoint);
    serverTracer.setServerReceived();
    verify(mockServerSpanState).getCurrentServerSpan();
    verify(mockServerSpanState).getEndPoint();

    verify(mockAnnotationSubmitter)
        .submitAnnotation(mockSpan, mockEndPoint, zipkinCoreConstants.SERVER_RECV);

    verifyNoMoreInteractions(mockServerSpanState, mockSpanCollector, mockAnnotationSubmitter);
  }
  @Test
  public void testSetServerSendInCaseOfThreadDuration() {
    when(mockServerSpan.getSpan()).thenReturn(mockSpan);
    when(mockServerSpanState.getCurrentServerSpan()).thenReturn(mockServerSpan);
    when(mockServerSpanState.getServerSpanThreadDuration()).thenReturn(DURATION_MS);
    when(mockServerSpanState.getEndPoint()).thenReturn(mockEndPoint);
    serverTracer.setServerSend();
    verify(mockServerSpanState).getCurrentServerSpan();
    verify(mockServerSpanState, times(2)).getEndPoint();

    verify(mockAnnotationSubmitter)
        .submitAnnotation(mockSpan, mockEndPoint, zipkinCoreConstants.SERVER_SEND);
    verify(mockAnnotationSubmitter)
        .submitBinaryAnnotation(
            mockSpan, mockEndPoint, BraveAnnotations.THREAD_DURATION, String.valueOf(DURATION_MS));
    verify(mockServerSpanState).getServerSpanThreadDuration();
    verify(mockSpanCollector).collect(mockSpan);
    verify(mockServerSpanState).setCurrentServerSpan(null);
    verifyNoMoreInteractions(mockServerSpanState, mockSpanCollector, mockAnnotationSubmitter);
  }