Search in sources :

Example 1 with CollectingMetricsReporter

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();
    }
}
Also used : ResourceID(org.apache.flink.runtime.clusterframework.types.ResourceID) MetricGroup(org.apache.flink.metrics.MetricGroup) MetricRegistryImpl(org.apache.flink.runtime.metrics.MetricRegistryImpl) CollectingMetricsReporter(org.apache.flink.runtime.metrics.CollectingMetricsReporter) Test(org.junit.Test)

Example 2 with CollectingMetricsReporter

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();
    }
}
Also used : MetricConfig(org.apache.flink.metrics.MetricConfig) Arrays(java.util.Arrays) MetricConfig(org.apache.flink.metrics.MetricConfig) MetricRegistryImpl(org.apache.flink.runtime.metrics.MetricRegistryImpl) CharacterFilter(org.apache.flink.metrics.CharacterFilter) AtomicReference(java.util.concurrent.atomic.AtomicReference) ReporterSetup(org.apache.flink.runtime.metrics.ReporterSetup) BlockerSync(org.apache.flink.core.testutils.BlockerSync) TestingMetricRegistry(org.apache.flink.runtime.metrics.util.TestingMetricRegistry) MetricRegistry(org.apache.flink.runtime.metrics.MetricRegistry) ScopeFormat(org.apache.flink.runtime.metrics.scope.ScopeFormat) Map(java.util.Map) ConfigConstants(org.apache.flink.configuration.ConfigConstants) TestLogger(org.apache.flink.util.TestLogger) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) ResourceID(org.apache.flink.runtime.clusterframework.types.ResourceID) QueryScopeInfo(org.apache.flink.runtime.metrics.dump.QueryScopeInfo) IsNot.not(org.hamcrest.core.IsNot.not) CollectingMetricsReporter(org.apache.flink.runtime.metrics.CollectingMetricsReporter) MetricRegistryTestUtils(org.apache.flink.runtime.metrics.MetricRegistryTestUtils) MetricGroupAndName(org.apache.flink.runtime.metrics.CollectingMetricsReporter.MetricGroupAndName) Configuration(org.apache.flink.configuration.Configuration) NoOpMetricRegistry(org.apache.flink.runtime.metrics.NoOpMetricRegistry) Assert.assertTrue(org.junit.Assert.assertTrue) Test(org.junit.Test) MetricOptions(org.apache.flink.configuration.MetricOptions) IsMapContaining(org.hamcrest.collection.IsMapContaining) MetricGroup(org.apache.flink.metrics.MetricGroup) Collections(java.util.Collections) Assert.assertEquals(org.junit.Assert.assertEquals) Configuration(org.apache.flink.configuration.Configuration) ResourceID(org.apache.flink.runtime.clusterframework.types.ResourceID) MetricGroupAndName(org.apache.flink.runtime.metrics.CollectingMetricsReporter.MetricGroupAndName) MetricGroup(org.apache.flink.metrics.MetricGroup) MetricRegistryImpl(org.apache.flink.runtime.metrics.MetricRegistryImpl) CollectingMetricsReporter(org.apache.flink.runtime.metrics.CollectingMetricsReporter) Test(org.junit.Test)

Aggregations

MetricGroup (org.apache.flink.metrics.MetricGroup)2 ResourceID (org.apache.flink.runtime.clusterframework.types.ResourceID)2 CollectingMetricsReporter (org.apache.flink.runtime.metrics.CollectingMetricsReporter)2 MetricRegistryImpl (org.apache.flink.runtime.metrics.MetricRegistryImpl)2 Test (org.junit.Test)2 Arrays (java.util.Arrays)1 Collections (java.util.Collections)1 Map (java.util.Map)1 AtomicReference (java.util.concurrent.atomic.AtomicReference)1 ConfigConstants (org.apache.flink.configuration.ConfigConstants)1 Configuration (org.apache.flink.configuration.Configuration)1 MetricOptions (org.apache.flink.configuration.MetricOptions)1 BlockerSync (org.apache.flink.core.testutils.BlockerSync)1 CharacterFilter (org.apache.flink.metrics.CharacterFilter)1 MetricConfig (org.apache.flink.metrics.MetricConfig)1 MetricGroupAndName (org.apache.flink.runtime.metrics.CollectingMetricsReporter.MetricGroupAndName)1 MetricRegistry (org.apache.flink.runtime.metrics.MetricRegistry)1 MetricRegistryTestUtils (org.apache.flink.runtime.metrics.MetricRegistryTestUtils)1 NoOpMetricRegistry (org.apache.flink.runtime.metrics.NoOpMetricRegistry)1 ReporterSetup (org.apache.flink.runtime.metrics.ReporterSetup)1