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
This commit is contained in:
Larry Safran 2023-03-24 16:40:35 -07:00 committed by GitHub
parent 50a76610ee
commit 58e2224df9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 19 deletions

View File

@ -352,11 +352,12 @@ public class InternalLoggingChannelInterceptorTest {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
ClientCall.Listener<byte[]> mockListener = mock(ClientCall.Listener.class); ClientCall.Listener<byte[]> mockListener = mock(ClientCall.Listener.class);
int durationSecs = 5;
ClientCall<byte[], byte[]> interceptedLoggingCall = ClientCall<byte[], byte[]> interceptedLoggingCall =
factory.create() factory.create()
.interceptCall( .interceptCall(
method, method,
CallOptions.DEFAULT.withDeadlineAfter(1, TimeUnit.SECONDS), CallOptions.DEFAULT.withDeadlineAfter(durationSecs, TimeUnit.SECONDS),
new Channel() { new Channel() {
@Override @Override
public <RequestT, ResponseT> ClientCall<RequestT, ResponseT> newCall( public <RequestT, ResponseT> ClientCall<RequestT, ResponseT> newCall(
@ -387,8 +388,8 @@ public class InternalLoggingChannelInterceptorTest {
ArgumentMatchers.any()), ArgumentMatchers.any()),
any(SpanContext.class)); any(SpanContext.class));
Duration timeout = callOptTimeoutCaptor.getValue(); Duration timeout = callOptTimeoutCaptor.getValue();
assertThat(TimeUnit.SECONDS.toNanos(1) - Durations.toNanos(timeout)) assertThat(Math.abs(TimeUnit.SECONDS.toNanos(durationSecs) - Durations.toNanos(timeout)))
.isAtMost(TimeUnit.MILLISECONDS.toNanos(250)); .isAtMost(TimeUnit.MILLISECONDS.toNanos(750));
} }
@Test @Test
@ -396,7 +397,7 @@ public class InternalLoggingChannelInterceptorTest {
final SettableFuture<ClientCall<byte[], byte[]>> callFuture = SettableFuture.create(); final SettableFuture<ClientCall<byte[], byte[]>> callFuture = SettableFuture.create();
Context.current() Context.current()
.withDeadline( .withDeadline(
Deadline.after(1, TimeUnit.SECONDS), Deadline.after(2, TimeUnit.SECONDS),
Executors.newSingleThreadScheduledExecutor()) Executors.newSingleThreadScheduledExecutor())
.run(() -> { .run(() -> {
MethodDescriptor<byte[], byte[]> method = MethodDescriptor<byte[], byte[]> method =
@ -413,7 +414,7 @@ public class InternalLoggingChannelInterceptorTest {
factory.create() factory.create()
.interceptCall( .interceptCall(
method, method,
CallOptions.DEFAULT.withDeadlineAfter(1, TimeUnit.SECONDS), CallOptions.DEFAULT.withDeadlineAfter(5, TimeUnit.SECONDS),
new Channel() { new Channel() {
@Override @Override
public <RequestT, ResponseT> ClientCall<RequestT, ResponseT> newCall( public <RequestT, ResponseT> ClientCall<RequestT, ResponseT> newCall(
@ -447,8 +448,8 @@ public class InternalLoggingChannelInterceptorTest {
ArgumentMatchers.any()), ArgumentMatchers.any()),
any(SpanContext.class)); any(SpanContext.class));
Duration timeout = contextTimeoutCaptor.getValue(); Duration timeout = contextTimeoutCaptor.getValue();
assertThat(TimeUnit.SECONDS.toNanos(1) - Durations.toNanos(timeout)) assertThat(Math.abs(TimeUnit.SECONDS.toNanos(2) - Durations.toNanos(timeout)))
.isAtMost(TimeUnit.MILLISECONDS.toNanos(250)); .isAtMost(TimeUnit.MILLISECONDS.toNanos(750));
} }
@Test @Test
@ -512,8 +513,8 @@ public class InternalLoggingChannelInterceptorTest {
Duration timeout = timeoutCaptor.getValue(); Duration timeout = timeoutCaptor.getValue();
assertThat(LogHelper.min(contextDeadline, callOptionsDeadline)) assertThat(LogHelper.min(contextDeadline, callOptionsDeadline))
.isSameInstanceAs(contextDeadline); .isSameInstanceAs(contextDeadline);
assertThat(TimeUnit.SECONDS.toNanos(10) - Durations.toNanos(timeout)) assertThat(Math.abs(TimeUnit.SECONDS.toNanos(10) - Durations.toNanos(timeout)))
.isAtMost(TimeUnit.MILLISECONDS.toNanos(250)); .isAtMost(TimeUnit.MILLISECONDS.toNanos(750));
} }
@Test @Test

View File

@ -354,7 +354,7 @@ public class InternalLoggingServerInterceptorTest {
eq(SpanContext.INVALID)); eq(SpanContext.INVALID));
verifyNoMoreInteractions(mockLogHelper); verifyNoMoreInteractions(mockLogHelper);
Duration timeout = timeoutCaptor.getValue(); 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)); .isAtMost(TimeUnit.MILLISECONDS.toNanos(250));
} }

View File

@ -979,7 +979,7 @@ public final class BinlogHelperTest {
ArgumentMatchers.<SocketAddress>isNull()); ArgumentMatchers.<SocketAddress>isNull());
verifyNoMoreInteractions(mockSinkWriter); verifyNoMoreInteractions(mockSinkWriter);
Duration timeout = timeoutCaptor.getValue(); 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)); .isAtMost(TimeUnit.MILLISECONDS.toNanos(250));
} }
@ -1000,7 +1000,7 @@ public final class BinlogHelperTest {
.getClientInterceptor(CALL_ID) .getClientInterceptor(CALL_ID)
.interceptCall( .interceptCall(
method, method,
CallOptions.DEFAULT.withDeadlineAfter(1, TimeUnit.SECONDS), CallOptions.DEFAULT.withDeadlineAfter(2, TimeUnit.SECONDS),
new Channel() { new Channel() {
@Override @Override
public <RequestT, ResponseT> ClientCall<RequestT, ResponseT> newCall( public <RequestT, ResponseT> ClientCall<RequestT, ResponseT> newCall(
@ -1028,17 +1028,18 @@ public final class BinlogHelperTest {
AdditionalMatchers.or(ArgumentMatchers.<SocketAddress>isNull(), AdditionalMatchers.or(ArgumentMatchers.<SocketAddress>isNull(),
ArgumentMatchers.<SocketAddress>any())); ArgumentMatchers.<SocketAddress>any()));
Duration timeout = callOptTimeoutCaptor.getValue(); Duration timeout = callOptTimeoutCaptor.getValue();
assertThat(TimeUnit.SECONDS.toNanos(1) - Durations.toNanos(timeout)) assertThat(Math.abs(TimeUnit.SECONDS.toNanos(2) - Durations.toNanos(timeout)))
.isAtMost(TimeUnit.MILLISECONDS.toNanos(250)); .isAtMost(TimeUnit.MILLISECONDS.toNanos(750));
} }
@Test @Test
public void clientDeadlineLogged_deadlineSetViaContext() throws Exception { public void clientDeadlineLogged_deadlineSetViaContext() throws Exception {
// important: deadline is read from the ctx where call was created // important: deadline is read from the ctx where call was created
final SettableFuture<ClientCall<byte[], byte[]>> callFuture = SettableFuture.create(); final SettableFuture<ClientCall<byte[], byte[]>> callFuture = SettableFuture.create();
Deadline expectedDeadline = Deadline.after(2, TimeUnit.SECONDS);
Context.current() Context.current()
.withDeadline( .withDeadline(
Deadline.after(1, TimeUnit.SECONDS), Executors.newSingleThreadScheduledExecutor()) expectedDeadline, Executors.newSingleThreadScheduledExecutor())
.run(new Runnable() { .run(new Runnable() {
@Override @Override
public void run() { public void run() {
@ -1054,7 +1055,7 @@ public final class BinlogHelperTest {
.getClientInterceptor(CALL_ID) .getClientInterceptor(CALL_ID)
.interceptCall( .interceptCall(
method, method,
CallOptions.DEFAULT.withDeadlineAfter(1, TimeUnit.SECONDS), CallOptions.DEFAULT.withDeadlineAfter(10, TimeUnit.SECONDS),
new Channel() { new Channel() {
@Override @Override
public <RequestT, ResponseT> ClientCall<RequestT, ResponseT> newCall( public <RequestT, ResponseT> ClientCall<RequestT, ResponseT> newCall(
@ -1085,9 +1086,10 @@ public final class BinlogHelperTest {
anyLong(), anyLong(),
AdditionalMatchers.or(ArgumentMatchers.<SocketAddress>isNull(), AdditionalMatchers.or(ArgumentMatchers.<SocketAddress>isNull(),
ArgumentMatchers.<SocketAddress>any())); ArgumentMatchers.<SocketAddress>any()));
Duration timeout = callOptTimeoutCaptor.getValue(); long expectedTimeRemaining = expectedDeadline.timeRemaining(TimeUnit.NANOSECONDS);
assertThat(TimeUnit.SECONDS.toNanos(1) - Durations.toNanos(timeout)) long timeout = Durations.toNanos(callOptTimeoutCaptor.getValue());
.isAtMost(TimeUnit.MILLISECONDS.toNanos(250)); assertThat(Math.abs(expectedTimeRemaining - timeout))
.isAtMost(TimeUnit.MILLISECONDS.toNanos(750));
} }
@Test @Test