@Test public void testManyUpdatesInRapidSuccession() throws Exception { createJmxCollector("Uptime", JmxCollector.COUNTER_DATA_SOURCE_TYPE, 1); // Set high update delta time so that samples will be skipped jmxCollector.setMinimumUpdateTimeDelta(3); // Sleep long enough for some data to be collected long numRrdSamples = 4; Thread.sleep(numRrdSamples * 1000); // Expected skip count is 2 because first sample is always accepted and // num samples is one more than minimum update time delta long expectedSampleSkipCount = numRrdSamples - 2; assertThat(jmxCollector.getSampleSkipCount(), is(expectedSampleSkipCount)); }
/** *************************************************************************************** */ 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(); }