mirror of https://github.com/grpc/grpc-java.git
pause
This commit is contained in:
parent
ad301c7e4d
commit
544cd3a33b
|
|
@ -64,12 +64,11 @@ public final class ClientAuthInterceptor implements ClientInterceptor {
|
||||||
|
|
||||||
private Metadata cached;
|
private Metadata cached;
|
||||||
private Map<String, List<String>> lastMetadata;
|
private Map<String, List<String>> lastMetadata;
|
||||||
// TODO(louiscryan): refresh token asynchronously with this executor.
|
|
||||||
private Executor executor;
|
|
||||||
|
|
||||||
public ClientAuthInterceptor(Credentials credentials, Executor executor) {
|
public ClientAuthInterceptor(
|
||||||
|
Credentials credentials, @SuppressWarnings("unused") Executor executor) {
|
||||||
this.credentials = Preconditions.checkNotNull(credentials);
|
this.credentials = Preconditions.checkNotNull(credentials);
|
||||||
this.executor = Preconditions.checkNotNull(executor);
|
// TODO(louiscryan): refresh token asynchronously with this executor.
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ import com.google.common.collect.Iterables;
|
||||||
import com.google.common.collect.LinkedListMultimap;
|
import com.google.common.collect.LinkedListMultimap;
|
||||||
import com.google.common.collect.ListMultimap;
|
import com.google.common.collect.ListMultimap;
|
||||||
import com.google.common.collect.Multimaps;
|
import com.google.common.collect.Multimaps;
|
||||||
|
import com.google.common.util.concurrent.MoreExecutors;
|
||||||
|
|
||||||
import io.grpc.CallOptions;
|
import io.grpc.CallOptions;
|
||||||
import io.grpc.Channel;
|
import io.grpc.Channel;
|
||||||
|
|
@ -68,7 +69,7 @@ import org.mockito.MockitoAnnotations;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for {@link ClientAuthInterceptor}.
|
* Tests for {@link ClientAuthInterceptor}.
|
||||||
|
|
@ -76,11 +77,13 @@ import java.util.concurrent.Executors;
|
||||||
@RunWith(JUnit4.class)
|
@RunWith(JUnit4.class)
|
||||||
public class ClientAuthInterceptorTests {
|
public class ClientAuthInterceptorTests {
|
||||||
|
|
||||||
public static final Metadata.Key<String> AUTHORIZATION = Metadata.Key.of("Authorization",
|
private static final Metadata.Key<String> AUTHORIZATION = Metadata.Key.of("Authorization",
|
||||||
Metadata.ASCII_STRING_MARSHALLER);
|
Metadata.ASCII_STRING_MARSHALLER);
|
||||||
public static final Metadata.Key<String> EXTRA_AUTHORIZATION = Metadata.Key.of(
|
private static final Metadata.Key<String> EXTRA_AUTHORIZATION = Metadata.Key.of(
|
||||||
"Extra-Authorization", Metadata.ASCII_STRING_MARSHALLER);
|
"Extra-Authorization", Metadata.ASCII_STRING_MARSHALLER);
|
||||||
|
|
||||||
|
private final Executor executor = MoreExecutors.directExecutor();
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
Credentials credentials;
|
Credentials credentials;
|
||||||
|
|
||||||
|
|
@ -105,14 +108,13 @@ public class ClientAuthInterceptorTests {
|
||||||
|
|
||||||
/** Set up for test. */
|
/** Set up for test. */
|
||||||
@Before
|
@Before
|
||||||
public void startUp() throws IOException {
|
public void startUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
descriptor = MethodDescriptor.create(
|
descriptor = MethodDescriptor.create(
|
||||||
MethodDescriptor.MethodType.UNKNOWN, "a.service/method", stringMarshaller, intMarshaller);
|
MethodDescriptor.MethodType.UNKNOWN, "a.service/method", stringMarshaller, intMarshaller);
|
||||||
when(channel.newCall(same(descriptor), any(CallOptions.class))).thenReturn(call);
|
when(channel.newCall(same(descriptor), any(CallOptions.class))).thenReturn(call);
|
||||||
doReturn("localhost:443").when(channel).authority();
|
doReturn("localhost:443").when(channel).authority();
|
||||||
interceptor = new ClientAuthInterceptor(credentials,
|
interceptor = new ClientAuthInterceptor(credentials, executor);
|
||||||
Executors.newSingleThreadExecutor());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -161,7 +163,7 @@ public class ClientAuthInterceptorTests {
|
||||||
return token;
|
return token;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
interceptor = new ClientAuthInterceptor(oAuth2Credentials, Executors.newSingleThreadExecutor());
|
interceptor = new ClientAuthInterceptor(oAuth2Credentials, executor);
|
||||||
ClientCall<String, Integer> interceptedCall =
|
ClientCall<String, Integer> interceptedCall =
|
||||||
interceptor.interceptCall(descriptor, CallOptions.DEFAULT, channel);
|
interceptor.interceptCall(descriptor, CallOptions.DEFAULT, channel);
|
||||||
Metadata headers = new Metadata();
|
Metadata headers = new Metadata();
|
||||||
|
|
|
||||||
|
|
@ -85,8 +85,8 @@ public class TransportBenchmark {
|
||||||
|
|
||||||
@Setup
|
@Setup
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
AbstractServerImplBuilder serverBuilder;
|
AbstractServerImplBuilder<?> serverBuilder;
|
||||||
AbstractManagedChannelImplBuilder channelBuilder;
|
AbstractManagedChannelImplBuilder<?> channelBuilder;
|
||||||
switch (transport) {
|
switch (transport) {
|
||||||
case INPROCESS:
|
case INPROCESS:
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -221,7 +221,7 @@ public class OpenLoopClient {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void waitForRpcsToComplete(int duration) throws InterruptedException {
|
private void waitForRpcsToComplete(int duration) {
|
||||||
long now = System.nanoTime();
|
long now = System.nanoTime();
|
||||||
long end = now + duration * 1000 * 1000 * 1000;
|
long end = now + duration * 1000 * 1000 * 1000;
|
||||||
while (histogram.getTotalCount() < numRpcs && now < end) {
|
while (histogram.getTotalCount() < numRpcs && now < end) {
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,6 @@ import com.google.common.base.Throwables;
|
||||||
import com.google.common.util.concurrent.FutureCallback;
|
import com.google.common.util.concurrent.FutureCallback;
|
||||||
import com.google.common.util.concurrent.Futures;
|
import com.google.common.util.concurrent.Futures;
|
||||||
import com.google.common.util.concurrent.ListenableFuture;
|
import com.google.common.util.concurrent.ListenableFuture;
|
||||||
import com.google.common.util.concurrent.MoreExecutors;
|
|
||||||
|
|
||||||
import io.grpc.CallOptions;
|
import io.grpc.CallOptions;
|
||||||
import io.grpc.ClientCall;
|
import io.grpc.ClientCall;
|
||||||
|
|
@ -98,7 +97,7 @@ final class ClientCallImpl<ReqT, RespT> extends ClientCall<ReqT, RespT>
|
||||||
// If we know that the executor is a direct executor, we don't need to wrap it with a
|
// If we know that the executor is a direct executor, we don't need to wrap it with a
|
||||||
// SerializingExecutor. This is purely for performance reasons.
|
// SerializingExecutor. This is purely for performance reasons.
|
||||||
// See https://github.com/grpc/grpc-java/issues/368
|
// See https://github.com/grpc/grpc-java/issues/368
|
||||||
this.callExecutor = executor == MoreExecutors.directExecutor()
|
this.callExecutor = executor == directExecutor()
|
||||||
? new SerializeReentrantCallsDirectExecutor()
|
? new SerializeReentrantCallsDirectExecutor()
|
||||||
: new SerializingExecutor(executor);
|
: new SerializingExecutor(executor);
|
||||||
// Propagate the context from the thread which initiated the call to all callbacks.
|
// Propagate the context from the thread which initiated the call to all callbacks.
|
||||||
|
|
@ -254,7 +253,7 @@ final class ClientCallImpl<ReqT, RespT> extends ClientCall<ReqT, RespT>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Propagate later Context cancellation to the remote side.
|
// Propagate later Context cancellation to the remote side.
|
||||||
this.context.addListener(this, MoreExecutors.directExecutor());
|
this.context.addListener(this, directExecutor());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue