diff --git a/java/google/registry/monitoring/whitebox/BigQueryMetricsEnqueuer.java b/java/google/registry/monitoring/whitebox/BigQueryMetricsEnqueuer.java index 5bbb9077a..5e444f3dc 100644 --- a/java/google/registry/monitoring/whitebox/BigQueryMetricsEnqueuer.java +++ b/java/google/registry/monitoring/whitebox/BigQueryMetricsEnqueuer.java @@ -20,11 +20,11 @@ import static com.google.appengine.api.taskqueue.TaskOptions.Builder.withUrl; import com.google.appengine.api.modules.ModulesService; import com.google.appengine.api.taskqueue.TaskOptions; import com.google.appengine.api.taskqueue.TransientFailureException; -import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Supplier; import google.registry.util.FormattingLogger; import java.util.Map.Entry; -import java.util.UUID; import javax.inject.Inject; +import javax.inject.Named; /** * A collector of metric information. Enqueues collected metrics to a task queue to be written to @@ -39,18 +39,17 @@ public class BigQueryMetricsEnqueuer { public static final String QUEUE = "bigquery-streaming-metrics"; @Inject ModulesService modulesService; + @Inject @Named("insertIdGenerator") Supplier idGenerator; - @Inject - BigQueryMetricsEnqueuer() {} + @Inject BigQueryMetricsEnqueuer() {} - @VisibleForTesting - void export(BigQueryMetric metric, String insertId) { + public void export(BigQueryMetric metric) { try { String hostname = modulesService.getVersionHostname("backend", null); TaskOptions opts = withUrl(MetricsExportAction.PATH) .header("Host", hostname) - .param("insertId", insertId); + .param("insertId", idGenerator.get()); for (Entry entry : metric.getBigQueryRowEncoding().entrySet()) { opts.param(entry.getKey(), entry.getValue()); } @@ -61,9 +60,4 @@ public class BigQueryMetricsEnqueuer { logger.info(e, e.getMessage()); } } - - /** Enqueue a metric to be exported to BigQuery. */ - public void export(BigQueryMetric metric) { - export(metric, UUID.randomUUID().toString()); - } } diff --git a/java/google/registry/monitoring/whitebox/EppMetric.java b/java/google/registry/monitoring/whitebox/EppMetric.java index f3824ceb4..a4e80df7f 100644 --- a/java/google/registry/monitoring/whitebox/EppMetric.java +++ b/java/google/registry/monitoring/whitebox/EppMetric.java @@ -23,9 +23,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import google.registry.bigquery.BigqueryUtils.FieldType; import google.registry.model.eppoutput.Result.Code; -import google.registry.request.RequestScope; import google.registry.util.Clock; -import java.util.concurrent.TimeUnit; import org.joda.time.DateTime; /** @@ -34,7 +32,6 @@ import org.joda.time.DateTime; * @see BigQueryMetricsEnqueuer */ @AutoValue -@RequestScope public abstract class EppMetric implements BigQueryMetric { static final String TABLE_ID = "eppMetrics"; @@ -84,12 +81,8 @@ public abstract class EppMetric implements BigQueryMetric { ImmutableMap.Builder map = ImmutableMap.builder() .put("requestId", getRequestId()) - .put( - "startTime", - toBigqueryTimestamp(getStartTimestamp().getMillis(), TimeUnit.MILLISECONDS)) - .put( - "endTime", - toBigqueryTimestamp(getEndTimestamp().getMillis(), TimeUnit.MILLISECONDS)) + .put("startTime", toBigqueryTimestamp(getStartTimestamp())) + .put("endTime", toBigqueryTimestamp(getEndTimestamp())) .put("attempts", getAttempts().toString()); // Populate optional values, if present addOptional("commandName", getCommandName(), map); diff --git a/java/google/registry/monitoring/whitebox/VerifyEntityIntegrityStreamer.java b/java/google/registry/monitoring/whitebox/VerifyEntityIntegrityStreamer.java index 4476983f6..f9b35ca76 100644 --- a/java/google/registry/monitoring/whitebox/VerifyEntityIntegrityStreamer.java +++ b/java/google/registry/monitoring/whitebox/VerifyEntityIntegrityStreamer.java @@ -37,13 +37,14 @@ import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import google.registry.bigquery.BigqueryFactory; -import google.registry.config.RegistryEnvironment; +import google.registry.config.ConfigModule.Config; import google.registry.util.Retrier; import java.io.IOException; import java.util.List; import java.util.Map; import java.util.concurrent.Callable; import javax.annotation.Nullable; +import javax.inject.Named; import org.joda.time.DateTime; /** @@ -52,22 +53,21 @@ import org.joda.time.DateTime; @AutoFactory(allowSubclasses = true) public class VerifyEntityIntegrityStreamer { + private final String projectId; + private final BigqueryFactory bigqueryFactory; + private final Supplier idGenerator; + private final Retrier retrier; private final DateTime scanTime; private Bigquery bigquery; - BigqueryFactory bigqueryFactory; - RegistryEnvironment environment; - Retrier retrier; - Supplier idGenerator; - public VerifyEntityIntegrityStreamer( + @Provided @Config("projectId") String projectId, @Provided BigqueryFactory bigqueryFactory, - @Provided RegistryEnvironment environment, @Provided Retrier retrier, - @Provided Supplier idGenerator, + @Provided @Named("insertIdGenerator") Supplier idGenerator, DateTime scanTime) { + this.projectId = projectId; this.bigqueryFactory = bigqueryFactory; - this.environment = environment; this.retrier = retrier; this.idGenerator = idGenerator; this.scanTime = scanTime; @@ -78,9 +78,7 @@ public class VerifyEntityIntegrityStreamer { // BigQuery. private Bigquery getBigquery() throws IOException { if (bigquery == null) { - bigquery = - bigqueryFactory.create( - environment.config().getProjectId(), DATASET, TABLE_ID); + bigquery = bigqueryFactory.create(projectId, DATASET, TABLE_ID); } return bigquery; } @@ -179,7 +177,7 @@ public class VerifyEntityIntegrityStreamer { getBigquery() .tabledata() .insertAll( - environment.config().getProjectId(), + projectId, DATASET, TABLE_ID, new TableDataInsertAllRequest().setRows(rows)); diff --git a/java/google/registry/monitoring/whitebox/WhiteboxModule.java b/java/google/registry/monitoring/whitebox/WhiteboxModule.java index 801f12b1f..6d08f7412 100644 --- a/java/google/registry/monitoring/whitebox/WhiteboxModule.java +++ b/java/google/registry/monitoring/whitebox/WhiteboxModule.java @@ -65,7 +65,8 @@ public class WhiteboxModule { } @Provides - static Supplier provideIdGenerator() { + @Named("insertIdGenerator") + static Supplier provideInsertIdGenerator() { return new Supplier() { @Override public String get() { diff --git a/javatests/google/registry/monitoring/whitebox/BigQueryMetricsEnqueuerTest.java b/javatests/google/registry/monitoring/whitebox/BigQueryMetricsEnqueuerTest.java index 46129d44a..7ce1fe169 100644 --- a/javatests/google/registry/monitoring/whitebox/BigQueryMetricsEnqueuerTest.java +++ b/javatests/google/registry/monitoring/whitebox/BigQueryMetricsEnqueuerTest.java @@ -21,6 +21,7 @@ import static org.mockito.Mockito.when; import com.google.api.services.bigquery.model.TableFieldSchema; import com.google.appengine.api.modules.ModulesService; import com.google.auto.value.AutoValue; +import com.google.common.base.Suppliers; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import google.registry.testing.AppEngineRule; @@ -56,6 +57,7 @@ public class BigQueryMetricsEnqueuerTest { @Before public void setUp() { enqueuer = new BigQueryMetricsEnqueuer(); + enqueuer.idGenerator = Suppliers.ofInstance("laffo"); enqueuer.modulesService = modulesService; when(modulesService.getVersionHostname(Matchers.anyString(), Matchers.anyString())) .thenReturn("1.backend.test.localhost"); @@ -67,7 +69,7 @@ public class BigQueryMetricsEnqueuerTest { TestMetric.create( DateTime.parse("1984-12-18TZ"), DateTime.parse("1984-12-18TZ").plusMillis(1)); - enqueuer.export(metric, "laffo"); + enqueuer.export(metric); assertTasksEnqueued("bigquery-streaming-metrics", new TaskMatcher() diff --git a/javatests/google/registry/monitoring/whitebox/VerifyEntityIntegrityActionTest.java b/javatests/google/registry/monitoring/whitebox/VerifyEntityIntegrityActionTest.java index ae61bded9..19dc2e7ae 100644 --- a/javatests/google/registry/monitoring/whitebox/VerifyEntityIntegrityActionTest.java +++ b/javatests/google/registry/monitoring/whitebox/VerifyEntityIntegrityActionTest.java @@ -43,7 +43,6 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.googlecode.objectify.Key; import google.registry.bigquery.BigqueryFactory; -import google.registry.config.RegistryEnvironment; import google.registry.mapreduce.MapreduceRunner; import google.registry.model.contact.ContactResource; import google.registry.model.domain.DomainResource; @@ -108,8 +107,8 @@ public class VerifyEntityIntegrityActionTest inject.setStaticField(VerifyEntityIntegrityAction.class, "component", component); integrity = new VerifyEntityIntegrityStreamer( + "project-id", bigqueryFactory, - RegistryEnvironment.UNITTEST, new Retrier(new FakeSleeper(new FakeClock()), 1), Suppliers.ofInstance("rowid"), now);