@Test protected void notInstrumentedClientAndServer(TestInfo testInfo) throws Exception {
    String testSuffix = testSuffix(testInfo);
    String traceId = newTraceId();

    Endpoint kafka = suffixServiceName(TestObjects.KAFKA, testSuffix);
    Endpoint frontend = suffixServiceName(TestObjects.FRONTEND, testSuffix);
    Endpoint backend = suffixServiceName(TestObjects.BACKEND, testSuffix);
    Endpoint db = suffixServiceName(TestObjects.DB, testSuffix);

    List<Span> trace = List.of(
      Span.newBuilder().traceId(traceId).id("20").name("get")
        .timestamp(TODAY * 1000L).duration(350L * 1000L)
        .kind(Kind.SERVER)
        .localEndpoint(frontend)
        .remoteEndpoint(kafka)
        .build(),
      Span.newBuilder().traceId(traceId).parentId("20").id("21").name("get")
        .timestamp((TODAY + 50L) * 1000L).duration(250L * 1000L)
        .kind(Kind.CLIENT)
        .localEndpoint(frontend)
        .build(),
      Span.newBuilder().traceId(traceId).parentId("20").id("21").name("get").shared(true)
        .timestamp((TODAY + 250) * 1000L).duration(50L * 1000L)
        .kind(Kind.SERVER)
        .localEndpoint(backend)
        .build(),
      Span.newBuilder().traceId(traceId).parentId("21").id("22").name("get")
        .timestamp((TODAY + 150L) * 1000L).duration(50L * 1000L)
        .kind(Kind.CLIENT)
        .localEndpoint(backend)
        .remoteEndpoint(db)
        .build()
    );

    processDependencies(trace);

    assertThat(store().getDependencies(endTs(trace), DAY).execute()).containsOnly(
      DependencyLink.newBuilder()
        .parent(kafka.serviceName())
        .child(frontend.serviceName())
        .callCount(1)
        .build(),
      DependencyLink.newBuilder()
        .parent(frontend.serviceName())
        .child(backend.serviceName())
        .callCount(1)
        .build(),
      DependencyLink.newBuilder()
        .parent(backend.serviceName())
        .child(db.serviceName())
        .callCount(1)
        .build()
    );
  }
This test confirms that the span store can detect dependency indicated by local and remote
endpoint. Specifically, this detects an uninstrumented client before the trace and an
uninstrumented server at the end of it.
zipkin-tests/src/main/java/zipkin2/storage/ITDependencies.java