Fix order dependent tests regarding message duration b/271122310 (#9930)
* Fix order dependent test by changing the initializations and comparison so that elapsed time isn't as significant in identifying whether it was the context or call option's duration that was used.
fixes b/271122310
diff --git a/gcp-observability/src/test/java/io/grpc/gcp/observability/interceptors/InternalLoggingChannelInterceptorTest.java b/gcp-observability/src/test/java/io/grpc/gcp/observability/interceptors/InternalLoggingChannelInterceptorTest.java
index 7458a53..19e5724 100644
--- a/gcp-observability/src/test/java/io/grpc/gcp/observability/interceptors/InternalLoggingChannelInterceptorTest.java
+++ b/gcp-observability/src/test/java/io/grpc/gcp/observability/interceptors/InternalLoggingChannelInterceptorTest.java
@@ -352,11 +352,12 @@
@SuppressWarnings("unchecked")
ClientCall.Listener<byte[]> mockListener = mock(ClientCall.Listener.class);
+ int durationSecs = 5;
ClientCall<byte[], byte[]> interceptedLoggingCall =
factory.create()
.interceptCall(
method,
- CallOptions.DEFAULT.withDeadlineAfter(1, TimeUnit.SECONDS),
+ CallOptions.DEFAULT.withDeadlineAfter(durationSecs, TimeUnit.SECONDS),
new Channel() {
@Override
public <RequestT, ResponseT> ClientCall<RequestT, ResponseT> newCall(
@@ -387,8 +388,8 @@
ArgumentMatchers.any()),
any(SpanContext.class));
Duration timeout = callOptTimeoutCaptor.getValue();
- assertThat(TimeUnit.SECONDS.toNanos(1) - Durations.toNanos(timeout))
- .isAtMost(TimeUnit.MILLISECONDS.toNanos(250));
+ assertThat(Math.abs(TimeUnit.SECONDS.toNanos(durationSecs) - Durations.toNanos(timeout)))
+ .isAtMost(TimeUnit.MILLISECONDS.toNanos(750));
}
@Test
@@ -396,7 +397,7 @@
final SettableFuture<ClientCall<byte[], byte[]>> callFuture = SettableFuture.create();
Context.current()
.withDeadline(
- Deadline.after(1, TimeUnit.SECONDS),
+ Deadline.after(2, TimeUnit.SECONDS),
Executors.newSingleThreadScheduledExecutor())
.run(() -> {
MethodDescriptor<byte[], byte[]> method =
@@ -413,7 +414,7 @@
factory.create()
.interceptCall(
method,
- CallOptions.DEFAULT.withDeadlineAfter(1, TimeUnit.SECONDS),
+ CallOptions.DEFAULT.withDeadlineAfter(5, TimeUnit.SECONDS),
new Channel() {
@Override
public <RequestT, ResponseT> ClientCall<RequestT, ResponseT> newCall(
@@ -447,8 +448,8 @@
ArgumentMatchers.any()),
any(SpanContext.class));
Duration timeout = contextTimeoutCaptor.getValue();
- assertThat(TimeUnit.SECONDS.toNanos(1) - Durations.toNanos(timeout))
- .isAtMost(TimeUnit.MILLISECONDS.toNanos(250));
+ assertThat(Math.abs(TimeUnit.SECONDS.toNanos(2) - Durations.toNanos(timeout)))
+ .isAtMost(TimeUnit.MILLISECONDS.toNanos(750));
}
@Test
@@ -512,8 +513,8 @@
Duration timeout = timeoutCaptor.getValue();
assertThat(LogHelper.min(contextDeadline, callOptionsDeadline))
.isSameInstanceAs(contextDeadline);
- assertThat(TimeUnit.SECONDS.toNanos(10) - Durations.toNanos(timeout))
- .isAtMost(TimeUnit.MILLISECONDS.toNanos(250));
+ assertThat(Math.abs(TimeUnit.SECONDS.toNanos(10) - Durations.toNanos(timeout)))
+ .isAtMost(TimeUnit.MILLISECONDS.toNanos(750));
}
@Test
diff --git a/gcp-observability/src/test/java/io/grpc/gcp/observability/interceptors/InternalLoggingServerInterceptorTest.java b/gcp-observability/src/test/java/io/grpc/gcp/observability/interceptors/InternalLoggingServerInterceptorTest.java
index fc4eec7..23cd591 100644
--- a/gcp-observability/src/test/java/io/grpc/gcp/observability/interceptors/InternalLoggingServerInterceptorTest.java
+++ b/gcp-observability/src/test/java/io/grpc/gcp/observability/interceptors/InternalLoggingServerInterceptorTest.java
@@ -354,7 +354,7 @@
eq(SpanContext.INVALID));
verifyNoMoreInteractions(mockLogHelper);
Duration timeout = timeoutCaptor.getValue();
- assertThat(TimeUnit.SECONDS.toNanos(1) - Durations.toNanos(timeout))
+ assertThat(Math.abs(TimeUnit.SECONDS.toNanos(1) - Durations.toNanos(timeout)))
.isAtMost(TimeUnit.MILLISECONDS.toNanos(250));
}
diff --git a/services/src/test/java/io/grpc/protobuf/services/BinlogHelperTest.java b/services/src/test/java/io/grpc/protobuf/services/BinlogHelperTest.java
index 37e503c..d9b335d 100644
--- a/services/src/test/java/io/grpc/protobuf/services/BinlogHelperTest.java
+++ b/services/src/test/java/io/grpc/protobuf/services/BinlogHelperTest.java
@@ -979,7 +979,7 @@
ArgumentMatchers.<SocketAddress>isNull());
verifyNoMoreInteractions(mockSinkWriter);
Duration timeout = timeoutCaptor.getValue();
- assertThat(TimeUnit.SECONDS.toNanos(1) - Durations.toNanos(timeout))
+ assertThat(Math.abs(TimeUnit.SECONDS.toNanos(1) - Durations.toNanos(timeout)))
.isAtMost(TimeUnit.MILLISECONDS.toNanos(250));
}
@@ -1000,7 +1000,7 @@
.getClientInterceptor(CALL_ID)
.interceptCall(
method,
- CallOptions.DEFAULT.withDeadlineAfter(1, TimeUnit.SECONDS),
+ CallOptions.DEFAULT.withDeadlineAfter(2, TimeUnit.SECONDS),
new Channel() {
@Override
public <RequestT, ResponseT> ClientCall<RequestT, ResponseT> newCall(
@@ -1028,17 +1028,18 @@
AdditionalMatchers.or(ArgumentMatchers.<SocketAddress>isNull(),
ArgumentMatchers.<SocketAddress>any()));
Duration timeout = callOptTimeoutCaptor.getValue();
- assertThat(TimeUnit.SECONDS.toNanos(1) - Durations.toNanos(timeout))
- .isAtMost(TimeUnit.MILLISECONDS.toNanos(250));
+ assertThat(Math.abs(TimeUnit.SECONDS.toNanos(2) - Durations.toNanos(timeout)))
+ .isAtMost(TimeUnit.MILLISECONDS.toNanos(750));
}
@Test
public void clientDeadlineLogged_deadlineSetViaContext() throws Exception {
// important: deadline is read from the ctx where call was created
final SettableFuture<ClientCall<byte[], byte[]>> callFuture = SettableFuture.create();
+ Deadline expectedDeadline = Deadline.after(2, TimeUnit.SECONDS);
Context.current()
.withDeadline(
- Deadline.after(1, TimeUnit.SECONDS), Executors.newSingleThreadScheduledExecutor())
+ expectedDeadline, Executors.newSingleThreadScheduledExecutor())
.run(new Runnable() {
@Override
public void run() {
@@ -1054,7 +1055,7 @@
.getClientInterceptor(CALL_ID)
.interceptCall(
method,
- CallOptions.DEFAULT.withDeadlineAfter(1, TimeUnit.SECONDS),
+ CallOptions.DEFAULT.withDeadlineAfter(10, TimeUnit.SECONDS),
new Channel() {
@Override
public <RequestT, ResponseT> ClientCall<RequestT, ResponseT> newCall(
@@ -1085,9 +1086,10 @@
anyLong(),
AdditionalMatchers.or(ArgumentMatchers.<SocketAddress>isNull(),
ArgumentMatchers.<SocketAddress>any()));
- Duration timeout = callOptTimeoutCaptor.getValue();
- assertThat(TimeUnit.SECONDS.toNanos(1) - Durations.toNanos(timeout))
- .isAtMost(TimeUnit.MILLISECONDS.toNanos(250));
+ long expectedTimeRemaining = expectedDeadline.timeRemaining(TimeUnit.NANOSECONDS);
+ long timeout = Durations.toNanos(callOptTimeoutCaptor.getValue());
+ assertThat(Math.abs(expectedTimeRemaining - timeout))
+ .isAtMost(TimeUnit.MILLISECONDS.toNanos(750));
}
@Test