diff --git a/flink-runtime/src/test/java/org/apache/flink/runtime/checkpoint/CheckpointStatsTrackerTest.java b/flink-runtime/src/test/java/org/apache/flink/runtime/checkpoint/CheckpointStatsTrackerTest.java index e7a1d7b20e9ae49e71be7fe176c6ccfc93960762..0d19cd522def5c50af7d9ee8870220a44dba990d 100644 --- a/flink-runtime/src/test/java/org/apache/flink/runtime/checkpoint/CheckpointStatsTrackerTest.java +++ b/flink-runtime/src/test/java/org/apache/flink/runtime/checkpoint/CheckpointStatsTrackerTest.java @@ -23,22 +23,17 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Map; -import org.apache.flink.metrics.CharacterFilter; -import org.apache.flink.metrics.Counter; import org.apache.flink.metrics.Gauge; -import org.apache.flink.metrics.Histogram; -import org.apache.flink.metrics.Meter; import org.apache.flink.metrics.MetricGroup; import org.apache.flink.metrics.groups.UnregisteredMetricsGroup; import org.apache.flink.runtime.executiongraph.ExecutionJobVertex; @@ -287,7 +282,17 @@ public class CheckpointStatsTrackerTest { */ @Test public void testMetricsRegistration() throws Exception { - MetricGroup metricGroup = mock(MetricGroup.class); + final Collection registeredGaugeNames = new ArrayList<>(); + + MetricGroup metricGroup = new UnregisteredMetricsGroup() { + @Override + public > G gauge(String name, G gauge) { + if (gauge != null) { + registeredGaugeNames.add(name); + } + return gauge; + } + }; ExecutionJobVertex jobVertex = mock(ExecutionJobVertex.class); when(jobVertex.getJobVertexId()).thenReturn(new JobVertexID()); @@ -299,18 +304,19 @@ public class CheckpointStatsTrackerTest { mock(CheckpointCoordinatorConfiguration.class), metricGroup); - verify(metricGroup, times(1)).gauge(eq(CheckpointStatsTracker.NUMBER_OF_CHECKPOINTS_METRIC), any(Gauge.class)); - verify(metricGroup, times(1)).gauge(eq(CheckpointStatsTracker.NUMBER_OF_IN_PROGRESS_CHECKPOINTS_METRIC), any(Gauge.class)); - verify(metricGroup, times(1)).gauge(eq(CheckpointStatsTracker.NUMBER_OF_COMPLETED_CHECKPOINTS_METRIC), any(Gauge.class)); - verify(metricGroup, times(1)).gauge(eq(CheckpointStatsTracker.NUMBER_OF_FAILED_CHECKPOINTS_METRIC), any(Gauge.class)); - verify(metricGroup, times(1)).gauge(eq(CheckpointStatsTracker.LATEST_RESTORED_CHECKPOINT_TIMESTAMP_METRIC), any(Gauge.class)); - verify(metricGroup, times(1)).gauge(eq(CheckpointStatsTracker.LATEST_COMPLETED_CHECKPOINT_SIZE_METRIC), any(Gauge.class)); - verify(metricGroup, times(1)).gauge(eq(CheckpointStatsTracker.LATEST_COMPLETED_CHECKPOINT_DURATION_METRIC), any(Gauge.class)); - verify(metricGroup, times(1)).gauge(eq(CheckpointStatsTracker.LATEST_COMPLETED_CHECKPOINT_ALIGNMENT_BUFFERED_METRIC), any(Gauge.class)); - verify(metricGroup, times(1)).gauge(eq(CheckpointStatsTracker.LATEST_COMPLETED_CHECKPOINT_EXTERNAL_PATH_METRIC), any(Gauge.class)); - // Make sure this test is adjusted when further metrics are added - verify(metricGroup, times(9)).gauge(any(String.class), any(Gauge.class)); + assertTrue(registeredGaugeNames.containsAll(Arrays.asList( + CheckpointStatsTracker.NUMBER_OF_CHECKPOINTS_METRIC, + CheckpointStatsTracker.NUMBER_OF_IN_PROGRESS_CHECKPOINTS_METRIC, + CheckpointStatsTracker.NUMBER_OF_COMPLETED_CHECKPOINTS_METRIC, + CheckpointStatsTracker.NUMBER_OF_FAILED_CHECKPOINTS_METRIC, + CheckpointStatsTracker.LATEST_RESTORED_CHECKPOINT_TIMESTAMP_METRIC, + CheckpointStatsTracker.LATEST_COMPLETED_CHECKPOINT_SIZE_METRIC, + CheckpointStatsTracker.LATEST_COMPLETED_CHECKPOINT_DURATION_METRIC, + CheckpointStatsTracker.LATEST_COMPLETED_CHECKPOINT_ALIGNMENT_BUFFERED_METRIC, + CheckpointStatsTracker.LATEST_COMPLETED_CHECKPOINT_EXTERNAL_PATH_METRIC + ))); + assertEquals(9, registeredGaugeNames.size()); } /** @@ -322,92 +328,12 @@ public class CheckpointStatsTrackerTest { public void testMetricsAreUpdated() throws Exception { final Map> registeredGauges = new HashMap<>(); - MetricGroup metricGroup = new MetricGroup() { - @Override - public Counter counter(int name) { - throw new UnsupportedOperationException("Not expected in this test"); - } - - @Override - public Counter counter(String name) { - throw new UnsupportedOperationException("Not expected in this test"); - } - - @Override - public C counter(int name, C counter) { - throw new UnsupportedOperationException("Not expected in this test"); - } - - @Override - public C counter(String name, C counter) { - throw new UnsupportedOperationException("Not expected in this test"); - } - - @Override - public > G gauge(int name, G gauge) { - throw new UnsupportedOperationException("Not expected in this test"); - } - + MetricGroup metricGroup = new UnregisteredMetricsGroup() { @Override public > G gauge(String name, G gauge) { registeredGauges.put(name, gauge); return gauge; } - - @Override - public H histogram(String name, H histogram) { - throw new UnsupportedOperationException("Not expected in this test"); - } - - @Override - public H histogram(int name, H histogram) { - throw new UnsupportedOperationException("Not expected in this test"); - } - - @Override - public M meter(String name, M meter) { - throw new UnsupportedOperationException("Not expected in this test"); - } - - @Override - public M meter(int name, M meter) { - throw new UnsupportedOperationException("Not expected in this test"); - } - - @Override - public MetricGroup addGroup(int name) { - throw new UnsupportedOperationException("Not expected in this test"); - } - - @Override - public MetricGroup addGroup(String name) { - throw new UnsupportedOperationException("Not expected in this test"); - } - - @Override - public MetricGroup addGroup(String key, String value) { - throw new UnsupportedOperationException("Not expected in this test"); - } - - @Override - public String[] getScopeComponents() { - throw new UnsupportedOperationException("Not expected in this test"); - } - - @Override - public Map getAllVariables() { - throw new UnsupportedOperationException("Not expected in this test"); - } - - @Override - public String getMetricIdentifier(String metricName) { - throw new UnsupportedOperationException("Not expected in this test"); - } - - @Override - public String getMetricIdentifier(String metricName, CharacterFilter filter) { - throw new UnsupportedOperationException("Not expected in this test"); - } }; ExecutionJobVertex jobVertex = mock(ExecutionJobVertex.class);