/** Increment the counter by the given amount. */ @Override public void inc(long n) { MetricsContainer container = MetricsEnvironment.getCurrentContainer(); if (container != null) { container.getCounter(name).inc(n); } }
@Override public void update(long value) { MetricsContainer container = MetricsEnvironment.getCurrentContainer(); if (container != null) { container.getDistribution(name).update(value); } }
@Override public void set(long value) { MetricsContainer container = MetricsEnvironment.getCurrentContainer(); if (container != null) { container.getGauge(name).set(value); } }
if (metric.hasCounterData()) { BeamFnApi.CounterData counterData = metric.getCounterData(); org.apache.beam.sdk.metrics.Counter counter = metricsContainer.getCounter(metricName); if (counterData.getValueCase() == BeamFnApi.CounterData.ValueCase.INT64_VALUE) { counter.inc(counterData.getInt64Value()); Distribution distribution = metricsContainer.getDistribution(metricName); if (distributionData.hasIntDistributionData()) { BeamFnApi.IntDistributionData intDistributionData =
@Test public void testUsesAppropriateMetricsContainer() { Counter counter = Metrics.counter("ns", "name"); MetricsContainer c1 = Mockito.mock(MetricsContainer.class); MetricsContainer c2 = Mockito.mock(MetricsContainer.class); Counter counter1 = Mockito.mock(Counter.class); Counter counter2 = Mockito.mock(Counter.class); when(c1.getCounter(MetricName.named("ns", "name"))).thenReturn(counter1); when(c2.getCounter(MetricName.named("ns", "name"))).thenReturn(counter2); MetricsEnvironment.setCurrentContainer(c1); counter.inc(); MetricsEnvironment.setCurrentContainer(c2); counter.dec(); MetricsEnvironment.setCurrentContainer(null); verify(counter1).inc(1L); verify(counter2).inc(-1L); verifyNoMoreInteractions(counter1, counter2); }
@Test public void testDistributionToCell() { MetricsContainer mockContainer = Mockito.mock(MetricsContainer.class); Distribution mockDistribution = Mockito.mock(Distribution.class); when(mockContainer.getDistribution(METRIC_NAME)).thenReturn(mockDistribution); Distribution distribution = Metrics.distribution(NS, NAME); MetricsEnvironment.setCurrentContainer(mockContainer); distribution.update(5L); verify(mockDistribution).update(5L); distribution.update(36L); distribution.update(1L); verify(mockDistribution).update(36L); verify(mockDistribution).update(1L); }
@Test public void testGauge() { FlinkMetricContainer.FlinkGauge flinkGauge = new FlinkMetricContainer.FlinkGauge(GaugeResult.empty()); when(metricGroup.gauge(eq("namespace.name"), anyObject())).thenReturn(flinkGauge); FlinkMetricContainer container = new FlinkMetricContainer(runtimeContext); MetricsContainer step = container.getMetricsContainer("step"); MetricName metricName = MetricName.named("namespace", "name"); Gauge gauge = step.getGauge(metricName); assertThat(flinkGauge.getValue(), is(GaugeResult.empty())); // first set will install the mocked gauge container.updateMetrics("step"); gauge.set(1); gauge.set(42); container.updateMetrics("step"); assertThat(flinkGauge.getValue().getValue(), is(42L)); }
@Test public void testCounterToCell() { MetricsContainer mockContainer = Mockito.mock(MetricsContainer.class); Counter mockCounter = Mockito.mock(Counter.class); when(mockContainer.getCounter(METRIC_NAME)).thenReturn(mockCounter); Counter counter = Metrics.counter(NS, NAME); MetricsEnvironment.setCurrentContainer(mockContainer); counter.inc(); verify(mockCounter).inc(1); counter.inc(47L); verify(mockCounter).inc(47); counter.dec(5L); verify(mockCounter).inc(-5); } }
@Test public void testDistribution() { FlinkMetricContainer.FlinkDistributionGauge flinkGauge = new FlinkMetricContainer.FlinkDistributionGauge(DistributionResult.IDENTITY_ELEMENT); when(metricGroup.gauge(eq("namespace.name"), anyObject())).thenReturn(flinkGauge); FlinkMetricContainer container = new FlinkMetricContainer(runtimeContext); MetricsContainer step = container.getMetricsContainer("step"); MetricName metricName = MetricName.named("namespace", "name"); Distribution distribution = step.getDistribution(metricName); assertThat(flinkGauge.getValue(), is(DistributionResult.IDENTITY_ELEMENT)); // first set will install the mocked distribution container.updateMetrics("step"); distribution.update(42); distribution.update(-23); distribution.update(0); distribution.update(1); container.updateMetrics("step"); assertThat(flinkGauge.getValue().getMax(), is(42L)); assertThat(flinkGauge.getValue().getMin(), is(-23L)); assertThat(flinkGauge.getValue().getCount(), is(4L)); assertThat(flinkGauge.getValue().getSum(), is(20L)); assertThat(flinkGauge.getValue().getMean(), is(5.0)); } }
@Test public void testCounter() { SimpleCounter flinkCounter = new SimpleCounter(); when(metricGroup.counter("namespace.name")).thenReturn(flinkCounter); FlinkMetricContainer container = new FlinkMetricContainer(runtimeContext); MetricsContainer step = container.getMetricsContainer("step"); MetricName metricName = MetricName.named("namespace", "name"); Counter counter = step.getCounter(metricName); counter.inc(); counter.inc(); assertThat(flinkCounter.getCount(), is(0L)); container.updateMetrics("step"); assertThat(flinkCounter.getCount(), is(2L)); }