/** *************************************************************************************** */ private void createJmxCollector(String mbeanAttributeName, String dataSourceType, int sampleRate) throws Exception { dataSourceName = mbeanAttributeName.toLowerCase(); rrdPath = dataSourceName + ".rrd"; jmxCollector = new JmxCollector(); jmxCollector.setMbeanName("java.lang:type=Runtime"); jmxCollector.setMbeanAttributeName(mbeanAttributeName); jmxCollector.setRrdPath(rrdPath); jmxCollector.setRrdDataSourceName(dataSourceName); jmxCollector.setRrdDataSourceType(dataSourceType); jmxCollector.setSampleRate(sampleRate); jmxCollector.setMinimumUpdateTimeDelta(0); jmxCollector.setMetricsDir(TEST_DIR); // Simulates what Spring beans container would do jmxCollector.configureCollector(); }
@Test(expected = CollectorException.class) public void testUnsupportedDataSourceType() throws IOException, CollectorException { String mbeanAttributeName = "Uptime"; dataSourceName = mbeanAttributeName.toLowerCase(); rrdPath = dataSourceName + ".rrd"; jmxCollector = new JmxCollector(); jmxCollector.setMbeanName("java.lang:type=Runtime"); jmxCollector.setMbeanAttributeName(mbeanAttributeName); jmxCollector.setRrdPath(rrdPath); jmxCollector.setRrdDataSourceName(dataSourceName); jmxCollector.setRrdDataSourceType("DERIVE"); jmxCollector.setSampleRate(1); jmxCollector.setMetricsDir(TEST_DIR); // Simulates what Spring beans container would do jmxCollector.configureCollector(); }
@Test(expected = CollectorException.class) public void testNullDataSourceName() throws IOException, CollectorException { String mbeanAttributeName = "Uptime"; dataSourceName = null; rrdPath = "uptime.rrd"; jmxCollector = new JmxCollector(); jmxCollector.setMbeanName("java.lang:type=Runtime"); jmxCollector.setMbeanAttributeName(mbeanAttributeName); jmxCollector.setRrdPath(rrdPath); jmxCollector.setRrdDataSourceName(dataSourceName); jmxCollector.setRrdDataSourceType(JmxCollector.COUNTER_DATA_SOURCE_TYPE); jmxCollector.setSampleRate(1); jmxCollector.setMetricsDir(TEST_DIR); // Simulates what Spring beans container would do jmxCollector.configureCollector(); }
@Test(expected = CollectorException.class) public void testInaccessibleMbeanAttribute() throws IOException, CollectorException { String mbeanAttributeName = "Invalid"; dataSourceName = mbeanAttributeName.toLowerCase(); rrdPath = dataSourceName + ".rrd"; jmxCollector = new JmxCollector(); jmxCollector.setMbeanName("java.lang:type=Runtime"); jmxCollector.setMbeanAttributeName(mbeanAttributeName); jmxCollector.setRrdPath(rrdPath); jmxCollector.setRrdDataSourceName(dataSourceName); jmxCollector.setRrdDataSourceType(JmxCollector.COUNTER_DATA_SOURCE_TYPE); jmxCollector.setSampleRate(1); jmxCollector.setMetricsDir(TEST_DIR); jmxCollector.setMbeanTimeoutMillis(50); // Simulates what Spring beans container would do jmxCollector.configureCollector(); }
@Test @Ignore public void testRrdFileCreationWhenRrdFileAlreadyExists() throws Exception { // Set sample rate to 1 sec (default is 60 seconds) so that unit test runs quickly int sampleRate = 1; createJmxCollector("Uptime", JmxCollector.COUNTER_DATA_SOURCE_TYPE, sampleRate); String rrdFilename1 = jmxCollector.getRrdPath(); assertThat(rrdFilename1, is(TEST_DIR + rrdPath)); rrdDb = new RrdDb(rrdFilename1); assertThat(rrdDb, not(nullValue())); assertThat(rrdDb.isClosed(), is(false)); // Attempt to create again LOGGER.debug("Creating JmxCollector again ..."); dataSourceName = "uptime"; rrdPath = dataSourceName + ".rrd"; JmxCollector jmxCollector2 = new JmxCollector(); jmxCollector2.setMbeanName("java.lang:type=Runtime"); jmxCollector2.setMbeanAttributeName("Uptime"); jmxCollector2.setRrdPath(rrdPath); jmxCollector2.setRrdDataSourceName(dataSourceName); jmxCollector2.setRrdDataSourceType(JmxCollector.COUNTER_DATA_SOURCE_TYPE); jmxCollector2.setSampleRate(sampleRate); jmxCollector2.setMetricsDir(TEST_DIR); // Simulates what Spring beans container would do jmxCollector2.configureCollector(); // Verify the 2 JMX Collectors are using the same RRD file String rrdFilename2 = jmxCollector2.getRrdPath(); assertThat(rrdFilename2, is(TEST_DIR + rrdPath)); assertThat(rrdFilename1, equalTo(rrdFilename2)); jmxCollector2.destroy(); }