private static void saveMetricsConfigFile() { if (!metricsConfigSaved) { new org.apache.hadoop.metrics2.impl.ConfigBuilder() .add("azure-file-system.sink.azuretestcollector.class", StandardCollector.class.getName()) .save("hadoop-metrics2-azure-file-system.properties"); metricsConfigSaved = true; } }
/** * Include patterns should take precedence over exclude patterns */ @Test public void includeShouldOverrideExclude() { SubsetConfiguration c = new ConfigBuilder() .add("p.include", "foo") .add("p.include.tags", "foo:f") .add("p.exclude", "foo") .add("p.exclude.tags", "foo:f").subset("p"); shouldAccept(c, "foo"); shouldAccept(c, Arrays.asList(tag("foo", "", "f"))); shouldAccept(c, mockMetricsRecord("foo", Arrays.asList( tag("foo", "", "f")))); }
@Test public void testShouldCreateDatagramSocketByDefault() throws Exception { SubsetConfiguration conf = new ConfigBuilder() .subset("test.sink.ganglia"); GangliaSink30 gangliaSink = new GangliaSink30(); gangliaSink.init(conf); DatagramSocket socket = gangliaSink.getDatagramSocket(); assertFalse("Did not create DatagramSocket", socket == null || socket instanceof MulticastSocket); }
@Test public void testGangliaMetrics2() throws Exception { ConfigBuilder cb = new ConfigBuilder().add("*.period", 120) .add("test.sink.gsink30.context", "test") // filter out only "test" .add("test.sink.gsink31.context", "test") // filter out only "test" .save(TestMetricsConfig.getTestFilename("hadoop-metrics2-test")); gsink30.init(cb.subset("test")); MockDatagramSocket mockds30 = new MockDatagramSocket(); GangliaMetricsTestHelper.setDatagramSocket(gsink30, mockds30); gsink31.init(cb.subset("test")); MockDatagramSocket mockds31 = new MockDatagramSocket(); GangliaMetricsTestHelper.setDatagramSocket(gsink31, mockds31);
LOG.debug("--- t2 instance i1:"+ t2i1); Configuration t1expected1 = new ConfigBuilder() .add("name", "p1.t1.i1.name").config; Configuration t1expected42 = new ConfigBuilder() .add("bar", "p1.t1.42.bar").config; Configuration t2expected1 = new ConfigBuilder() .add("foo", "p1.t2.i1.foo").config;
@Test public void testGangliaMetrics2() throws Exception { ConfigBuilder cb = new ConfigBuilder().add("*.period", 120) .add("test.sink.gsink30.context", "test") // filter out only "test" .add("test.sink.gsink31.context", "test") // filter out only "test" .save(TestMetricsConfig.getTestFilename("hadoop-metrics2-test")); gsink30.init(cb.subset("test")); MockDatagramSocket mockds30 = new MockDatagramSocket(); GangliaMetricsTestHelper.setDatagramSocket(gsink30, mockds30); gsink31.init(cb.subset("test")); MockDatagramSocket mockds31 = new MockDatagramSocket(); GangliaMetricsTestHelper.setDatagramSocket(gsink31, mockds31);
LOG.debug("--- t2 instance i1:"+ t2i1); Configuration t1expected1 = new ConfigBuilder() .add("name", "p1.t1.i1.name").config; Configuration t1expected42 = new ConfigBuilder() .add("bar", "p1.t1.42.bar").config; Configuration t2expected1 = new ConfigBuilder() .add("foo", "p1.t2.i1.foo").config;
@Test public void testShouldCreateDatagramSocketByDefault() throws Exception { SubsetConfiguration conf = new ConfigBuilder() .subset("test.sink.ganglia"); GangliaSink30 gangliaSink = new GangliaSink30(); gangliaSink.init(conf); DatagramSocket socket = gangliaSink.getDatagramSocket(); assertFalse("Did not create DatagramSocket", socket == null || socket instanceof MulticastSocket); }
private static void saveMetricsConfigFile() throws IOException { if (!metricsConfigSaved) { String testFilename = TestMetricsConfig.getTestFilename( "hadoop-metrics2-azure-file-system"); File dest = new File(testFilename).getCanonicalFile(); dest.getParentFile().mkdirs(); new org.apache.hadoop.metrics2.impl.ConfigBuilder() .add("azure-file-system.sink.azuretestcollector.class", StandardCollector.class.getName()) .save(testFilename); metricsConfigSaved = true; } }
/** * Include patterns should take precedence over exclude patterns */ @Test public void includeShouldOverrideExclude() { SubsetConfiguration c = new ConfigBuilder() .add("p.include", "foo") .add("p.include.tags", "foo:f") .add("p.exclude", "foo") .add("p.exclude.tags", "foo:f").subset("p"); shouldAccept(c, "foo"); shouldAccept(c, Arrays.asList(tag("foo", "", "f"))); shouldAccept(c, mockMetricsRecord("foo", Arrays.asList( tag("foo", "", "f")))); }
/** * Filters should default to accept */ @Test public void emptyConfigShouldAccept() { SubsetConfiguration empty = new ConfigBuilder().subset(""); shouldAccept(empty, "anything"); shouldAccept(empty, Arrays.asList(tag("key", "desc", "value"))); shouldAccept(empty, mockMetricsRecord("anything", Arrays.asList( tag("key", "desc", "value")))); }
/** * Common use cases * @throws Exception */ @Test public void testCommon() throws Exception { String filename = getTestFilename("test-metrics2"); new ConfigBuilder() .add("*.foo", "default foo") .add("p1.*.bar", "p1 default bar") .add("p1.t1.*.bar", "p1.t1 default bar") .add("p1.t1.i1.name", "p1.t1.i1.name") .add("p1.t1.42.bar", "p1.t1.42.bar") .add("p1.t2.i1.foo", "p1.t2.i1.foo") .add("p2.*.foo", "p2 default foo") .save(filename); MetricsConfig mc = MetricsConfig.create("p1", filename); LOG.debug("mc:"+ mc); Configuration expected = new ConfigBuilder() .add("*.bar", "p1 default bar") .add("t1.*.bar", "p1.t1 default bar") .add("t1.i1.name", "p1.t1.i1.name") .add("t1.42.bar", "p1.t1.42.bar") .add("t2.i1.foo", "p1.t2.i1.foo") .config; assertEq(expected, mc); testInstances(mc); }
@Test public void testShouldCreateDatagramSocketIfMulticastIsDisabled() throws Exception { SubsetConfiguration conf = new ConfigBuilder() .add("test.sink.ganglia.multicast", false) .subset("test.sink.ganglia"); GangliaSink30 gangliaSink = new GangliaSink30(); gangliaSink.init(conf); DatagramSocket socket = gangliaSink.getDatagramSocket(); assertFalse("Did not create DatagramSocket", socket == null || socket instanceof MulticastSocket); }
/** * Filters should default to accept */ @Test public void emptyConfigShouldAccept() { SubsetConfiguration empty = new ConfigBuilder().subset(""); shouldAccept(empty, "anything"); shouldAccept(empty, Arrays.asList(tag("key", "desc", "value"))); shouldAccept(empty, mockMetricsRecord("anything", Arrays.asList( tag("key", "desc", "value")))); }
/** * Common use cases * @throws Exception */ @Test public void testCommon() throws Exception { String filename = getTestFilename("test-metrics2"); new ConfigBuilder() .add("*.foo", "default foo") .add("p1.*.bar", "p1 default bar") .add("p1.t1.*.bar", "p1.t1 default bar") .add("p1.t1.i1.name", "p1.t1.i1.name") .add("p1.t1.42.bar", "p1.t1.42.bar") .add("p1.t2.i1.foo", "p1.t2.i1.foo") .add("p2.*.foo", "p2 default foo") .save(filename); MetricsConfig mc = MetricsConfig.create("p1", filename); LOG.debug("mc:"+ mc); Configuration expected = new ConfigBuilder() .add("*.bar", "p1 default bar") .add("t1.*.bar", "p1.t1 default bar") .add("t1.i1.name", "p1.t1.i1.name") .add("t1.42.bar", "p1.t1.42.bar") .add("t2.i1.foo", "p1.t2.i1.foo") .config; assertEq(expected, mc); testInstances(mc); }
@Test public void testShouldCreateDatagramSocketIfMulticastIsDisabled() throws Exception { SubsetConfiguration conf = new ConfigBuilder() .add("test.sink.ganglia.multicast", false) .subset("test.sink.ganglia"); GangliaSink30 gangliaSink = new GangliaSink30(); gangliaSink.init(conf); DatagramSocket socket = gangliaSink.getDatagramSocket(); assertFalse("Did not create DatagramSocket", socket == null || socket instanceof MulticastSocket); }
/** * Test the config file load order * @throws Exception */ @Test public void testLoadFirst() throws Exception { String filename = getTestFilename("hadoop-metrics2-p1"); new ConfigBuilder().add("p1.foo", "p1foo").save(filename); MetricsConfig mc = MetricsConfig.create("p1"); MetricsConfig mc2 = MetricsConfig.create("p1", "na1", "na2", filename); Configuration expected = new ConfigBuilder().add("foo", "p1foo").config; assertEq(expected, mc); assertEq(expected, mc2); }
@Test public void testShouldSetMulticastSocketTtl() throws Exception { SubsetConfiguration conf = new ConfigBuilder() .add("test.sink.ganglia.multicast", true) .add("test.sink.ganglia.multicast.ttl", 3) .subset("test.sink.ganglia"); GangliaSink30 gangliaSink = new GangliaSink30(); gangliaSink.init(conf); DatagramSocket socket = gangliaSink.getDatagramSocket(); assertTrue("Did not create MulticastSocket", socket != null && socket instanceof MulticastSocket); int ttl = ((MulticastSocket) socket).getTimeToLive(); assertEquals("Did not set TTL", 3, ttl); } }
/** * Test the config file load order * @throws Exception */ @Test public void testLoadFirst() throws Exception { String filename = getTestFilename("hadoop-metrics2-p1"); new ConfigBuilder().add("p1.foo", "p1foo").save(filename); MetricsConfig mc = MetricsConfig.create("p1"); MetricsConfig mc2 = MetricsConfig.create("p1", "na1", "na2", filename); Configuration expected = new ConfigBuilder().add("foo", "p1foo").config; assertEq(expected, mc); assertEq(expected, mc2); }
@Test public void testShouldSetMulticastSocketTtl() throws Exception { SubsetConfiguration conf = new ConfigBuilder() .add("test.sink.ganglia.multicast", true) .add("test.sink.ganglia.multicast.ttl", 3) .subset("test.sink.ganglia"); GangliaSink30 gangliaSink = new GangliaSink30(); gangliaSink.init(conf); DatagramSocket socket = gangliaSink.getDatagramSocket(); assertTrue("Did not create MulticastSocket", socket != null && socket instanceof MulticastSocket); int ttl = ((MulticastSocket) socket).getTimeToLive(); assertEquals("Did not set TTL", 3, ttl); } }