use of org.apache.flink.runtime.metrics.CollectingMetricsReporter in project flink by apache.
the class AbstractMetricGroupTest method testLogicalScopeCachingForMultipleReporters.
@Test
@SuppressWarnings("unchecked")
public void testLogicalScopeCachingForMultipleReporters() throws Exception {
String counterName = "1";
CollectingMetricsReporter reporter1 = new CollectingMetricsReporter(FILTER_B);
CollectingMetricsReporter reporter2 = new CollectingMetricsReporter(FILTER_C);
MetricRegistryImpl testRegistry = new MetricRegistryImpl(MetricRegistryTestUtils.defaultMetricRegistryConfiguration(), Arrays.asList(ReporterSetup.forReporter("test1", reporter1), ReporterSetup.forReporter("test2", reporter2)));
try {
MetricGroup tmGroup = TaskManagerMetricGroup.createTaskManagerMetricGroup(testRegistry, "host", new ResourceID("id")).addGroup("B").addGroup("C");
tmGroup.counter(counterName);
assertEquals("Reporters were not properly instantiated", 2, testRegistry.getReporters().size());
assertEquals("taskmanager-X-C", ((FrontMetricGroup<AbstractMetricGroup<?>>) reporter1.findAdded(counterName).group).getLogicalScope(reporter1, '-'));
assertEquals("taskmanager,B,X", ((FrontMetricGroup<AbstractMetricGroup<?>>) reporter2.findAdded(counterName).group).getLogicalScope(reporter2, ','));
} finally {
testRegistry.shutdown().get();
}
}
use of org.apache.flink.runtime.metrics.CollectingMetricsReporter in project flink by apache.
the class AbstractMetricGroupTest method testScopeCachingForMultipleReporters.
@Test
public void testScopeCachingForMultipleReporters() throws Exception {
String counterName = "1";
Configuration config = new Configuration();
config.setString(MetricOptions.SCOPE_NAMING_TM, "A.B.C.D");
MetricConfig metricConfig1 = new MetricConfig();
metricConfig1.setProperty(ConfigConstants.METRICS_REPORTER_SCOPE_DELIMITER, "-");
MetricConfig metricConfig2 = new MetricConfig();
metricConfig2.setProperty(ConfigConstants.METRICS_REPORTER_SCOPE_DELIMITER, "!");
config.setString(ConfigConstants.METRICS_REPORTER_PREFIX + "test1." + ConfigConstants.METRICS_REPORTER_CLASS_SUFFIX, CollectingMetricsReporter.class.getName());
config.setString(ConfigConstants.METRICS_REPORTER_PREFIX + "test1." + ConfigConstants.METRICS_REPORTER_SCOPE_DELIMITER, "-");
config.setString(ConfigConstants.METRICS_REPORTER_PREFIX + "test2." + ConfigConstants.METRICS_REPORTER_CLASS_SUFFIX, CollectingMetricsReporter.class.getName());
config.setString(ConfigConstants.METRICS_REPORTER_PREFIX + "test2." + ConfigConstants.METRICS_REPORTER_SCOPE_DELIMITER, "!");
CollectingMetricsReporter reporter1 = new CollectingMetricsReporter(FILTER_B);
CollectingMetricsReporter reporter2 = new CollectingMetricsReporter(FILTER_C);
MetricRegistryImpl testRegistry = new MetricRegistryImpl(MetricRegistryTestUtils.fromConfiguration(config), Arrays.asList(ReporterSetup.forReporter("test1", metricConfig1, reporter1), ReporterSetup.forReporter("test2", metricConfig2, reporter2)));
try {
MetricGroup tmGroup = TaskManagerMetricGroup.createTaskManagerMetricGroup(testRegistry, "host", new ResourceID("id"));
tmGroup.counter(counterName);
assertEquals("Reporters were not properly instantiated", 2, testRegistry.getReporters().size());
{
// verify reporter1
MetricGroupAndName nameAndGroup = reporter1.getAddedMetrics().stream().filter(nag -> nag.name.equals(counterName)).findAny().get();
String metricName = nameAndGroup.name;
MetricGroup group = nameAndGroup.group;
// the first call determines which filter is applied to all future
// calls; in
// this case
// no filter is used at all
assertEquals("A-B-C-D-1", group.getMetricIdentifier(metricName));
// from now on the scope string is cached and should not be reliant
// on the
// given filter
assertEquals("A-B-C-D-1", group.getMetricIdentifier(metricName, FILTER_C));
assertEquals("A-B-C-D-1", group.getMetricIdentifier(metricName, reporter1));
// the metric name however is still affected by the filter as it is
// not
// cached
assertEquals("A-B-C-D-4", group.getMetricIdentifier(metricName, input -> input.replace("B", "X").replace(counterName, "4")));
}
{
// verify reporter2
MetricGroupAndName nameAndGroup = reporter2.getAddedMetrics().stream().filter(nag -> nag.name.equals(counterName)).findAny().get();
String metricName = nameAndGroup.name;
MetricGroup group = nameAndGroup.group;
// the first call determines which filter is applied to all future calls
assertEquals("A!B!X!D!1", group.getMetricIdentifier(metricName, reporter2));
// from now on the scope string is cached and should not be reliant on the given
// filter
assertEquals("A!B!X!D!1", group.getMetricIdentifier(metricName));
assertEquals("A!B!X!D!1", group.getMetricIdentifier(metricName, FILTER_C));
// the metric name however is still affected by the filter as it is not cached
assertEquals("A!B!X!D!3", group.getMetricIdentifier(metricName, input -> input.replace("A", "X").replace(counterName, "3")));
}
} finally {
testRegistry.shutdown().get();
}
}
Aggregations