mirror of
https://github.com/google/nomulus.git
synced 2025-05-04 05:57:51 +02:00
Test AsyncFlowMetrics without mock
Instead of verifying interactions on the mocks, we instead assert on the real test subject directly. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=218209556
This commit is contained in:
parent
d2ca67460c
commit
e39cc04110
3 changed files with 17 additions and 39 deletions
|
@ -29,7 +29,6 @@ import com.google.monitoring.metrics.IncrementableMetric;
|
||||||
import com.google.monitoring.metrics.LabelDescriptor;
|
import com.google.monitoring.metrics.LabelDescriptor;
|
||||||
import com.google.monitoring.metrics.MetricRegistryImpl;
|
import com.google.monitoring.metrics.MetricRegistryImpl;
|
||||||
import google.registry.util.Clock;
|
import google.registry.util.Clock;
|
||||||
import google.registry.util.NonFinalForTesting;
|
|
||||||
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;
|
||||||
|
@ -67,9 +66,8 @@ public class AsyncFlowMetrics {
|
||||||
LabelDescriptor.create("operation_type", "The type of async flow operation."),
|
LabelDescriptor.create("operation_type", "The type of async flow operation."),
|
||||||
LabelDescriptor.create("result", "The result of the async flow operation."));
|
LabelDescriptor.create("result", "The result of the async flow operation."));
|
||||||
|
|
||||||
@NonFinalForTesting
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static IncrementableMetric asyncFlowOperationCounts =
|
static final IncrementableMetric asyncFlowOperationCounts =
|
||||||
MetricRegistryImpl.getDefault()
|
MetricRegistryImpl.getDefault()
|
||||||
.newIncrementableMetric(
|
.newIncrementableMetric(
|
||||||
"/async_flows/operations",
|
"/async_flows/operations",
|
||||||
|
@ -77,9 +75,8 @@ public class AsyncFlowMetrics {
|
||||||
"count",
|
"count",
|
||||||
LABEL_DESCRIPTORS);
|
LABEL_DESCRIPTORS);
|
||||||
|
|
||||||
@NonFinalForTesting
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static EventMetric asyncFlowOperationProcessingTime =
|
static final EventMetric asyncFlowOperationProcessingTime =
|
||||||
MetricRegistryImpl.getDefault()
|
MetricRegistryImpl.getDefault()
|
||||||
.newEventMetric(
|
.newEventMetric(
|
||||||
"/async_flows/processing_time",
|
"/async_flows/processing_time",
|
||||||
|
@ -88,9 +85,8 @@ public class AsyncFlowMetrics {
|
||||||
LABEL_DESCRIPTORS,
|
LABEL_DESCRIPTORS,
|
||||||
DEFAULT_FITTER);
|
DEFAULT_FITTER);
|
||||||
|
|
||||||
@NonFinalForTesting
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static EventMetric asyncFlowBatchSize =
|
static final EventMetric asyncFlowBatchSize =
|
||||||
MetricRegistryImpl.getDefault()
|
MetricRegistryImpl.getDefault()
|
||||||
.newEventMetric(
|
.newEventMetric(
|
||||||
"/async_flows/batch_size",
|
"/async_flows/batch_size",
|
||||||
|
|
|
@ -47,6 +47,7 @@ java_library(
|
||||||
"@com_google_flogger_system_backend",
|
"@com_google_flogger_system_backend",
|
||||||
"@com_google_guava",
|
"@com_google_guava",
|
||||||
"@com_google_guava_testlib",
|
"@com_google_guava_testlib",
|
||||||
|
"@com_google_monitoring_client_contrib",
|
||||||
"@com_google_monitoring_client_metrics",
|
"@com_google_monitoring_client_metrics",
|
||||||
"@com_google_re2j",
|
"@com_google_re2j",
|
||||||
"@com_google_truth",
|
"@com_google_truth",
|
||||||
|
|
|
@ -14,19 +14,14 @@
|
||||||
|
|
||||||
package google.registry.flows.async;
|
package google.registry.flows.async;
|
||||||
|
|
||||||
|
import static com.google.monitoring.metrics.contrib.DistributionMetricSubject.assertThat;
|
||||||
|
import static com.google.monitoring.metrics.contrib.LongMetricSubject.assertThat;
|
||||||
import static google.registry.flows.async.AsyncFlowMetrics.OperationResult.SUCCESS;
|
import static google.registry.flows.async.AsyncFlowMetrics.OperationResult.SUCCESS;
|
||||||
import static google.registry.flows.async.AsyncFlowMetrics.OperationType.CONTACT_AND_HOST_DELETE;
|
import static google.registry.flows.async.AsyncFlowMetrics.OperationType.CONTACT_AND_HOST_DELETE;
|
||||||
import static org.mockito.Mockito.mock;
|
|
||||||
import static org.mockito.Mockito.verify;
|
|
||||||
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
|
||||||
|
|
||||||
import com.google.monitoring.metrics.EventMetric;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import com.google.monitoring.metrics.IncrementableMetric;
|
|
||||||
import google.registry.testing.FakeClock;
|
import google.registry.testing.FakeClock;
|
||||||
import google.registry.testing.InjectRule;
|
|
||||||
import google.registry.testing.ShardableTestCase;
|
import google.registry.testing.ShardableTestCase;
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Rule;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.junit.runners.JUnit4;
|
import org.junit.runners.JUnit4;
|
||||||
|
@ -35,26 +30,8 @@ import org.junit.runners.JUnit4;
|
||||||
@RunWith(JUnit4.class)
|
@RunWith(JUnit4.class)
|
||||||
public class AsyncFlowMetricsTest extends ShardableTestCase {
|
public class AsyncFlowMetricsTest extends ShardableTestCase {
|
||||||
|
|
||||||
@Rule public final InjectRule inject = new InjectRule();
|
private final FakeClock clock = new FakeClock();
|
||||||
|
private final AsyncFlowMetrics asyncFlowMetrics = new AsyncFlowMetrics(clock);
|
||||||
private final IncrementableMetric asyncFlowOperationCounts = mock(IncrementableMetric.class);
|
|
||||||
private final EventMetric asyncFlowOperationProcessingTime = mock(EventMetric.class);
|
|
||||||
private final EventMetric asyncFlowBatchSize = mock(EventMetric.class);
|
|
||||||
private AsyncFlowMetrics asyncFlowMetrics;
|
|
||||||
private FakeClock clock;
|
|
||||||
|
|
||||||
@Before
|
|
||||||
public void setUp() {
|
|
||||||
clock = new FakeClock();
|
|
||||||
asyncFlowMetrics = new AsyncFlowMetrics(clock);
|
|
||||||
inject.setStaticField(
|
|
||||||
AsyncFlowMetrics.class, "asyncFlowOperationCounts", asyncFlowOperationCounts);
|
|
||||||
inject.setStaticField(
|
|
||||||
AsyncFlowMetrics.class,
|
|
||||||
"asyncFlowOperationProcessingTime",
|
|
||||||
asyncFlowOperationProcessingTime);
|
|
||||||
inject.setStaticField(AsyncFlowMetrics.class, "asyncFlowBatchSize", asyncFlowBatchSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRecordAsyncFlowResult_calculatesDurationMillisCorrectly() {
|
public void testRecordAsyncFlowResult_calculatesDurationMillisCorrectly() {
|
||||||
|
@ -62,9 +39,13 @@ public class AsyncFlowMetricsTest extends ShardableTestCase {
|
||||||
CONTACT_AND_HOST_DELETE,
|
CONTACT_AND_HOST_DELETE,
|
||||||
SUCCESS,
|
SUCCESS,
|
||||||
clock.nowUtc().minusMinutes(10).minusSeconds(5).minusMillis(566));
|
clock.nowUtc().minusMinutes(10).minusSeconds(5).minusMillis(566));
|
||||||
verify(asyncFlowOperationCounts).increment("contactAndHostDelete", "success");
|
assertThat(AsyncFlowMetrics.asyncFlowOperationCounts)
|
||||||
verify(asyncFlowOperationProcessingTime).record(605566.0, "contactAndHostDelete", "success");
|
.hasValueForLabels(1, "contactAndHostDelete", "success")
|
||||||
verifyNoMoreInteractions(asyncFlowOperationCounts);
|
.and()
|
||||||
verifyNoMoreInteractions(asyncFlowOperationProcessingTime);
|
.hasNoOtherValues();
|
||||||
|
assertThat(AsyncFlowMetrics.asyncFlowOperationProcessingTime)
|
||||||
|
.hasDataSetForLabels(ImmutableSet.of(605566.0), "contactAndHostDelete", "success")
|
||||||
|
.and()
|
||||||
|
.hasNoOtherValues();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue