@Test void getTraces_byTraceIds() throws IOException {
    Span trace1Span1 = Span.newBuilder().traceId("1").id("1").name("root")
      .localEndpoint(Endpoint.newBuilder().serviceName("app").build())
      .timestamp(TODAY * 1000)
      .build();
    Span trace1Span2 = Span.newBuilder().traceId("1").parentId("1").id("2")
      .localEndpoint(Endpoint.newBuilder().serviceName("app").build())
      .timestamp(TODAY * 1000)
      .build();

    Span trace2Span1 = Span.newBuilder().traceId("2").id("1").name("root")
      .localEndpoint(Endpoint.newBuilder().serviceName("app").build())
      .timestamp(TODAY * 1000)
      .build();
    Span trace2Span2 = Span.newBuilder().traceId("2").parentId("1").id("2")
      .localEndpoint(Endpoint.newBuilder().serviceName("app").build())
      .timestamp(TODAY * 1000)
      .build();

    storage.accept(List.of(trace1Span1, trace1Span2, trace2Span1, trace2Span2)).execute();

    assertThat(storage.getTraces(List.of("1", "2")).execute()).containsExactly(
      List.of(trace1Span1, trace1Span2),
      List.of(trace2Span1, trace2Span2)
    );
  }
It should be safe to run dependency link jobs twice
zipkin/src/test/java/zipkin2/storage/InMemoryStorageTest.java