### Question:
ProgressTracker { public Optional<Duration> timePassedThreshold() { return Optional.ofNullable(options.timePassedThreshold); } private  ProgressTracker(Builder builder); long bytesTransferredThreshold(); Optional<Duration> timePassedThreshold(); boolean enclosedProgress(); Optional<Executor> executor(); BodyPublisher tracking(BodyPublisher upstream, Listener listener); BodyPublisher trackingMultipart(
      MultipartBodyPublisher upstream, MultipartListener listener); BodySubscriber<T> tracking(
      BodySubscriber<T> downstream, Listener listener, long contentLengthIfKnown); BodyHandler<T> tracking(BodyHandler<T> handler, Listener listener); static ProgressTracker create(); static Builder newBuilder();  }### Answer:
@Test void trackUploadProgressWithTimeThreshold() { int batchSize = 64; int count = 20; for (int scale = 1; scale <= count; scale++) { int finalScale = scale; testUploadWithThreshold( batchSize, count, scale, b -> b.timePassedThreshold(virtualTick.multipliedBy(finalScale))); } }
@Test void trackDownloadProgressWithTimeThreshold() { int batchSize = 64; int count = 20; for (int scale = 1; scale <= count; scale++) { int finalScale = scale; testDownloadWithThreshold( batchSize, count, scale, b -> b.timePassedThreshold(virtualTick.multipliedBy(finalScale))); } }