mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-20 09:57:59 +01:00
Add tests for WhisperServerService#run
Additionally, `LocalWhisperServerService` may be used for integration testing.
This commit is contained in:
@@ -7,13 +7,13 @@ package org.whispersystems.textsecuregcm.registration;
|
||||
import com.google.auth.oauth2.ExternalAccountCredentials;
|
||||
import com.google.auth.oauth2.ImpersonatedCredentials;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import io.dropwizard.lifecycle.Managed;
|
||||
import io.github.resilience4j.core.IntervalFunction;
|
||||
import io.github.resilience4j.retry.Retry;
|
||||
import io.github.resilience4j.retry.RetryConfig;
|
||||
import io.grpc.CallCredentials;
|
||||
import io.grpc.Metadata;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.Closeable;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.UncheckedIOException;
|
||||
@@ -28,7 +28,7 @@ import org.apache.commons.lang3.tuple.Pair;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
class IdentityTokenCallCredentials extends CallCredentials implements Closeable {
|
||||
public class IdentityTokenCallCredentials extends CallCredentials implements Managed {
|
||||
private static final Duration IDENTITY_TOKEN_LIFETIME = Duration.ofHours(1);
|
||||
private static final Duration IDENTITY_TOKEN_REFRESH_BUFFER = Duration.ofMinutes(10);
|
||||
|
||||
@@ -58,7 +58,7 @@ class IdentityTokenCallCredentials extends CallCredentials implements Closeable
|
||||
TimeUnit.MILLISECONDS);
|
||||
}
|
||||
|
||||
static IdentityTokenCallCredentials fromCredentialConfig(
|
||||
public static IdentityTokenCallCredentials fromCredentialConfig(
|
||||
final String credentialConfigJson,
|
||||
final String audience,
|
||||
final ScheduledExecutorService scheduledExecutorService) throws IOException {
|
||||
@@ -129,7 +129,7 @@ class IdentityTokenCallCredentials extends CallCredentials implements Closeable
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
public void stop() {
|
||||
synchronized (this) {
|
||||
if (!scheduledFuture.isDone()) {
|
||||
scheduledFuture.cancel(true);
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.google.i18n.phonenumbers.PhoneNumberUtil;
|
||||
import com.google.i18n.phonenumbers.Phonenumber;
|
||||
import com.google.protobuf.ByteString;
|
||||
import io.dropwizard.lifecycle.Managed;
|
||||
import io.grpc.CallCredentials;
|
||||
import io.grpc.ChannelCredentials;
|
||||
import io.grpc.Deadline;
|
||||
import io.grpc.Grpc;
|
||||
@@ -21,7 +22,6 @@ import java.util.Optional;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.CompletionException;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
@@ -38,7 +38,6 @@ import org.whispersystems.textsecuregcm.entities.RegistrationServiceSession;
|
||||
public class RegistrationServiceClient implements Managed {
|
||||
|
||||
private final ManagedChannel channel;
|
||||
private final IdentityTokenCallCredentials identityTokenCallCredentials;
|
||||
private final RegistrationServiceGrpc.RegistrationServiceFutureStub stub;
|
||||
private final Executor callbackExecutor;
|
||||
|
||||
@@ -61,11 +60,9 @@ public class RegistrationServiceClient implements Managed {
|
||||
|
||||
public RegistrationServiceClient(final String host,
|
||||
final int port,
|
||||
final String credentialConfigJson,
|
||||
final String identityTokenAudience,
|
||||
final CallCredentials callCredentials,
|
||||
final String caCertificatePem,
|
||||
final Executor callbackExecutor,
|
||||
final ScheduledExecutorService identityRefreshExecutor) throws IOException {
|
||||
final Executor callbackExecutor) throws IOException {
|
||||
|
||||
try (final ByteArrayInputStream certificateInputStream = new ByteArrayInputStream(caCertificatePem.getBytes(StandardCharsets.UTF_8))) {
|
||||
final ChannelCredentials tlsChannelCredentials = TlsChannelCredentials.newBuilder()
|
||||
@@ -77,10 +74,7 @@ public class RegistrationServiceClient implements Managed {
|
||||
.build();
|
||||
}
|
||||
|
||||
this.identityTokenCallCredentials = IdentityTokenCallCredentials.fromCredentialConfig(
|
||||
credentialConfigJson, identityTokenAudience, identityRefreshExecutor);
|
||||
|
||||
this.stub = RegistrationServiceGrpc.newFutureStub(channel).withCallCredentials(identityTokenCallCredentials);
|
||||
this.stub = RegistrationServiceGrpc.newFutureStub(channel).withCallCredentials(callCredentials);
|
||||
|
||||
this.callbackExecutor = callbackExecutor;
|
||||
}
|
||||
@@ -284,6 +278,5 @@ public class RegistrationServiceClient implements Managed {
|
||||
if (channel != null) {
|
||||
channel.shutdown();
|
||||
}
|
||||
this.identityTokenCallCredentials.close();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user