Move CloudTasksUtils to core/ project (#1956)

This does nothing for now, but in the future this will allow us to refer
to the RegistryConfig and/or Service objects from the core project. This
will be necessary when changing CloudTasksUtils to not use the AppEngine
built-in connection (it will need to use a standard HTTP request
instead).
This commit is contained in:
gbrodman 2023-03-14 15:15:05 -04:00 committed by GitHub
parent 5805b6859e
commit b6083e227f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
28 changed files with 117 additions and 117 deletions

View file

@ -25,7 +25,6 @@ import com.google.common.flogger.FluentLogger;
import google.registry.model.EppResource; import google.registry.model.EppResource;
import google.registry.persistence.VKey; import google.registry.persistence.VKey;
import google.registry.request.Action.Service; import google.registry.request.Action.Service;
import google.registry.util.CloudTasksUtils;
import javax.inject.Inject; import javax.inject.Inject;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.joda.time.Duration; import org.joda.time.Duration;
@ -86,6 +85,6 @@ public final class AsyncTaskEnqueuer {
cloudTasksUtils.enqueue( cloudTasksUtils.enqueue(
QUEUE_ASYNC_ACTIONS, QUEUE_ASYNC_ACTIONS,
cloudTasksUtils.createPostTaskWithDelay( cloudTasksUtils.createPostTaskWithDelay(
ResaveEntityAction.PATH, Service.BACKEND.toString(), params, etaDuration)); ResaveEntityAction.PATH, Service.BACKEND, params, etaDuration));
} }
} }

View file

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
package google.registry.util; package google.registry.batch;
import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.collect.ImmutableList.toImmutableList; import static com.google.common.collect.ImmutableList.toImmutableList;
@ -36,12 +36,18 @@ import com.google.common.net.MediaType;
import com.google.common.net.UrlEscapers; import com.google.common.net.UrlEscapers;
import com.google.protobuf.ByteString; import com.google.protobuf.ByteString;
import com.google.protobuf.util.Timestamps; import com.google.protobuf.util.Timestamps;
import google.registry.config.RegistryConfig.Config;
import google.registry.request.Action.Service;
import google.registry.util.Clock;
import google.registry.util.CollectionUtils;
import google.registry.util.Retrier;
import java.io.Serializable; import java.io.Serializable;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Arrays; import java.util.Arrays;
import java.util.Optional; import java.util.Optional;
import java.util.Random; import java.util.Random;
import java.util.function.Supplier; import java.util.function.Supplier;
import javax.inject.Inject;
import org.joda.time.Duration; import org.joda.time.Duration;
/** Utilities for dealing with Cloud Tasks. */ /** Utilities for dealing with Cloud Tasks. */
@ -57,11 +63,12 @@ public class CloudTasksUtils implements Serializable {
private final String locationId; private final String locationId;
private final SerializableCloudTasksClient client; private final SerializableCloudTasksClient client;
@Inject
public CloudTasksUtils( public CloudTasksUtils(
Retrier retrier, Retrier retrier,
Clock clock, Clock clock,
String projectId, @Config("projectId") String projectId,
String locationId, @Config("locationId") String locationId,
SerializableCloudTasksClient client) { SerializableCloudTasksClient client) {
this.retrier = retrier; this.retrier = retrier;
this.clock = clock; this.clock = clock;
@ -108,7 +115,7 @@ public class CloudTasksUtils implements Serializable {
* the worker service</a> * the worker service</a>
*/ */
private Task createTask( private Task createTask(
String path, HttpMethod method, String service, Multimap<String, String> params) { String path, HttpMethod method, Service service, Multimap<String, String> params) {
checkArgument( checkArgument(
path != null && !path.isEmpty() && path.charAt(0) == '/', path != null && !path.isEmpty() && path.charAt(0) == '/',
"The path must start with a '/'."); "The path must start with a '/'.");
@ -119,7 +126,8 @@ public class CloudTasksUtils implements Serializable {
AppEngineHttpRequest.Builder requestBuilder = AppEngineHttpRequest.Builder requestBuilder =
AppEngineHttpRequest.newBuilder() AppEngineHttpRequest.newBuilder()
.setHttpMethod(method) .setHttpMethod(method)
.setAppEngineRouting(AppEngineRouting.newBuilder().setService(service).build()); .setAppEngineRouting(
AppEngineRouting.newBuilder().setService(service.toString()).build());
if (!CollectionUtils.isNullOrEmpty(params)) { if (!CollectionUtils.isNullOrEmpty(params)) {
Escaper escaper = UrlEscapers.urlPathSegmentEscaper(); Escaper escaper = UrlEscapers.urlPathSegmentEscaper();
@ -165,7 +173,7 @@ public class CloudTasksUtils implements Serializable {
private Task createTaskWithJitter( private Task createTaskWithJitter(
String path, String path,
HttpMethod method, HttpMethod method,
String service, Service service,
Multimap<String, String> params, Multimap<String, String> params,
Optional<Integer> jitterSeconds) { Optional<Integer> jitterSeconds) {
if (!jitterSeconds.isPresent() || jitterSeconds.get() <= 0) { if (!jitterSeconds.isPresent() || jitterSeconds.get() <= 0) {
@ -199,7 +207,7 @@ public class CloudTasksUtils implements Serializable {
private Task createTaskWithDelay( private Task createTaskWithDelay(
String path, String path,
HttpMethod method, HttpMethod method,
String service, Service service,
Multimap<String, String> params, Multimap<String, String> params,
Duration delay) { Duration delay) {
if (delay.isEqual(Duration.ZERO)) { if (delay.isEqual(Duration.ZERO)) {
@ -211,11 +219,11 @@ public class CloudTasksUtils implements Serializable {
.build(); .build();
} }
public Task createPostTask(String path, String service, Multimap<String, String> params) { public Task createPostTask(String path, Service service, Multimap<String, String> params) {
return createTask(path, HttpMethod.POST, service, params); return createTask(path, HttpMethod.POST, service, params);
} }
public Task createGetTask(String path, String service, Multimap<String, String> params) { public Task createGetTask(String path, Service service, Multimap<String, String> params) {
return createTask(path, HttpMethod.GET, service, params); return createTask(path, HttpMethod.GET, service, params);
} }
@ -224,7 +232,7 @@ public class CloudTasksUtils implements Serializable {
*/ */
public Task createPostTaskWithJitter( public Task createPostTaskWithJitter(
String path, String path,
String service, Service service,
Multimap<String, String> params, Multimap<String, String> params,
Optional<Integer> jitterSeconds) { Optional<Integer> jitterSeconds) {
return createTaskWithJitter(path, HttpMethod.POST, service, params, jitterSeconds); return createTaskWithJitter(path, HttpMethod.POST, service, params, jitterSeconds);
@ -235,7 +243,7 @@ public class CloudTasksUtils implements Serializable {
*/ */
public Task createGetTaskWithJitter( public Task createGetTaskWithJitter(
String path, String path,
String service, Service service,
Multimap<String, String> params, Multimap<String, String> params,
Optional<Integer> jitterSeconds) { Optional<Integer> jitterSeconds) {
return createTaskWithJitter(path, HttpMethod.GET, service, params, jitterSeconds); return createTaskWithJitter(path, HttpMethod.GET, service, params, jitterSeconds);
@ -243,13 +251,13 @@ public class CloudTasksUtils implements Serializable {
/** Create a {@link Task} via HTTP.POST that will be delayed for {@code delay}. */ /** Create a {@link Task} via HTTP.POST that will be delayed for {@code delay}. */
public Task createPostTaskWithDelay( public Task createPostTaskWithDelay(
String path, String service, Multimap<String, String> params, Duration delay) { String path, Service service, Multimap<String, String> params, Duration delay) {
return createTaskWithDelay(path, HttpMethod.POST, service, params, delay); return createTaskWithDelay(path, HttpMethod.POST, service, params, delay);
} }
/** Create a {@link Task} via HTTP.GET that will be delayed for {@code delay}. */ /** Create a {@link Task} via HTTP.GET that will be delayed for {@code delay}. */
public Task createGetTaskWithDelay( public Task createGetTaskWithDelay(
String path, String service, Multimap<String, String> params, Duration delay) { String path, Service service, Multimap<String, String> params, Duration delay) {
return createTaskWithDelay(path, HttpMethod.GET, service, params, delay); return createTaskWithDelay(path, HttpMethod.GET, service, params, delay);
} }

View file

@ -26,6 +26,7 @@ import com.google.auto.value.AutoValue;
import com.google.cloud.storage.BlobId; import com.google.cloud.storage.BlobId;
import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.ImmutableMultimap;
import com.google.common.flogger.FluentLogger; import com.google.common.flogger.FluentLogger;
import google.registry.batch.CloudTasksUtils;
import google.registry.gcs.GcsUtils; import google.registry.gcs.GcsUtils;
import google.registry.keyring.api.PgpHelper; import google.registry.keyring.api.PgpHelper;
import google.registry.model.common.Cursor; import google.registry.model.common.Cursor;
@ -46,7 +47,6 @@ import google.registry.rde.RdeUtil;
import google.registry.request.Action.Service; import google.registry.request.Action.Service;
import google.registry.request.RequestParameters; import google.registry.request.RequestParameters;
import google.registry.tldconfig.idn.IdnTableEnum; import google.registry.tldconfig.idn.IdnTableEnum;
import google.registry.util.CloudTasksUtils;
import google.registry.xjc.rdeheader.XjcRdeHeader; import google.registry.xjc.rdeheader.XjcRdeHeader;
import google.registry.xjc.rdeheader.XjcRdeHeaderElement; import google.registry.xjc.rdeheader.XjcRdeHeaderElement;
import google.registry.xml.ValidationMode; import google.registry.xml.ValidationMode;
@ -306,7 +306,7 @@ public class RdeIO {
RDE_UPLOAD_QUEUE, RDE_UPLOAD_QUEUE,
cloudTasksUtils.createPostTaskWithDelay( cloudTasksUtils.createPostTaskWithDelay(
RdeUploadAction.PATH, RdeUploadAction.PATH,
Service.BACKEND.getServiceId(), Service.BACKEND,
ImmutableMultimap.of( ImmutableMultimap.of(
RequestParameters.PARAM_TLD, RequestParameters.PARAM_TLD,
key.tld(), key.tld(),
@ -318,7 +318,7 @@ public class RdeIO {
BRDA_QUEUE, BRDA_QUEUE,
cloudTasksUtils.createPostTaskWithDelay( cloudTasksUtils.createPostTaskWithDelay(
BrdaCopyAction.PATH, BrdaCopyAction.PATH,
Service.BACKEND.getServiceId(), Service.BACKEND,
ImmutableMultimap.of( ImmutableMultimap.of(
RequestParameters.PARAM_TLD, RequestParameters.PARAM_TLD,
key.tld(), key.tld(),

View file

@ -38,6 +38,7 @@ import com.google.common.flogger.FluentLogger;
import com.google.common.io.BaseEncoding; import com.google.common.io.BaseEncoding;
import dagger.BindsInstance; import dagger.BindsInstance;
import dagger.Component; import dagger.Component;
import google.registry.batch.CloudTasksUtils;
import google.registry.beam.common.RegistryJpaIO; import google.registry.beam.common.RegistryJpaIO;
import google.registry.beam.common.RegistryPipelineOptions; import google.registry.beam.common.RegistryPipelineOptions;
import google.registry.config.CloudTasksUtilsModule; import google.registry.config.CloudTasksUtilsModule;
@ -62,7 +63,6 @@ import google.registry.rde.DepositFragment;
import google.registry.rde.PendingDeposit; import google.registry.rde.PendingDeposit;
import google.registry.rde.PendingDeposit.PendingDepositCoder; import google.registry.rde.PendingDeposit.PendingDepositCoder;
import google.registry.rde.RdeMarshaller; import google.registry.rde.RdeMarshaller;
import google.registry.util.CloudTasksUtils;
import google.registry.util.UtilsModule; import google.registry.util.UtilsModule;
import google.registry.xml.ValidationMode; import google.registry.xml.ValidationMode;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;

View file

@ -19,18 +19,15 @@ import com.google.cloud.tasks.v2.CloudTasksClient;
import com.google.cloud.tasks.v2.CloudTasksSettings; import com.google.cloud.tasks.v2.CloudTasksSettings;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import google.registry.batch.CloudTasksUtils;
import google.registry.batch.CloudTasksUtils.GcpCloudTasksClient;
import google.registry.batch.CloudTasksUtils.SerializableCloudTasksClient;
import google.registry.config.CredentialModule.DefaultCredential; import google.registry.config.CredentialModule.DefaultCredential;
import google.registry.config.RegistryConfig.Config; import google.registry.config.RegistryConfig.Config;
import google.registry.util.Clock;
import google.registry.util.CloudTasksUtils;
import google.registry.util.CloudTasksUtils.GcpCloudTasksClient;
import google.registry.util.CloudTasksUtils.SerializableCloudTasksClient;
import google.registry.util.GoogleCredentialsBundle; import google.registry.util.GoogleCredentialsBundle;
import google.registry.util.Retrier;
import java.io.IOException; import java.io.IOException;
import java.io.Serializable; import java.io.Serializable;
import java.util.function.Supplier; import java.util.function.Supplier;
import javax.inject.Singleton;
/** /**
* A {@link Module} that provides {@link CloudTasksUtils}. * A {@link Module} that provides {@link CloudTasksUtils}.
@ -41,17 +38,6 @@ import javax.inject.Singleton;
@Module @Module
public abstract class CloudTasksUtilsModule { public abstract class CloudTasksUtilsModule {
@Singleton
@Provides
public static CloudTasksUtils provideCloudTasksUtils(
@Config("projectId") String projectId,
@Config("locationId") String locationId,
SerializableCloudTasksClient client,
Retrier retrier,
Clock clock) {
return new CloudTasksUtils(retrier, clock, projectId, locationId, client);
}
// Provides a supplier instead of using a Dagger @Provider because the latter is not serializable. // Provides a supplier instead of using a Dagger @Provider because the latter is not serializable.
@Provides @Provides
public static Supplier<CloudTasksClient> provideCloudTasksClientSupplier( public static Supplier<CloudTasksClient> provideCloudTasksClientSupplier(

View file

@ -930,7 +930,7 @@ public final class RegistryConfig {
* <p>Note that this uses {@code @Named} instead of {@code @Config} so that it can be used from * <p>Note that this uses {@code @Named} instead of {@code @Config} so that it can be used from
* the low-level util package, which cannot have a dependency on the config package. * the low-level util package, which cannot have a dependency on the config package.
* *
* @see google.registry.util.CloudTasksUtils * @see google.registry.batch.CloudTasksUtils
*/ */
@Provides @Provides
@Named("transientFailureRetries") @Named("transientFailureRetries")

View file

@ -38,6 +38,7 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Multimap; import com.google.common.collect.Multimap;
import com.google.common.collect.Streams; import com.google.common.collect.Streams;
import com.google.common.flogger.FluentLogger; import com.google.common.flogger.FluentLogger;
import google.registry.batch.CloudTasksUtils;
import google.registry.request.Action; import google.registry.request.Action;
import google.registry.request.Action.Service; import google.registry.request.Action.Service;
import google.registry.request.Parameter; import google.registry.request.Parameter;
@ -45,7 +46,6 @@ import google.registry.request.ParameterMap;
import google.registry.request.RequestParameters; import google.registry.request.RequestParameters;
import google.registry.request.Response; import google.registry.request.Response;
import google.registry.request.auth.Auth; import google.registry.request.auth.Auth;
import google.registry.util.CloudTasksUtils;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Stream; import java.util.stream.Stream;
import javax.inject.Inject; import javax.inject.Inject;
@ -158,6 +158,6 @@ public final class TldFanoutAction implements Runnable {
params.put(RequestParameters.PARAM_TLD, tld); params.put(RequestParameters.PARAM_TLD, tld);
} }
return cloudTasksUtils.createPostTaskWithJitter( return cloudTasksUtils.createPostTaskWithJitter(
endpoint, Service.BACKEND.toString(), params, jitterSeconds); endpoint, Service.BACKEND, params, jitterSeconds);
} }
} }

View file

@ -35,6 +35,7 @@ import com.google.common.collect.ImmutableMultimap;
import com.google.common.flogger.FluentLogger; import com.google.common.flogger.FluentLogger;
import com.google.common.net.InternetDomainName; import com.google.common.net.InternetDomainName;
import dagger.Lazy; import dagger.Lazy;
import google.registry.batch.CloudTasksUtils;
import google.registry.config.RegistryConfig.Config; import google.registry.config.RegistryConfig.Config;
import google.registry.dns.DnsMetrics.ActionStatus; import google.registry.dns.DnsMetrics.ActionStatus;
import google.registry.dns.DnsMetrics.CommitStatus; import google.registry.dns.DnsMetrics.CommitStatus;
@ -54,7 +55,6 @@ import google.registry.request.Response;
import google.registry.request.auth.Auth; import google.registry.request.auth.Auth;
import google.registry.request.lock.LockHandler; import google.registry.request.lock.LockHandler;
import google.registry.util.Clock; import google.registry.util.Clock;
import google.registry.util.CloudTasksUtils;
import google.registry.util.DomainNameUtils; import google.registry.util.DomainNameUtils;
import google.registry.util.EmailMessage; import google.registry.util.EmailMessage;
import google.registry.util.SendEmailService; import google.registry.util.SendEmailService;
@ -339,7 +339,7 @@ public final class PublishDnsUpdatesAction implements Runnable, Callable<Void> {
DNS_PUBLISH_PUSH_QUEUE_NAME, DNS_PUBLISH_PUSH_QUEUE_NAME,
cloudTasksUtils.createPostTask( cloudTasksUtils.createPostTask(
PATH, PATH,
Service.BACKEND.toString(), Service.BACKEND,
ImmutableMultimap.<String, String>builder() ImmutableMultimap.<String, String>builder()
.put(PARAM_TLD, tld) .put(PARAM_TLD, tld)
.put(PARAM_DNS_WRITER, dnsWriter) .put(PARAM_DNS_WRITER, dnsWriter)

View file

@ -44,6 +44,7 @@ import com.google.common.collect.Ordering;
import com.google.common.flogger.FluentLogger; import com.google.common.flogger.FluentLogger;
import com.google.common.hash.HashFunction; import com.google.common.hash.HashFunction;
import com.google.common.hash.Hashing; import com.google.common.hash.Hashing;
import google.registry.batch.CloudTasksUtils;
import google.registry.config.RegistryConfig.Config; import google.registry.config.RegistryConfig.Config;
import google.registry.dns.DnsConstants.TargetType; import google.registry.dns.DnsConstants.TargetType;
import google.registry.model.tld.Registries; import google.registry.model.tld.Registries;
@ -53,7 +54,6 @@ import google.registry.request.Action.Service;
import google.registry.request.Parameter; import google.registry.request.Parameter;
import google.registry.request.auth.Auth; import google.registry.request.auth.Auth;
import google.registry.util.Clock; import google.registry.util.Clock;
import google.registry.util.CloudTasksUtils;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.util.Collection; import java.util.Collection;
import java.util.Comparator; import java.util.Comparator;
@ -372,7 +372,7 @@ public final class ReadDnsQueueAction implements Runnable {
Task task = Task task =
cloudTasksUtils.createPostTaskWithJitter( cloudTasksUtils.createPostTaskWithJitter(
PublishDnsUpdatesAction.PATH, PublishDnsUpdatesAction.PATH,
Service.BACKEND.toString(), Service.BACKEND,
ImmutableMultimap.<String, String>builder() ImmutableMultimap.<String, String>builder()
.put(PARAM_TLD, tld) .put(PARAM_TLD, tld)
.put(PARAM_DNS_WRITER, dnsWriter) .put(PARAM_DNS_WRITER, dnsWriter)

View file

@ -36,6 +36,7 @@ import com.google.cloud.tasks.v2.Task;
import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import google.registry.batch.AsyncTaskEnqueuer; import google.registry.batch.AsyncTaskEnqueuer;
import google.registry.batch.CloudTasksUtils;
import google.registry.dns.DnsQueue; import google.registry.dns.DnsQueue;
import google.registry.dns.RefreshDnsOnHostRenameAction; import google.registry.dns.RefreshDnsOnHostRenameAction;
import google.registry.flows.EppException; import google.registry.flows.EppException;
@ -65,7 +66,6 @@ import google.registry.model.host.HostHistory;
import google.registry.model.reporting.IcannReportingTypes.ActivityReportField; import google.registry.model.reporting.IcannReportingTypes.ActivityReportField;
import google.registry.persistence.VKey; import google.registry.persistence.VKey;
import google.registry.request.Action.Service; import google.registry.request.Action.Service;
import google.registry.util.CloudTasksUtils;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import javax.inject.Inject; import javax.inject.Inject;
@ -280,7 +280,7 @@ public final class HostUpdateFlow implements TransactionalFlow {
Task task = Task task =
cloudTasksUtils.createPostTask( cloudTasksUtils.createPostTask(
RefreshDnsOnHostRenameAction.PATH, RefreshDnsOnHostRenameAction.PATH,
Service.BACKEND.toString(), Service.BACKEND,
ImmutableMultimap.of(PARAM_HOST_KEY, existingHost.createVKey().stringify())); ImmutableMultimap.of(PARAM_HOST_KEY, existingHost.createVKey().stringify()));
cloudTasksUtils.enqueue(QUEUE_HOST_RENAME, task); cloudTasksUtils.enqueue(QUEUE_HOST_RENAME, task);
} }

View file

@ -28,13 +28,13 @@ import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.Iterators; import com.google.common.collect.Iterators;
import com.google.common.flogger.FluentLogger; import com.google.common.flogger.FluentLogger;
import com.google.protobuf.Timestamp; import com.google.protobuf.Timestamp;
import google.registry.batch.CloudTasksUtils;
import google.registry.config.RegistryEnvironment; import google.registry.config.RegistryEnvironment;
import google.registry.request.Action; import google.registry.request.Action;
import google.registry.request.Action.Service; import google.registry.request.Action.Service;
import google.registry.request.Parameter; import google.registry.request.Parameter;
import google.registry.request.auth.Auth; import google.registry.request.auth.Auth;
import google.registry.security.XsrfTokenManager; import google.registry.security.XsrfTokenManager;
import google.registry.util.CloudTasksUtils;
import java.time.Instant; import java.time.Instant;
import java.util.Arrays; import java.util.Arrays;
import java.util.Iterator; import java.util.Iterator;
@ -337,7 +337,7 @@ public class LoadTestAction implements Runnable {
cloudTasksUtils cloudTasksUtils
.createPostTask( .createPostTask(
"/_dr/epptool", "/_dr/epptool",
Service.TOOLS.toString(), Service.TOOLS,
ImmutableMultimap.of( ImmutableMultimap.of(
"clientId", "clientId",
registrarId, registrarId,

View file

@ -38,6 +38,7 @@ import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException; import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.SftpProgressMonitor; import com.jcraft.jsch.SftpProgressMonitor;
import dagger.Lazy; import dagger.Lazy;
import google.registry.batch.CloudTasksUtils;
import google.registry.config.RegistryConfig.Config; import google.registry.config.RegistryConfig.Config;
import google.registry.gcs.GcsUtils; import google.registry.gcs.GcsUtils;
import google.registry.keyring.api.KeyModule.Key; import google.registry.keyring.api.KeyModule.Key;
@ -56,7 +57,6 @@ import google.registry.request.RequestParameters;
import google.registry.request.Response; import google.registry.request.Response;
import google.registry.request.auth.Auth; import google.registry.request.auth.Auth;
import google.registry.util.Clock; import google.registry.util.Clock;
import google.registry.util.CloudTasksUtils;
import google.registry.util.Retrier; import google.registry.util.Retrier;
import google.registry.util.TeeOutputStream; import google.registry.util.TeeOutputStream;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
@ -131,8 +131,7 @@ public final class RdeUploadAction implements Runnable, EscrowTask {
prefix.ifPresent(s -> params.put(RdeModule.PARAM_PREFIX, s)); prefix.ifPresent(s -> params.put(RdeModule.PARAM_PREFIX, s));
cloudTasksUtils.enqueue( cloudTasksUtils.enqueue(
RDE_REPORT_QUEUE, RDE_REPORT_QUEUE,
cloudTasksUtils.createPostTask( cloudTasksUtils.createPostTask(RdeReportAction.PATH, Service.BACKEND, params));
RdeReportAction.PATH, Service.BACKEND.getServiceId(), params));
} }
@Override @Override

View file

@ -27,6 +27,7 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.ImmutableMultimap;
import com.google.common.flogger.FluentLogger; import com.google.common.flogger.FluentLogger;
import com.google.common.net.MediaType; import com.google.common.net.MediaType;
import google.registry.batch.CloudTasksUtils;
import google.registry.config.RegistryConfig.Config; import google.registry.config.RegistryConfig.Config;
import google.registry.config.RegistryEnvironment; import google.registry.config.RegistryEnvironment;
import google.registry.persistence.PersistenceModule; import google.registry.persistence.PersistenceModule;
@ -37,7 +38,6 @@ import google.registry.request.Parameter;
import google.registry.request.Response; import google.registry.request.Response;
import google.registry.request.auth.Auth; import google.registry.request.auth.Auth;
import google.registry.util.Clock; import google.registry.util.Clock;
import google.registry.util.CloudTasksUtils;
import java.io.IOException; import java.io.IOException;
import javax.inject.Inject; import javax.inject.Inject;
import org.joda.time.Duration; import org.joda.time.Duration;
@ -140,7 +140,7 @@ public class GenerateInvoicesAction implements Runnable {
ReportingModule.BEAM_QUEUE, ReportingModule.BEAM_QUEUE,
cloudTasksUtils.createPostTaskWithDelay( cloudTasksUtils.createPostTaskWithDelay(
PublishInvoicesAction.PATH, PublishInvoicesAction.PATH,
Service.BACKEND.toString(), Service.BACKEND,
ImmutableMultimap.of( ImmutableMultimap.of(
ReportingModule.PARAM_JOB_ID, ReportingModule.PARAM_JOB_ID,
jobId, jobId,

View file

@ -26,6 +26,7 @@ import com.google.api.services.dataflow.model.Job;
import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.ImmutableMultimap;
import com.google.common.flogger.FluentLogger; import com.google.common.flogger.FluentLogger;
import com.google.common.net.MediaType; import com.google.common.net.MediaType;
import google.registry.batch.CloudTasksUtils;
import google.registry.config.RegistryConfig.Config; import google.registry.config.RegistryConfig.Config;
import google.registry.reporting.ReportingModule; import google.registry.reporting.ReportingModule;
import google.registry.request.Action; import google.registry.request.Action;
@ -33,7 +34,6 @@ import google.registry.request.Action.Service;
import google.registry.request.Parameter; import google.registry.request.Parameter;
import google.registry.request.Response; import google.registry.request.Response;
import google.registry.request.auth.Auth; import google.registry.request.auth.Auth;
import google.registry.util.CloudTasksUtils;
import java.io.IOException; import java.io.IOException;
import javax.inject.Inject; import javax.inject.Inject;
import org.joda.time.YearMonth; import org.joda.time.YearMonth;
@ -127,7 +127,7 @@ public class PublishInvoicesAction implements Runnable {
BillingModule.CRON_QUEUE, BillingModule.CRON_QUEUE,
cloudTasksUtils.createPostTask( cloudTasksUtils.createPostTask(
CopyDetailReportsAction.PATH, CopyDetailReportsAction.PATH,
Service.BACKEND.toString(), Service.BACKEND,
ImmutableMultimap.of(PARAM_YEAR_MONTH, yearMonth.toString()))); ImmutableMultimap.of(PARAM_YEAR_MONTH, yearMonth.toString())));
} }
} }

View file

@ -26,6 +26,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import com.google.common.flogger.FluentLogger; import com.google.common.flogger.FluentLogger;
import com.google.common.net.MediaType; import com.google.common.net.MediaType;
import google.registry.batch.CloudTasksUtils;
import google.registry.bigquery.BigqueryJobFailureException; import google.registry.bigquery.BigqueryJobFailureException;
import google.registry.config.RegistryConfig.Config; import google.registry.config.RegistryConfig.Config;
import google.registry.reporting.icann.IcannReportingModule.ReportType; import google.registry.reporting.icann.IcannReportingModule.ReportType;
@ -34,7 +35,6 @@ import google.registry.request.Action.Service;
import google.registry.request.Parameter; import google.registry.request.Parameter;
import google.registry.request.Response; import google.registry.request.Response;
import google.registry.request.auth.Auth; import google.registry.request.auth.Auth;
import google.registry.util.CloudTasksUtils;
import google.registry.util.EmailMessage; import google.registry.util.EmailMessage;
import google.registry.util.Retrier; import google.registry.util.Retrier;
import google.registry.util.SendEmailService; import google.registry.util.SendEmailService;
@ -123,7 +123,7 @@ public final class IcannReportingStagingAction implements Runnable {
CRON_QUEUE, CRON_QUEUE,
cloudTasksUtils.createPostTaskWithDelay( cloudTasksUtils.createPostTaskWithDelay(
IcannReportingUploadAction.PATH, IcannReportingUploadAction.PATH,
Service.BACKEND.toString(), Service.BACKEND,
null, null,
Duration.standardMinutes(2))); Duration.standardMinutes(2)));
return null; return null;

View file

@ -27,6 +27,7 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.ImmutableMultimap;
import com.google.common.flogger.FluentLogger; import com.google.common.flogger.FluentLogger;
import com.google.common.net.MediaType; import com.google.common.net.MediaType;
import google.registry.batch.CloudTasksUtils;
import google.registry.config.RegistryConfig.Config; import google.registry.config.RegistryConfig.Config;
import google.registry.config.RegistryEnvironment; import google.registry.config.RegistryEnvironment;
import google.registry.keyring.api.KeyModule.Key; import google.registry.keyring.api.KeyModule.Key;
@ -37,7 +38,6 @@ import google.registry.request.Parameter;
import google.registry.request.Response; import google.registry.request.Response;
import google.registry.request.auth.Auth; import google.registry.request.auth.Auth;
import google.registry.util.Clock; import google.registry.util.Clock;
import google.registry.util.CloudTasksUtils;
import java.io.IOException; import java.io.IOException;
import javax.inject.Inject; import javax.inject.Inject;
import org.joda.time.Duration; import org.joda.time.Duration;
@ -135,7 +135,7 @@ public class GenerateSpec11ReportAction implements Runnable {
ReportingModule.BEAM_QUEUE, ReportingModule.BEAM_QUEUE,
cloudTasksUtils.createPostTaskWithDelay( cloudTasksUtils.createPostTaskWithDelay(
PublishSpec11ReportAction.PATH, PublishSpec11ReportAction.PATH,
Service.BACKEND.toString(), Service.BACKEND,
ImmutableMultimap.of( ImmutableMultimap.of(
ReportingModule.PARAM_JOB_ID, ReportingModule.PARAM_JOB_ID,
jobId, jobId,

View file

@ -46,6 +46,7 @@ import com.google.common.collect.ImmutableSortedSet;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Ordering; import com.google.common.collect.Ordering;
import com.google.common.flogger.FluentLogger; import com.google.common.flogger.FluentLogger;
import google.registry.batch.CloudTasksUtils;
import google.registry.config.RegistryConfig.Config; import google.registry.config.RegistryConfig.Config;
import google.registry.model.domain.Domain; import google.registry.model.domain.Domain;
import google.registry.request.Action; import google.registry.request.Action;
@ -57,7 +58,6 @@ import google.registry.request.UrlConnectionUtils;
import google.registry.request.auth.Auth; import google.registry.request.auth.Auth;
import google.registry.tmch.LordnTaskUtils.LordnPhase; import google.registry.tmch.LordnTaskUtils.LordnPhase;
import google.registry.util.Clock; import google.registry.util.Clock;
import google.registry.util.CloudTasksUtils;
import google.registry.util.Retrier; import google.registry.util.Retrier;
import google.registry.util.UrlConnectionException; import google.registry.util.UrlConnectionException;
import java.io.IOException; import java.io.IOException;
@ -333,7 +333,7 @@ public final class NordnUploadAction implements Runnable {
// The actionLogId is used to uniquely associate the verify task back to the upload task. // The actionLogId is used to uniquely associate the verify task back to the upload task.
return cloudTasksUtils.createPostTaskWithDelay( return cloudTasksUtils.createPostTaskWithDelay(
NordnVerifyAction.PATH, NordnVerifyAction.PATH,
Service.BACKEND.toString(), Service.BACKEND,
ImmutableMultimap.<String, String>builder() ImmutableMultimap.<String, String>builder()
.put(NordnVerifyAction.NORDN_URL_PARAM, url.toString()) .put(NordnVerifyAction.NORDN_URL_PARAM, url.toString())
.put(NordnVerifyAction.NORDN_LOG_ID_PARAM, actionLogId) .put(NordnVerifyAction.NORDN_LOG_ID_PARAM, actionLogId)

View file

@ -23,6 +23,7 @@ import static google.registry.tools.LockOrUnlockDomainCommand.REGISTRY_LOCK_STAT
import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import google.registry.batch.CloudTasksUtils;
import google.registry.batch.RelockDomainAction; import google.registry.batch.RelockDomainAction;
import google.registry.config.RegistryConfig.Config; import google.registry.config.RegistryConfig.Config;
import google.registry.model.billing.BillingEvent; import google.registry.model.billing.BillingEvent;
@ -34,7 +35,6 @@ import google.registry.model.reporting.HistoryEntry;
import google.registry.model.tld.Registry; import google.registry.model.tld.Registry;
import google.registry.model.tld.RegistryLockDao; import google.registry.model.tld.RegistryLockDao;
import google.registry.request.Action.Service; import google.registry.request.Action.Service;
import google.registry.util.CloudTasksUtils;
import google.registry.util.StringGenerator; import google.registry.util.StringGenerator;
import java.util.Optional; import java.util.Optional;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@ -223,7 +223,7 @@ public final class DomainLockUtils {
QUEUE_ASYNC_ACTIONS, QUEUE_ASYNC_ACTIONS,
cloudTasksUtils.createPostTaskWithDelay( cloudTasksUtils.createPostTaskWithDelay(
RelockDomainAction.PATH, RelockDomainAction.PATH,
Service.BACKEND.toString(), Service.BACKEND,
ImmutableMultimap.of( ImmutableMultimap.of(
RelockDomainAction.OLD_UNLOCK_REVISION_ID_PARAM, RelockDomainAction.OLD_UNLOCK_REVISION_ID_PARAM,
String.valueOf(lockRevisionId), String.valueOf(lockRevisionId),

View file

@ -28,11 +28,11 @@ import com.beust.jcommander.Parameter;
import com.beust.jcommander.ParameterException; import com.beust.jcommander.ParameterException;
import com.beust.jcommander.Parameters; import com.beust.jcommander.Parameters;
import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.ImmutableMultimap;
import google.registry.batch.CloudTasksUtils;
import google.registry.model.rde.RdeMode; import google.registry.model.rde.RdeMode;
import google.registry.rde.RdeStagingAction; import google.registry.rde.RdeStagingAction;
import google.registry.request.Action.Service; import google.registry.request.Action.Service;
import google.registry.tools.params.DateTimeParameter; import google.registry.tools.params.DateTimeParameter;
import google.registry.util.CloudTasksUtils;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.inject.Inject; import javax.inject.Inject;
@ -122,7 +122,7 @@ final class GenerateEscrowDepositCommand implements Command {
cloudTasksUtils.enqueue( cloudTasksUtils.enqueue(
RDE_REPORT_QUEUE, RDE_REPORT_QUEUE,
cloudTasksUtils.createPostTask( cloudTasksUtils.createPostTask(
RdeStagingAction.PATH, Service.BACKEND.toString(), paramsBuilder.build())); RdeStagingAction.PATH, Service.BACKEND, paramsBuilder.build()));
} }
} }

View file

@ -36,6 +36,7 @@ import com.google.common.collect.Multimap;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.google.common.collect.Streams; import com.google.common.collect.Streams;
import com.google.common.flogger.FluentLogger; import com.google.common.flogger.FluentLogger;
import google.registry.batch.CloudTasksUtils;
import google.registry.config.RegistryEnvironment; import google.registry.config.RegistryEnvironment;
import google.registry.export.sheet.SyncRegistrarsSheetAction; import google.registry.export.sheet.SyncRegistrarsSheetAction;
import google.registry.flows.certs.CertificateChecker; import google.registry.flows.certs.CertificateChecker;
@ -58,7 +59,6 @@ import google.registry.ui.forms.FormException;
import google.registry.ui.forms.FormFieldException; import google.registry.ui.forms.FormFieldException;
import google.registry.ui.server.RegistrarFormFields; import google.registry.ui.server.RegistrarFormFields;
import google.registry.ui.server.SendEmailUtils; import google.registry.ui.server.SendEmailUtils;
import google.registry.util.CloudTasksUtils;
import google.registry.util.CollectionUtils; import google.registry.util.CollectionUtils;
import google.registry.util.DiffUtils; import google.registry.util.DiffUtils;
import java.util.HashSet; import java.util.HashSet;
@ -643,7 +643,7 @@ public class RegistrarSettingsAction implements Runnable, JsonActionRunner.JsonA
cloudTasksUtils.enqueue( cloudTasksUtils.enqueue(
SyncRegistrarsSheetAction.QUEUE, SyncRegistrarsSheetAction.QUEUE,
cloudTasksUtils.createGetTask( cloudTasksUtils.createGetTask(
SyncRegistrarsSheetAction.PATH, Service.BACKEND.toString(), ImmutableMultimap.of())); SyncRegistrarsSheetAction.PATH, Service.BACKEND, ImmutableMultimap.of()));
} }
String environment = Ascii.toLowerCase(String.valueOf(RegistryEnvironment.get())); String environment = Ascii.toLowerCase(String.valueOf(RegistryEnvironment.get()));
sendEmailUtils.sendEmail( sendEmailUtils.sendEmail(

View file

@ -30,7 +30,6 @@ import google.registry.testing.CloudTasksHelper;
import google.registry.testing.CloudTasksHelper.TaskMatcher; import google.registry.testing.CloudTasksHelper.TaskMatcher;
import google.registry.testing.FakeClock; import google.registry.testing.FakeClock;
import google.registry.util.CapturingLogHandler; import google.registry.util.CapturingLogHandler;
import google.registry.util.CloudTasksUtils;
import google.registry.util.JdkLoggerConfig; import google.registry.util.JdkLoggerConfig;
import java.util.logging.Level; import java.util.logging.Level;
import org.joda.time.DateTime; import org.joda.time.DateTime;

View file

@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
package google.registry.util; package google.registry.batch;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertThrows;
@ -27,9 +27,11 @@ import com.google.cloud.tasks.v2.Task;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.LinkedListMultimap; import com.google.common.collect.LinkedListMultimap;
import google.registry.batch.CloudTasksUtils.SerializableCloudTasksClient;
import google.registry.request.Action.Service;
import google.registry.testing.FakeClock; import google.registry.testing.FakeClock;
import google.registry.testing.FakeSleeper; import google.registry.testing.FakeSleeper;
import google.registry.util.CloudTasksUtils.SerializableCloudTasksClient; import google.registry.util.Retrier;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.time.Instant; import java.time.Instant;
import java.util.Optional; import java.util.Optional;
@ -59,22 +61,22 @@ public class CloudTasksUtilsTest {
@Test @Test
void testSuccess_createGetTasks() { void testSuccess_createGetTasks() {
Task task = cloudTasksUtils.createGetTask("/the/path", "myservice", params); Task task = cloudTasksUtils.createGetTask("/the/path", Service.BACKEND, params);
assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.GET); assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.GET);
assertThat(task.getAppEngineHttpRequest().getRelativeUri()) assertThat(task.getAppEngineHttpRequest().getRelativeUri())
.isEqualTo("/the/path?key1=val1&key2=val2&key1=val3"); .isEqualTo("/the/path?key1=val1&key2=val2&key1=val3");
assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService()) assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService())
.isEqualTo("myservice"); .isEqualTo(Service.BACKEND.toString());
assertThat(task.getScheduleTime().getSeconds()).isEqualTo(0); assertThat(task.getScheduleTime().getSeconds()).isEqualTo(0);
} }
@Test @Test
void testSuccess_createPostTasks() { void testSuccess_createPostTasks() {
Task task = cloudTasksUtils.createPostTask("/the/path", "myservice", params); Task task = cloudTasksUtils.createPostTask("/the/path", Service.BACKEND, params);
assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.POST); assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.POST);
assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path"); assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path");
assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService()) assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService())
.isEqualTo("myservice"); .isEqualTo(Service.BACKEND.toString());
assertThat(task.getAppEngineHttpRequest().getHeadersMap().get("Content-Type")) assertThat(task.getAppEngineHttpRequest().getHeadersMap().get("Content-Type"))
.isEqualTo("application/x-www-form-urlencoded"); .isEqualTo("application/x-www-form-urlencoded");
assertThat(task.getAppEngineHttpRequest().getBody().toString(StandardCharsets.UTF_8)) assertThat(task.getAppEngineHttpRequest().getBody().toString(StandardCharsets.UTF_8))
@ -84,42 +86,43 @@ public class CloudTasksUtilsTest {
@Test @Test
void testSuccess_createGetTasks_withNullParams() { void testSuccess_createGetTasks_withNullParams() {
Task task = cloudTasksUtils.createGetTask("/the/path", "myservice", null); Task task = cloudTasksUtils.createGetTask("/the/path", Service.BACKEND, null);
assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.GET); assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.GET);
assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path"); assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path");
assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService()) assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService())
.isEqualTo("myservice"); .isEqualTo(Service.BACKEND.toString());
assertThat(task.getScheduleTime().getSeconds()).isEqualTo(0); assertThat(task.getScheduleTime().getSeconds()).isEqualTo(0);
} }
@Test @Test
void testSuccess_createPostTasks_withNullParams() { void testSuccess_createPostTasks_withNullParams() {
Task task = cloudTasksUtils.createPostTask("/the/path", "myservice", null); Task task = cloudTasksUtils.createPostTask("/the/path", Service.BACKEND, null);
assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.POST); assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.POST);
assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path"); assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path");
assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService()) assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService())
.isEqualTo("myservice"); .isEqualTo(Service.BACKEND.toString());
assertThat(task.getAppEngineHttpRequest().getBody().toString(StandardCharsets.UTF_8)).isEmpty(); assertThat(task.getAppEngineHttpRequest().getBody().toString(StandardCharsets.UTF_8)).isEmpty();
assertThat(task.getScheduleTime().getSeconds()).isEqualTo(0); assertThat(task.getScheduleTime().getSeconds()).isEqualTo(0);
} }
@Test @Test
void testSuccess_createGetTasks_withEmptyParams() { void testSuccess_createGetTasks_withEmptyParams() {
Task task = cloudTasksUtils.createGetTask("/the/path", "myservice", ImmutableMultimap.of()); Task task = cloudTasksUtils.createGetTask("/the/path", Service.BACKEND, ImmutableMultimap.of());
assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.GET); assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.GET);
assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path"); assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path");
assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService()) assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService())
.isEqualTo("myservice"); .isEqualTo(Service.BACKEND.toString());
assertThat(task.getScheduleTime().getSeconds()).isEqualTo(0); assertThat(task.getScheduleTime().getSeconds()).isEqualTo(0);
} }
@Test @Test
void testSuccess_createPostTasks_withEmptyParams() { void testSuccess_createPostTasks_withEmptyParams() {
Task task = cloudTasksUtils.createPostTask("/the/path", "myservice", ImmutableMultimap.of()); Task task =
cloudTasksUtils.createPostTask("/the/path", Service.BACKEND, ImmutableMultimap.of());
assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.POST); assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.POST);
assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path"); assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path");
assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService()) assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService())
.isEqualTo("myservice"); .isEqualTo(Service.BACKEND.toString());
assertThat(task.getAppEngineHttpRequest().getBody().toString(StandardCharsets.UTF_8)).isEmpty(); assertThat(task.getAppEngineHttpRequest().getBody().toString(StandardCharsets.UTF_8)).isEmpty();
assertThat(task.getScheduleTime().getSeconds()).isEqualTo(0); assertThat(task.getScheduleTime().getSeconds()).isEqualTo(0);
} }
@ -128,12 +131,13 @@ public class CloudTasksUtilsTest {
@Test @Test
void testSuccess_createGetTasks_withJitterSeconds() { void testSuccess_createGetTasks_withJitterSeconds() {
Task task = Task task =
cloudTasksUtils.createGetTaskWithJitter("/the/path", "myservice", params, Optional.of(100)); cloudTasksUtils.createGetTaskWithJitter(
"/the/path", Service.BACKEND, params, Optional.of(100));
assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.GET); assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.GET);
assertThat(task.getAppEngineHttpRequest().getRelativeUri()) assertThat(task.getAppEngineHttpRequest().getRelativeUri())
.isEqualTo("/the/path?key1=val1&key2=val2&key1=val3"); .isEqualTo("/the/path?key1=val1&key2=val2&key1=val3");
assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService()) assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService())
.isEqualTo("myservice"); .isEqualTo(Service.BACKEND.toString());
Instant scheduleTime = Instant.ofEpochSecond(task.getScheduleTime().getSeconds()); Instant scheduleTime = Instant.ofEpochSecond(task.getScheduleTime().getSeconds());
Instant lowerBoundTime = Instant.ofEpochMilli(clock.nowUtc().getMillis()); Instant lowerBoundTime = Instant.ofEpochMilli(clock.nowUtc().getMillis());
@ -147,11 +151,12 @@ public class CloudTasksUtilsTest {
@Test @Test
void testSuccess_createPostTasks_withJitterSeconds() { void testSuccess_createPostTasks_withJitterSeconds() {
Task task = Task task =
cloudTasksUtils.createPostTaskWithJitter("/the/path", "myservice", params, Optional.of(1)); cloudTasksUtils.createPostTaskWithJitter(
"/the/path", Service.BACKEND, params, Optional.of(1));
assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.POST); assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.POST);
assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path"); assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path");
assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService()) assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService())
.isEqualTo("myservice"); .isEqualTo(Service.BACKEND.toString());
assertThat(task.getAppEngineHttpRequest().getHeadersMap().get("Content-Type")) assertThat(task.getAppEngineHttpRequest().getHeadersMap().get("Content-Type"))
.isEqualTo("application/x-www-form-urlencoded"); .isEqualTo("application/x-www-form-urlencoded");
assertThat(task.getAppEngineHttpRequest().getBody().toString(StandardCharsets.UTF_8)) assertThat(task.getAppEngineHttpRequest().getBody().toString(StandardCharsets.UTF_8))
@ -170,11 +175,11 @@ public class CloudTasksUtilsTest {
void testSuccess_createPostTasks_withEmptyJitterSeconds() { void testSuccess_createPostTasks_withEmptyJitterSeconds() {
Task task = Task task =
cloudTasksUtils.createPostTaskWithJitter( cloudTasksUtils.createPostTaskWithJitter(
"/the/path", "myservice", params, Optional.empty()); "/the/path", Service.BACKEND, params, Optional.empty());
assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.POST); assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.POST);
assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path"); assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path");
assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService()) assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService())
.isEqualTo("myservice"); .isEqualTo(Service.BACKEND.toString());
assertThat(task.getAppEngineHttpRequest().getHeadersMap().get("Content-Type")) assertThat(task.getAppEngineHttpRequest().getHeadersMap().get("Content-Type"))
.isEqualTo("application/x-www-form-urlencoded"); .isEqualTo("application/x-www-form-urlencoded");
assertThat(task.getAppEngineHttpRequest().getBody().toString(StandardCharsets.UTF_8)) assertThat(task.getAppEngineHttpRequest().getBody().toString(StandardCharsets.UTF_8))
@ -185,23 +190,25 @@ public class CloudTasksUtilsTest {
@Test @Test
void testSuccess_createGetTasks_withEmptyJitterSeconds() { void testSuccess_createGetTasks_withEmptyJitterSeconds() {
Task task = Task task =
cloudTasksUtils.createGetTaskWithJitter("/the/path", "myservice", params, Optional.empty()); cloudTasksUtils.createGetTaskWithJitter(
"/the/path", Service.BACKEND, params, Optional.empty());
assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.GET); assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.GET);
assertThat(task.getAppEngineHttpRequest().getRelativeUri()) assertThat(task.getAppEngineHttpRequest().getRelativeUri())
.isEqualTo("/the/path?key1=val1&key2=val2&key1=val3"); .isEqualTo("/the/path?key1=val1&key2=val2&key1=val3");
assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService()) assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService())
.isEqualTo("myservice"); .isEqualTo(Service.BACKEND.toString());
assertThat(task.getScheduleTime().getSeconds()).isEqualTo(0); assertThat(task.getScheduleTime().getSeconds()).isEqualTo(0);
} }
@Test @Test
void testSuccess_createPostTasks_withZeroJitterSeconds() { void testSuccess_createPostTasks_withZeroJitterSeconds() {
Task task = Task task =
cloudTasksUtils.createPostTaskWithJitter("/the/path", "myservice", params, Optional.of(0)); cloudTasksUtils.createPostTaskWithJitter(
"/the/path", Service.BACKEND, params, Optional.of(0));
assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.POST); assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.POST);
assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path"); assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path");
assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService()) assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService())
.isEqualTo("myservice"); .isEqualTo(Service.BACKEND.toString());
assertThat(task.getAppEngineHttpRequest().getHeadersMap().get("Content-Type")) assertThat(task.getAppEngineHttpRequest().getHeadersMap().get("Content-Type"))
.isEqualTo("application/x-www-form-urlencoded"); .isEqualTo("application/x-www-form-urlencoded");
assertThat(task.getAppEngineHttpRequest().getBody().toString(StandardCharsets.UTF_8)) assertThat(task.getAppEngineHttpRequest().getBody().toString(StandardCharsets.UTF_8))
@ -212,12 +219,13 @@ public class CloudTasksUtilsTest {
@Test @Test
void testSuccess_createGetTasks_withZeroJitterSeconds() { void testSuccess_createGetTasks_withZeroJitterSeconds() {
Task task = Task task =
cloudTasksUtils.createGetTaskWithJitter("/the/path", "myservice", params, Optional.of(0)); cloudTasksUtils.createGetTaskWithJitter(
"/the/path", Service.BACKEND, params, Optional.of(0));
assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.GET); assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.GET);
assertThat(task.getAppEngineHttpRequest().getRelativeUri()) assertThat(task.getAppEngineHttpRequest().getRelativeUri())
.isEqualTo("/the/path?key1=val1&key2=val2&key1=val3"); .isEqualTo("/the/path?key1=val1&key2=val2&key1=val3");
assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService()) assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService())
.isEqualTo("myservice"); .isEqualTo(Service.BACKEND.toString());
assertThat(task.getScheduleTime().getSeconds()).isEqualTo(0); assertThat(task.getScheduleTime().getSeconds()).isEqualTo(0);
} }
@ -225,12 +233,12 @@ public class CloudTasksUtilsTest {
void testSuccess_createGetTasks_withDelay() { void testSuccess_createGetTasks_withDelay() {
Task task = Task task =
cloudTasksUtils.createGetTaskWithDelay( cloudTasksUtils.createGetTaskWithDelay(
"/the/path", "myservice", params, Duration.standardMinutes(10)); "/the/path", Service.BACKEND, params, Duration.standardMinutes(10));
assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.GET); assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.GET);
assertThat(task.getAppEngineHttpRequest().getRelativeUri()) assertThat(task.getAppEngineHttpRequest().getRelativeUri())
.isEqualTo("/the/path?key1=val1&key2=val2&key1=val3"); .isEqualTo("/the/path?key1=val1&key2=val2&key1=val3");
assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService()) assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService())
.isEqualTo("myservice"); .isEqualTo(Service.BACKEND.toString());
assertThat(Instant.ofEpochSecond(task.getScheduleTime().getSeconds())) assertThat(Instant.ofEpochSecond(task.getScheduleTime().getSeconds()))
.isEqualTo(Instant.ofEpochMilli(clock.nowUtc().plusMinutes(10).getMillis())); .isEqualTo(Instant.ofEpochMilli(clock.nowUtc().plusMinutes(10).getMillis()));
} }
@ -239,11 +247,11 @@ public class CloudTasksUtilsTest {
void testSuccess_createPostTasks_withDelay() { void testSuccess_createPostTasks_withDelay() {
Task task = Task task =
cloudTasksUtils.createPostTaskWithDelay( cloudTasksUtils.createPostTaskWithDelay(
"/the/path", "myservice", params, Duration.standardMinutes(10)); "/the/path", Service.BACKEND, params, Duration.standardMinutes(10));
assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.POST); assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.POST);
assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path"); assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path");
assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService()) assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService())
.isEqualTo("myservice"); .isEqualTo(Service.BACKEND.toString());
assertThat(task.getAppEngineHttpRequest().getHeadersMap().get("Content-Type")) assertThat(task.getAppEngineHttpRequest().getHeadersMap().get("Content-Type"))
.isEqualTo("application/x-www-form-urlencoded"); .isEqualTo("application/x-www-form-urlencoded");
assertThat(task.getAppEngineHttpRequest().getBody().toString(StandardCharsets.UTF_8)) assertThat(task.getAppEngineHttpRequest().getBody().toString(StandardCharsets.UTF_8))
@ -260,7 +268,7 @@ public class CloudTasksUtilsTest {
IllegalArgumentException.class, IllegalArgumentException.class,
() -> () ->
cloudTasksUtils.createGetTaskWithDelay( cloudTasksUtils.createGetTaskWithDelay(
"/the/path", "myservice", params, Duration.standardMinutes(-10))); "/the/path", Service.BACKEND, params, Duration.standardMinutes(-10)));
assertThat(thrown).hasMessageThat().isEqualTo("Negative duration is not supported."); assertThat(thrown).hasMessageThat().isEqualTo("Negative duration is not supported.");
} }
@ -271,18 +279,19 @@ public class CloudTasksUtilsTest {
IllegalArgumentException.class, IllegalArgumentException.class,
() -> () ->
cloudTasksUtils.createGetTaskWithDelay( cloudTasksUtils.createGetTaskWithDelay(
"/the/path", "myservice", params, Duration.standardMinutes(-10))); "/the/path", Service.BACKEND, params, Duration.standardMinutes(-10)));
assertThat(thrown).hasMessageThat().isEqualTo("Negative duration is not supported."); assertThat(thrown).hasMessageThat().isEqualTo("Negative duration is not supported.");
} }
@Test @Test
void testSuccess_createPostTasks_withZeroDelay() { void testSuccess_createPostTasks_withZeroDelay() {
Task task = Task task =
cloudTasksUtils.createPostTaskWithDelay("/the/path", "myservice", params, Duration.ZERO); cloudTasksUtils.createPostTaskWithDelay(
"/the/path", Service.BACKEND, params, Duration.ZERO);
assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.POST); assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.POST);
assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path"); assertThat(task.getAppEngineHttpRequest().getRelativeUri()).isEqualTo("/the/path");
assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService()) assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService())
.isEqualTo("myservice"); .isEqualTo(Service.BACKEND.toString());
assertThat(task.getAppEngineHttpRequest().getHeadersMap().get("Content-Type")) assertThat(task.getAppEngineHttpRequest().getHeadersMap().get("Content-Type"))
.isEqualTo("application/x-www-form-urlencoded"); .isEqualTo("application/x-www-form-urlencoded");
assertThat(task.getAppEngineHttpRequest().getBody().toString(StandardCharsets.UTF_8)) assertThat(task.getAppEngineHttpRequest().getBody().toString(StandardCharsets.UTF_8))
@ -293,12 +302,12 @@ public class CloudTasksUtilsTest {
@Test @Test
void testSuccess_createGetTasks_withZeroDelay() { void testSuccess_createGetTasks_withZeroDelay() {
Task task = Task task =
cloudTasksUtils.createGetTaskWithDelay("/the/path", "myservice", params, Duration.ZERO); cloudTasksUtils.createGetTaskWithDelay("/the/path", Service.BACKEND, params, Duration.ZERO);
assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.GET); assertThat(task.getAppEngineHttpRequest().getHttpMethod()).isEqualTo(HttpMethod.GET);
assertThat(task.getAppEngineHttpRequest().getRelativeUri()) assertThat(task.getAppEngineHttpRequest().getRelativeUri())
.isEqualTo("/the/path?key1=val1&key2=val2&key1=val3"); .isEqualTo("/the/path?key1=val1&key2=val2&key1=val3");
assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService()) assertThat(task.getAppEngineHttpRequest().getAppEngineRouting().getService())
.isEqualTo("myservice"); .isEqualTo(Service.BACKEND.toString());
assertThat(task.getScheduleTime().getSeconds()).isEqualTo(0); assertThat(task.getScheduleTime().getSeconds()).isEqualTo(0);
} }
@ -306,26 +315,26 @@ public class CloudTasksUtilsTest {
void testFailure_illegalPath() { void testFailure_illegalPath() {
assertThrows( assertThrows(
IllegalArgumentException.class, IllegalArgumentException.class,
() -> cloudTasksUtils.createPostTask("the/path", "myservice", params)); () -> cloudTasksUtils.createPostTask("the/path", Service.BACKEND, params));
assertThrows( assertThrows(
IllegalArgumentException.class, IllegalArgumentException.class,
() -> cloudTasksUtils.createPostTask(null, "myservice", params)); () -> cloudTasksUtils.createPostTask(null, Service.BACKEND, params));
assertThrows( assertThrows(
IllegalArgumentException.class, IllegalArgumentException.class,
() -> cloudTasksUtils.createPostTask("", "myservice", params)); () -> cloudTasksUtils.createPostTask("", Service.BACKEND, params));
} }
@Test @Test
void testSuccess_enqueueTask() { void testSuccess_enqueueTask() {
Task task = cloudTasksUtils.createGetTask("/the/path", "myservice", params); Task task = cloudTasksUtils.createGetTask("/the/path", Service.BACKEND, params);
cloudTasksUtils.enqueue("test-queue", task); cloudTasksUtils.enqueue("test-queue", task);
verify(mockClient).enqueue("project", "location", "test-queue", task); verify(mockClient).enqueue("project", "location", "test-queue", task);
} }
@Test @Test
void testSuccess_enqueueTasks_varargs() { void testSuccess_enqueueTasks_varargs() {
Task task1 = cloudTasksUtils.createGetTask("/the/path", "myservice", params); Task task1 = cloudTasksUtils.createGetTask("/the/path", Service.BACKEND, params);
Task task2 = cloudTasksUtils.createGetTask("/other/path", "yourservice", params); Task task2 = cloudTasksUtils.createGetTask("/other/path", Service.TOOLS, params);
cloudTasksUtils.enqueue("test-queue", task1, task2); cloudTasksUtils.enqueue("test-queue", task1, task2);
verify(mockClient).enqueue("project", "location", "test-queue", task1); verify(mockClient).enqueue("project", "location", "test-queue", task1);
verify(mockClient).enqueue("project", "location", "test-queue", task2); verify(mockClient).enqueue("project", "location", "test-queue", task2);
@ -333,8 +342,8 @@ public class CloudTasksUtilsTest {
@Test @Test
void testSuccess_enqueueTasks_iterable() { void testSuccess_enqueueTasks_iterable() {
Task task1 = cloudTasksUtils.createGetTask("/the/path", "myservice", params); Task task1 = cloudTasksUtils.createGetTask("/the/path", Service.BACKEND, params);
Task task2 = cloudTasksUtils.createGetTask("/other/path", "yourservice", params); Task task2 = cloudTasksUtils.createGetTask("/other/path", Service.TOOLS, params);
cloudTasksUtils.enqueue("test-queue", ImmutableList.of(task1, task2)); cloudTasksUtils.enqueue("test-queue", ImmutableList.of(task1, task2));
verify(mockClient).enqueue("project", "location", "test-queue", task1); verify(mockClient).enqueue("project", "location", "test-queue", task1);
verify(mockClient).enqueue("project", "location", "test-queue", task2); verify(mockClient).enqueue("project", "location", "test-queue", task2);

View file

@ -20,6 +20,7 @@ import dagger.Provides;
import dagger.Subcomponent; import dagger.Subcomponent;
import google.registry.batch.AsyncTaskEnqueuer; import google.registry.batch.AsyncTaskEnqueuer;
import google.registry.batch.AsyncTaskEnqueuerTest; import google.registry.batch.AsyncTaskEnqueuerTest;
import google.registry.batch.CloudTasksUtils;
import google.registry.config.RegistryConfig.ConfigModule; import google.registry.config.RegistryConfig.ConfigModule;
import google.registry.config.RegistryConfig.ConfigModule.TmchCaMode; import google.registry.config.RegistryConfig.ConfigModule.TmchCaMode;
import google.registry.dns.DnsQueue; import google.registry.dns.DnsQueue;
@ -36,7 +37,6 @@ import google.registry.testing.FakeSleeper;
import google.registry.tmch.TmchCertificateAuthority; import google.registry.tmch.TmchCertificateAuthority;
import google.registry.tmch.TmchXmlSignature; import google.registry.tmch.TmchXmlSignature;
import google.registry.util.Clock; import google.registry.util.Clock;
import google.registry.util.CloudTasksUtils;
import google.registry.util.Sleeper; import google.registry.util.Sleeper;
import javax.inject.Singleton; import javax.inject.Singleton;

View file

@ -23,6 +23,7 @@ import static org.mockito.Mockito.when;
import com.google.cloud.tasks.v2.HttpMethod; import com.google.cloud.tasks.v2.HttpMethod;
import com.google.common.net.MediaType; import com.google.common.net.MediaType;
import google.registry.batch.CloudTasksUtils;
import google.registry.beam.BeamActionTestBase; import google.registry.beam.BeamActionTestBase;
import google.registry.persistence.transaction.JpaTestExtensions; import google.registry.persistence.transaction.JpaTestExtensions;
import google.registry.persistence.transaction.JpaTestExtensions.JpaIntegrationTestExtension; import google.registry.persistence.transaction.JpaTestExtensions.JpaIntegrationTestExtension;
@ -30,7 +31,6 @@ import google.registry.reporting.ReportingModule;
import google.registry.testing.CloudTasksHelper; import google.registry.testing.CloudTasksHelper;
import google.registry.testing.CloudTasksHelper.TaskMatcher; import google.registry.testing.CloudTasksHelper.TaskMatcher;
import google.registry.testing.FakeClock; import google.registry.testing.FakeClock;
import google.registry.util.CloudTasksUtils;
import java.io.IOException; import java.io.IOException;
import org.joda.time.Duration; import org.joda.time.Duration;
import org.joda.time.YearMonth; import org.joda.time.YearMonth;

View file

@ -31,10 +31,10 @@ import com.google.api.services.dataflow.Dataflow.Projects.Locations.Jobs.Get;
import com.google.api.services.dataflow.model.Job; import com.google.api.services.dataflow.model.Job;
import com.google.cloud.tasks.v2.HttpMethod; import com.google.cloud.tasks.v2.HttpMethod;
import com.google.common.net.MediaType; import com.google.common.net.MediaType;
import google.registry.batch.CloudTasksUtils;
import google.registry.testing.CloudTasksHelper; import google.registry.testing.CloudTasksHelper;
import google.registry.testing.CloudTasksHelper.TaskMatcher; import google.registry.testing.CloudTasksHelper.TaskMatcher;
import google.registry.testing.FakeResponse; import google.registry.testing.FakeResponse;
import google.registry.util.CloudTasksUtils;
import java.io.IOException; import java.io.IOException;
import org.joda.time.YearMonth; import org.joda.time.YearMonth;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;

View file

@ -21,12 +21,12 @@ import static org.mockito.Mockito.when;
import com.google.cloud.tasks.v2.HttpMethod; import com.google.cloud.tasks.v2.HttpMethod;
import com.google.common.net.MediaType; import com.google.common.net.MediaType;
import google.registry.batch.CloudTasksUtils;
import google.registry.beam.BeamActionTestBase; import google.registry.beam.BeamActionTestBase;
import google.registry.reporting.ReportingModule; import google.registry.reporting.ReportingModule;
import google.registry.testing.CloudTasksHelper; import google.registry.testing.CloudTasksHelper;
import google.registry.testing.CloudTasksHelper.TaskMatcher; import google.registry.testing.CloudTasksHelper.TaskMatcher;
import google.registry.testing.FakeClock; import google.registry.testing.FakeClock;
import google.registry.util.CloudTasksUtils;
import java.io.IOException; import java.io.IOException;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.joda.time.Duration; import org.joda.time.Duration;

View file

@ -43,8 +43,8 @@ import com.google.protobuf.Timestamp;
import com.google.protobuf.util.Timestamps; import com.google.protobuf.util.Timestamps;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import google.registry.batch.CloudTasksUtils;
import google.registry.model.ImmutableObject; import google.registry.model.ImmutableObject;
import google.registry.util.CloudTasksUtils;
import google.registry.util.Retrier; import google.registry.util.Retrier;
import java.io.Serializable; import java.io.Serializable;
import java.net.URI; import java.net.URI;

View file

@ -50,6 +50,7 @@ import com.google.appengine.api.taskqueue.TransientFailureException;
import com.google.apphosting.api.DeadlineExceededException; import com.google.apphosting.api.DeadlineExceededException;
import com.google.common.base.VerifyException; import com.google.common.base.VerifyException;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import google.registry.batch.CloudTasksUtils;
import google.registry.model.domain.Domain; import google.registry.model.domain.Domain;
import google.registry.model.domain.launch.LaunchNotice; import google.registry.model.domain.launch.LaunchNotice;
import google.registry.model.tld.Registry; import google.registry.model.tld.Registry;
@ -64,7 +65,6 @@ import google.registry.testing.FakeSleeper;
import google.registry.testing.FakeUrlConnectionService; import google.registry.testing.FakeUrlConnectionService;
import google.registry.testing.TaskQueueExtension; import google.registry.testing.TaskQueueExtension;
import google.registry.tmch.LordnTaskUtils.LordnPhase; import google.registry.tmch.LordnTaskUtils.LordnPhase;
import google.registry.util.CloudTasksUtils;
import google.registry.util.Retrier; import google.registry.util.Retrier;
import google.registry.util.UrlConnectionException; import google.registry.util.UrlConnectionException;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;