mirror of https://github.com/grpc/grpc-java.git
cronet: fill in transport attributes as required by CallCredentials (#4532)
This commit is contained in:
parent
c05d0f40ea
commit
11e2d6d7f1
|
|
@ -20,9 +20,11 @@ import com.google.common.base.Preconditions;
|
|||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
import com.google.common.util.concurrent.SettableFuture;
|
||||
import io.grpc.Attributes;
|
||||
import io.grpc.CallCredentials;
|
||||
import io.grpc.CallOptions;
|
||||
import io.grpc.Metadata;
|
||||
import io.grpc.MethodDescriptor;
|
||||
import io.grpc.SecurityLevel;
|
||||
import io.grpc.Status;
|
||||
import io.grpc.Status.Code;
|
||||
import io.grpc.cronet.CronetChannelBuilder.StreamBuilderFactory;
|
||||
|
|
@ -57,6 +59,7 @@ class CronetClientTransport implements ConnectionClientTransport {
|
|||
private final int maxMessageSize;
|
||||
private final boolean alwaysUsePut;
|
||||
private final TransportTracer transportTracer;
|
||||
private final Attributes attrs;
|
||||
// Indicates the transport is in go-away state: no new streams will be processed,
|
||||
// but existing streams may continue.
|
||||
@GuardedBy("lock")
|
||||
|
|
@ -91,6 +94,10 @@ class CronetClientTransport implements ConnectionClientTransport {
|
|||
this.executor = Preconditions.checkNotNull(executor, "executor");
|
||||
this.streamFactory = Preconditions.checkNotNull(streamFactory, "streamFactory");
|
||||
this.transportTracer = Preconditions.checkNotNull(transportTracer, "transportTracer");
|
||||
this.attrs = Attributes.newBuilder()
|
||||
.set(CallCredentials.ATTR_AUTHORITY, authority)
|
||||
.set(CallCredentials.ATTR_SECURITY_LEVEL, SecurityLevel.PRIVACY_AND_INTEGRITY)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -192,8 +199,7 @@ class CronetClientTransport implements ConnectionClientTransport {
|
|||
|
||||
@Override
|
||||
public Attributes getAttributes() {
|
||||
// TODO(zhangkun83): fill channel security attributes
|
||||
return Attributes.EMPTY;
|
||||
return attrs;
|
||||
}
|
||||
|
||||
private void startGoAway(Status status) {
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
package io.grpc.cronet;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.Mockito.any;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
|
@ -23,9 +24,12 @@ import static org.mockito.Mockito.times;
|
|||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import io.grpc.Attributes;
|
||||
import io.grpc.CallCredentials;
|
||||
import io.grpc.CallOptions;
|
||||
import io.grpc.Metadata;
|
||||
import io.grpc.MethodDescriptor;
|
||||
import io.grpc.SecurityLevel;
|
||||
import io.grpc.Status;
|
||||
import io.grpc.cronet.CronetChannelBuilder.StreamBuilderFactory;
|
||||
import io.grpc.internal.ClientStreamListener;
|
||||
|
|
@ -46,6 +50,8 @@ import org.robolectric.RobolectricTestRunner;
|
|||
@RunWith(RobolectricTestRunner.class)
|
||||
public final class CronetClientTransportTest {
|
||||
|
||||
private static final String AUTHORITY = "test.example.com";
|
||||
|
||||
private CronetClientTransport transport;
|
||||
@Mock private StreamBuilderFactory streamFactory;
|
||||
@Mock private Executor executor;
|
||||
|
|
@ -61,7 +67,7 @@ public final class CronetClientTransportTest {
|
|||
new CronetClientTransport(
|
||||
streamFactory,
|
||||
new InetSocketAddress("localhost", 443),
|
||||
"",
|
||||
AUTHORITY,
|
||||
null,
|
||||
executor,
|
||||
5000,
|
||||
|
|
@ -73,6 +79,14 @@ public final class CronetClientTransportTest {
|
|||
verify(clientTransportListener).transportReady();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void transportAttributes() {
|
||||
Attributes attrs = transport.getAttributes();
|
||||
assertEquals(AUTHORITY, attrs.get(CallCredentials.ATTR_AUTHORITY));
|
||||
assertEquals(
|
||||
SecurityLevel.PRIVACY_AND_INTEGRITY, attrs.get(CallCredentials.ATTR_SECURITY_LEVEL));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shutdownTransport() throws Exception {
|
||||
CronetClientStream stream1 =
|
||||
|
|
|
|||
Loading…
Reference in New Issue