use of org.apache.flink.metrics.SimpleCounter in project flink by apache.
the class ScheduledDropwizardReporterTest method testMetricCleanup.
/**
* This test verifies that metrics are properly added and removed to/from the
* ScheduledDropwizardReporter and the underlying Dropwizard MetricRegistry.
*/
@Test
void testMetricCleanup() {
TestingScheduledDropwizardReporter rep = new TestingScheduledDropwizardReporter();
MetricGroup mp = new UnregisteredMetricsGroup();
Counter c = new SimpleCounter();
Meter m = new TestMeter();
Histogram h = new TestHistogram();
Gauge<?> g = () -> null;
rep.notifyOfAddedMetric(c, "counter", mp);
assertThat(rep.getCounters()).hasSize(1);
assertThat(rep.registry.getCounters()).hasSize(1);
rep.notifyOfAddedMetric(m, "meter", mp);
assertThat(rep.getMeters()).hasSize(1);
assertThat(rep.registry.getMeters()).hasSize(1);
rep.notifyOfAddedMetric(h, "histogram", mp);
assertThat(rep.getHistograms()).hasSize(1);
assertThat(rep.registry.getHistograms()).hasSize(1);
rep.notifyOfAddedMetric(g, "gauge", mp);
assertThat(rep.getGauges()).hasSize(1);
assertThat(rep.registry.getGauges()).hasSize(1);
rep.notifyOfRemovedMetric(c, "counter", mp);
assertThat(rep.getCounters()).hasSize(0);
assertThat(rep.registry.getCounters()).hasSize(0);
rep.notifyOfRemovedMetric(m, "meter", mp);
assertThat(rep.getMeters()).hasSize(0);
assertThat(rep.registry.getMeters()).hasSize(0);
rep.notifyOfRemovedMetric(h, "histogram", mp);
assertThat(rep.getHistograms()).hasSize(0);
assertThat(rep.registry.getHistograms()).hasSize(0);
rep.notifyOfRemovedMetric(g, "gauge", mp);
assertThat(rep.getGauges()).hasSize(0);
assertThat(rep.registry.getGauges()).hasSize(0);
}
use of org.apache.flink.metrics.SimpleCounter in project flink by apache.
the class InfluxdbReporterTest method testMetricReporting.
@Test
void testMetricReporting() {
String retentionPolicy = "one_hour";
InfluxDB.ConsistencyLevel consistencyLevel = InfluxDB.ConsistencyLevel.ANY;
InfluxdbReporter reporter = createReporter(retentionPolicy, consistencyLevel);
String metricName = "TestCounter";
Counter counter = new SimpleCounter();
reporter.notifyOfAddedMetric(counter, metricName, metricGroup);
counter.inc(42);
stubFor(post(urlPathEqualTo("/write")).willReturn(aResponse().withStatus(200)));
reporter.report();
verify(postRequestedFor(urlPathEqualTo("/write")).withQueryParam("db", equalTo(TEST_INFLUXDB_DB)).withQueryParam("rp", equalTo(retentionPolicy)).withQueryParam("consistency", equalTo(consistencyLevel.name().toLowerCase())).withHeader("Content-Type", containing("text/plain")).withRequestBody(containing("taskmanager_" + metricName + ",host=" + METRIC_HOSTNAME + " count=42i")));
}
use of org.apache.flink.metrics.SimpleCounter in project flink by apache.
the class FlinkMetricContainerTest method testCounterMonitoringInfoUpdate.
@Test
public void testCounterMonitoringInfoUpdate() {
SimpleCounter userCounter = new SimpleCounter();
when(metricGroup.counter("myCounter")).thenReturn(userCounter);
MonitoringInfo userMonitoringInfo = new SimpleMonitoringInfoBuilder().setUrn(MonitoringInfoConstants.Urns.USER_SUM_INT64).setLabel(MonitoringInfoConstants.Labels.NAMESPACE, DEFAULT_NAMESPACE).setLabel(MonitoringInfoConstants.Labels.NAME, "myCounter").setLabel(MonitoringInfoConstants.Labels.PTRANSFORM, "anyPTransform").setInt64SumValue(111).build();
assertThat(userCounter.getCount(), is(0L));
container.updateMetrics("step", ImmutableList.of(userMonitoringInfo));
assertThat(userCounter.getCount(), is(111L));
}
use of org.apache.flink.metrics.SimpleCounter in project flink by apache.
the class FlinkMetricContainerTest method testMeterMonitoringInfoUpdate.
@Test
public void testMeterMonitoringInfoUpdate() {
MeterView userMeter = new MeterView(new SimpleCounter());
when(metricGroup.meter(eq("myMeter"), any(Meter.class))).thenReturn(userMeter);
String namespace = "[\"key\", \"value\", \"MetricGroupType.key\", \"MetricGroupType.value\", \"60\"]";
MonitoringInfo userMonitoringInfo = new SimpleMonitoringInfoBuilder().setUrn(MonitoringInfoConstants.Urns.USER_SUM_INT64).setLabel(MonitoringInfoConstants.Labels.NAMESPACE, namespace).setLabel(MonitoringInfoConstants.Labels.NAME, "myMeter").setLabel(MonitoringInfoConstants.Labels.PTRANSFORM, "anyPTransform").setInt64SumValue(111).build();
assertThat(userMeter.getCount(), is(0L));
assertThat(userMeter.getRate(), is(0.0));
container.updateMetrics("step", ImmutableList.of(userMonitoringInfo));
userMeter.update();
assertThat(userMeter.getCount(), is(111L));
// 111 div 60 = 1.85
assertThat(userMeter.getRate(), is(1.85));
}
use of org.apache.flink.metrics.SimpleCounter in project flink by apache.
the class StreamMultipleInputProcessorFactory method create.
@SuppressWarnings({ "unchecked", "rawtypes" })
public static StreamMultipleInputProcessor create(TaskInvokable ownerTask, CheckpointedInputGate[] checkpointedInputGates, StreamConfig.InputConfig[] configuredInputs, IOManager ioManager, MemoryManager memoryManager, TaskIOMetricGroup ioMetricGroup, Counter mainOperatorRecordsIn, MultipleInputStreamOperator<?> mainOperator, WatermarkGauge[] inputWatermarkGauges, StreamConfig streamConfig, Configuration taskManagerConfig, Configuration jobConfig, ExecutionConfig executionConfig, ClassLoader userClassloader, OperatorChain<?, ?> operatorChain, InflightDataRescalingDescriptor inflightDataRescalingDescriptor, Function<Integer, StreamPartitioner<?>> gatePartitioners, TaskInfo taskInfo) {
checkNotNull(operatorChain);
List<Input> operatorInputs = mainOperator.getInputs();
int inputsCount = operatorInputs.size();
StreamOneInputProcessor<?>[] inputProcessors = new StreamOneInputProcessor[inputsCount];
Counter networkRecordsIn = new SimpleCounter();
ioMetricGroup.reuseRecordsInputCounter(networkRecordsIn);
checkState(configuredInputs.length == inputsCount, "Number of configured inputs in StreamConfig [%s] doesn't match the main operator's number of inputs [%s]", configuredInputs.length, inputsCount);
StreamTaskInput[] inputs = new StreamTaskInput[inputsCount];
for (int i = 0; i < inputsCount; i++) {
StreamConfig.InputConfig configuredInput = configuredInputs[i];
if (configuredInput instanceof StreamConfig.NetworkInputConfig) {
StreamConfig.NetworkInputConfig networkInput = (StreamConfig.NetworkInputConfig) configuredInput;
inputs[i] = StreamTaskNetworkInputFactory.create(checkpointedInputGates[networkInput.getInputGateIndex()], networkInput.getTypeSerializer(), ioManager, new StatusWatermarkValve(checkpointedInputGates[networkInput.getInputGateIndex()].getNumberOfInputChannels()), i, inflightDataRescalingDescriptor, gatePartitioners, taskInfo);
} else if (configuredInput instanceof StreamConfig.SourceInputConfig) {
StreamConfig.SourceInputConfig sourceInput = (StreamConfig.SourceInputConfig) configuredInput;
inputs[i] = operatorChain.getSourceTaskInput(sourceInput);
} else {
throw new UnsupportedOperationException("Unknown input type: " + configuredInput);
}
}
InputSelectable inputSelectable = mainOperator instanceof InputSelectable ? (InputSelectable) mainOperator : null;
StreamConfig.InputConfig[] inputConfigs = streamConfig.getInputs(userClassloader);
boolean anyRequiresSorting = Arrays.stream(inputConfigs).anyMatch(StreamConfig::requiresSorting);
if (anyRequiresSorting) {
if (inputSelectable != null) {
throw new IllegalStateException("The InputSelectable interface is not supported with sorting inputs");
}
StreamTaskInput[] sortingInputs = IntStream.range(0, inputsCount).filter(idx -> requiresSorting(inputConfigs[idx])).mapToObj(idx -> inputs[idx]).toArray(StreamTaskInput[]::new);
KeySelector[] sortingInputKeySelectors = IntStream.range(0, inputsCount).filter(idx -> requiresSorting(inputConfigs[idx])).mapToObj(idx -> streamConfig.getStatePartitioner(idx, userClassloader)).toArray(KeySelector[]::new);
TypeSerializer[] sortingInputKeySerializers = IntStream.range(0, inputsCount).filter(idx -> requiresSorting(inputConfigs[idx])).mapToObj(idx -> streamConfig.getTypeSerializerIn(idx, userClassloader)).toArray(TypeSerializer[]::new);
StreamTaskInput[] passThroughInputs = IntStream.range(0, inputsCount).filter(idx -> !requiresSorting(inputConfigs[idx])).mapToObj(idx -> inputs[idx]).toArray(StreamTaskInput[]::new);
SelectableSortingInputs selectableSortingInputs = MultiInputSortingDataInput.wrapInputs(ownerTask, sortingInputs, sortingInputKeySelectors, sortingInputKeySerializers, streamConfig.getStateKeySerializer(userClassloader), passThroughInputs, memoryManager, ioManager, executionConfig.isObjectReuseEnabled(), streamConfig.getManagedMemoryFractionOperatorUseCaseOfSlot(ManagedMemoryUseCase.OPERATOR, taskManagerConfig, userClassloader), jobConfig, executionConfig);
StreamTaskInput<?>[] sortedInputs = selectableSortingInputs.getSortedInputs();
StreamTaskInput<?>[] passedThroughInputs = selectableSortingInputs.getPassThroughInputs();
int sortedIndex = 0;
int passThroughIndex = 0;
for (int i = 0; i < inputs.length; i++) {
if (requiresSorting(inputConfigs[i])) {
inputs[i] = sortedInputs[sortedIndex];
sortedIndex++;
} else {
inputs[i] = passedThroughInputs[passThroughIndex];
passThroughIndex++;
}
}
inputSelectable = selectableSortingInputs.getInputSelectable();
}
for (int i = 0; i < inputsCount; i++) {
StreamConfig.InputConfig configuredInput = configuredInputs[i];
if (configuredInput instanceof StreamConfig.NetworkInputConfig) {
StreamTaskNetworkOutput dataOutput = new StreamTaskNetworkOutput<>(operatorChain.getFinishedOnRestoreInputOrDefault(operatorInputs.get(i)), inputWatermarkGauges[i], mainOperatorRecordsIn, networkRecordsIn);
inputProcessors[i] = new StreamOneInputProcessor(inputs[i], dataOutput, operatorChain);
} else if (configuredInput instanceof StreamConfig.SourceInputConfig) {
StreamConfig.SourceInputConfig sourceInput = (StreamConfig.SourceInputConfig) configuredInput;
OperatorChain.ChainedSource chainedSource = operatorChain.getChainedSource(sourceInput);
inputProcessors[i] = new StreamOneInputProcessor(inputs[i], new StreamTaskSourceOutput(chainedSource.getSourceOutput(), inputWatermarkGauges[i], chainedSource.getSourceTaskInput().getOperator().getSourceMetricGroup()), operatorChain);
} else {
throw new UnsupportedOperationException("Unknown input type: " + configuredInput);
}
}
return new StreamMultipleInputProcessor(new MultipleInputSelectionHandler(inputSelectable, inputsCount), inputProcessors);
}
Aggregations