mirror of https://github.com/grpc/grpc-java.git
api:Provide a default implementation for new method added to ManagedTranport.Listener to support ClientTransportFilters (#10795)
* Provide a default implementation for new method added to ManagedTransport.Listener to support ClientTransportFilters * Relax test constraint to reduce flakiness due to timing. * Add test for listener.filterTransport.
This commit is contained in:
parent
f01c110f77
commit
4b2e5eddd2
|
|
@ -706,7 +706,7 @@ public class ContextTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void innerDeadlineCompletesBeforeOuter() throws Exception {
|
public void innerDeadlineCompletesBeforeOuter() throws Exception {
|
||||||
Context base = Context.current().withDeadline(Deadline.after(2, TimeUnit.SECONDS), scheduler);
|
Context base = Context.current().withDeadline(Deadline.after(3, TimeUnit.SECONDS), scheduler);
|
||||||
Context child = base.withDeadline(Deadline.after(1, TimeUnit.SECONDS), scheduler);
|
Context child = base.withDeadline(Deadline.after(1, TimeUnit.SECONDS), scheduler);
|
||||||
child.addListener(cancellationListener, MoreExecutors.directExecutor());
|
child.addListener(cancellationListener, MoreExecutors.directExecutor());
|
||||||
assertFalse(base.isCancelled());
|
assertFalse(base.isCancelled());
|
||||||
|
|
@ -719,7 +719,7 @@ public class ContextTest {
|
||||||
|
|
||||||
deadlineLatch = new CountDownLatch(1);
|
deadlineLatch = new CountDownLatch(1);
|
||||||
base.addListener(cancellationListener, MoreExecutors.directExecutor());
|
base.addListener(cancellationListener, MoreExecutors.directExecutor());
|
||||||
assertTrue(deadlineLatch.await(2, TimeUnit.SECONDS));
|
assertTrue(deadlineLatch.await(4, TimeUnit.SECONDS));
|
||||||
assertTrue(base.isCancelled());
|
assertTrue(base.isCancelled());
|
||||||
assertTrue(base.cancellationCause() instanceof TimeoutException);
|
assertTrue(base.cancellationCause() instanceof TimeoutException);
|
||||||
assertNotSame(base.cancellationCause(), child.cancellationCause());
|
assertNotSame(base.cancellationCause(), child.cancellationCause());
|
||||||
|
|
|
||||||
|
|
@ -110,6 +110,8 @@ public interface ManagedClientTransport extends ClientTransport {
|
||||||
* Called just before {@link #transportReady} to allow direct modification of transport
|
* Called just before {@link #transportReady} to allow direct modification of transport
|
||||||
* Attributes.
|
* Attributes.
|
||||||
*/
|
*/
|
||||||
Attributes filterTransport(Attributes attributes);
|
default Attributes filterTransport(Attributes attributes) {
|
||||||
|
return attributes;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,63 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2024 The gRPC Authors
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.grpc.internal;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNull;
|
||||||
|
|
||||||
|
import io.grpc.Attributes;
|
||||||
|
import io.grpc.Status;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.junit.runners.JUnit4;
|
||||||
|
|
||||||
|
@RunWith(JUnit4.class)
|
||||||
|
public class ManagedClientTransportTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testListener() {
|
||||||
|
ManagedClientTransport.Listener listener = new ManagedClientTransport.Listener() {
|
||||||
|
@Override
|
||||||
|
public void transportShutdown(Status s) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void transportTerminated() {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void transportReady() {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void transportInUse(boolean inUse) {}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Test that the listener methods do not throw.
|
||||||
|
listener.transportShutdown(Status.OK);
|
||||||
|
listener.transportTerminated();
|
||||||
|
listener.transportReady();
|
||||||
|
listener.transportInUse(true);
|
||||||
|
|
||||||
|
|
||||||
|
assertNull(listener.filterTransport(null));
|
||||||
|
|
||||||
|
Attributes attributes = Attributes.newBuilder()
|
||||||
|
.set(Attributes.Key.create("yolo"), "To be, or not to be?")
|
||||||
|
.set(Attributes.Key.create("foo"), "bar!")
|
||||||
|
.set(Attributes.Key.create("bar"), "foo?")
|
||||||
|
.build();
|
||||||
|
assertEquals(attributes, listener.filterTransport(attributes));
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue