Search in sources :

Example 11 with MetricsSystemImpl

use of org.apache.hadoop.metrics2.impl.MetricsSystemImpl in project hadoop by apache.

the class TestGangliaMetrics method testGangliaMetrics2.

@Test
public void testGangliaMetrics2() throws Exception {
    // Setting long interval to avoid periodic publishing.
    // We manually publish metrics by MeticsSystem#publishMetricsNow here.
    ConfigBuilder cb = new ConfigBuilder().add("*.period", 120).add(testNamePrefix + ".sink.gsink30.context", // filter out only "test"
    testNamePrefix).add(testNamePrefix + ".sink.gsink31.context", // filter out only "test"
    testNamePrefix).save(TestMetricsConfig.getTestFilename("hadoop-metrics2-" + testNamePrefix));
    MetricsSystemImpl ms = new MetricsSystemImpl(testNamePrefix);
    ms.start();
    TestSource s1 = ms.register("s1", "s1 desc", new TestSource("s1rec"));
    s1.c1.incr();
    s1.xxx.incr();
    s1.g1.set(2);
    s1.yyy.incr(2);
    s1.s1.add(0);
    final int expectedCountFromGanglia30 = expectedMetrics.length;
    final int expectedCountFromGanglia31 = 2 * expectedMetrics.length;
    // Setup test for GangliaSink30
    AbstractGangliaSink gsink30 = new GangliaSink30();
    gsink30.init(cb.subset(testNamePrefix));
    MockDatagramSocket mockds30 = new MockDatagramSocket();
    GangliaMetricsTestHelper.setDatagramSocket(gsink30, mockds30);
    // Setup test for GangliaSink31
    AbstractGangliaSink gsink31 = new GangliaSink31();
    gsink31.init(cb.subset(testNamePrefix));
    MockDatagramSocket mockds31 = new MockDatagramSocket();
    GangliaMetricsTestHelper.setDatagramSocket(gsink31, mockds31);
    // register the sinks
    ms.register("gsink30", "gsink30 desc", gsink30);
    ms.register("gsink31", "gsink31 desc", gsink31);
    // publish the metrics
    ms.publishMetricsNow();
    ms.stop();
    // check GanfliaSink30 data
    checkMetrics(mockds30.getCapturedSend(), expectedCountFromGanglia30);
    // check GanfliaSink31 data
    checkMetrics(mockds31.getCapturedSend(), expectedCountFromGanglia31);
}
Also used : AbstractGangliaSink(org.apache.hadoop.metrics2.sink.ganglia.AbstractGangliaSink) GangliaSink31(org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31) GangliaSink30(org.apache.hadoop.metrics2.sink.ganglia.GangliaSink30) Test(org.junit.Test)

Example 12 with MetricsSystemImpl

use of org.apache.hadoop.metrics2.impl.MetricsSystemImpl in project hadoop by apache.

the class TestMetricsSystemImpl method testInitFirstVerifyCallBacks.

@Test
public void testInitFirstVerifyCallBacks() throws Exception {
    DefaultMetricsSystem.shutdown();
    new ConfigBuilder().add("*.period", 8).add("test.sink.test.class", TestSink.class.getName()).add("test.*.source.filter.exclude", "s0").add("test.source.s1.metric.filter.exclude", "X*").add("test.sink.sink1.metric.filter.exclude", "Y*").add("test.sink.sink2.metric.filter.exclude", "Y*").save(TestMetricsConfig.getTestFilename("hadoop-metrics2-test"));
    MetricsSystemImpl ms = new MetricsSystemImpl("Test");
    ms.start();
    ms.register("s0", "s0 desc", new TestSource("s0rec"));
    TestSource s1 = ms.register("s1", "s1 desc", new TestSource("s1rec"));
    s1.c1.incr();
    s1.xxx.incr();
    s1.g1.set(2);
    s1.yyy.incr(2);
    s1.s1.add(0);
    MetricsSink sink1 = mock(MetricsSink.class);
    MetricsSink sink2 = mock(MetricsSink.class);
    ms.registerSink("sink1", "sink1 desc", sink1);
    ms.registerSink("sink2", "sink2 desc", sink2);
    // publish the metrics
    ms.publishMetricsNow();
    try {
        verify(sink1, timeout(200).times(2)).putMetrics(r1.capture());
        verify(sink2, timeout(200).times(2)).putMetrics(r2.capture());
    } finally {
        ms.stop();
        ms.shutdown();
    }
    //When we call stop, at most two sources will be consumed by each sink thread.
    List<MetricsRecord> mr1 = r1.getAllValues();
    List<MetricsRecord> mr2 = r2.getAllValues();
    checkMetricsRecords(mr1);
    assertEquals("output", mr1, mr2);
}
Also used : MetricsSink(org.apache.hadoop.metrics2.MetricsSink) MetricsRecord(org.apache.hadoop.metrics2.MetricsRecord) Test(org.junit.Test)

Example 13 with MetricsSystemImpl

use of org.apache.hadoop.metrics2.impl.MetricsSystemImpl in project hadoop by apache.

the class TestMetricsSystemImpl method testRegisterSourceWithoutName.

@Test
public void testRegisterSourceWithoutName() {
    MetricsSystem ms = new MetricsSystemImpl();
    TestSource ts = new TestSource("ts");
    TestSource2 ts2 = new TestSource2("ts2");
    ms.register(ts);
    ms.register(ts2);
    ms.init("TestMetricsSystem");
    // if metrics source is registered without name,
    // the class name will be used as the name
    MetricsSourceAdapter sa = ((MetricsSystemImpl) ms).getSourceAdapter("TestSource");
    assertNotNull(sa);
    MetricsSourceAdapter sa2 = ((MetricsSystemImpl) ms).getSourceAdapter("TestSource2");
    assertNotNull(sa2);
    ms.shutdown();
}
Also used : DefaultMetricsSystem(org.apache.hadoop.metrics2.lib.DefaultMetricsSystem) MetricsSystem(org.apache.hadoop.metrics2.MetricsSystem) Test(org.junit.Test)

Example 14 with MetricsSystemImpl

use of org.apache.hadoop.metrics2.impl.MetricsSystemImpl in project hadoop by apache.

the class TestMetricsSystemImpl method testRegisterDupError.

@Test(expected = MetricsException.class)
public void testRegisterDupError() {
    MetricsSystem ms = new MetricsSystemImpl("test");
    TestSource ts = new TestSource("ts");
    ms.register(ts);
    ms.register(ts);
}
Also used : DefaultMetricsSystem(org.apache.hadoop.metrics2.lib.DefaultMetricsSystem) MetricsSystem(org.apache.hadoop.metrics2.MetricsSystem) Test(org.junit.Test)

Example 15 with MetricsSystemImpl

use of org.apache.hadoop.metrics2.impl.MetricsSystemImpl in project hadoop by apache.

the class TestMetricsSystemImpl method testRegisterDups.

@Test
public void testRegisterDups() {
    MetricsSystem ms = new MetricsSystemImpl();
    TestSource ts1 = new TestSource("ts1");
    TestSource ts2 = new TestSource("ts2");
    ms.register("ts1", "", ts1);
    MetricsSource s1 = ms.getSource("ts1");
    assertNotNull(s1);
    // should work when metrics system is not started
    ms.register("ts1", "", ts2);
    MetricsSource s2 = ms.getSource("ts1");
    assertNotNull(s2);
    assertNotSame(s1, s2);
    ms.shutdown();
}
Also used : MetricsSource(org.apache.hadoop.metrics2.MetricsSource) DefaultMetricsSystem(org.apache.hadoop.metrics2.lib.DefaultMetricsSystem) MetricsSystem(org.apache.hadoop.metrics2.MetricsSystem) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)14 MetricsSystemImpl (org.apache.hadoop.metrics2.impl.MetricsSystemImpl)8 MetricsSystem (org.apache.hadoop.metrics2.MetricsSystem)7 DefaultMetricsSystem (org.apache.hadoop.metrics2.lib.DefaultMetricsSystem)5 MetricsSink (org.apache.hadoop.metrics2.MetricsSink)4 MetricsRecord (org.apache.hadoop.metrics2.MetricsRecord)3 MetricsSource (org.apache.hadoop.metrics2.MetricsSource)2 ConfigBuilder (org.apache.hadoop.metrics2.impl.ConfigBuilder)2 Before (org.junit.Before)2 Predicate (com.google.common.base.Predicate)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 FileInputStream (java.io.FileInputStream)1 InputStream (java.io.InputStream)1 Pattern (java.util.regex.Pattern)1 Nullable (javax.annotation.Nullable)1 AbstractMetric (org.apache.hadoop.metrics2.AbstractMetric)1 AbstractGangliaSink (org.apache.hadoop.metrics2.sink.ganglia.AbstractGangliaSink)1 GangliaSink30 (org.apache.hadoop.metrics2.sink.ganglia.GangliaSink30)1 GangliaSink31 (org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31)1 ApplicationAttemptId (org.apache.hadoop.yarn.api.records.ApplicationAttemptId)1