package org.rrd4j.core; import java.io.IOException; import org.junit.Assert; import org.junit.Test; import org.rrd4j.ConsolFun; import org.rrd4j.DsType; import org.rrd4j.core.FetchData; import org.rrd4j.core.FetchRequest; import org.rrd4j.core.RrdBackendFactory; import org.rrd4j.core.RrdDb; import org.rrd4j.core.RrdDef; import org.rrd4j.core.Sample; public class TestArchiveSelection { private final long[] timeStamp1 = new long[] { 920202780, //not returned by rrdtool 920202810, 920202840, 920202870, 920202900, 920202930, 920202960, 920202990, 920203020, 920203050, 920203080, 920203110, 920203140, 920203170, 920203200, 920203230, 920203260, 920203290, 920203320, 920203350, 920203380, 920203410, 920203440, 920203470, 920203500, 920203530, 920203560, 920203590, }; private final long[] timeStamp2 = new long[] { 920202750, //not returned by rrdtool 920202900, 920203050, 920203200, 920203350, 920203500, 920203650, }; private RrdDb getDb() throws IOException { // create RRD definition RrdDef rrdDef = new RrdDef("/test.rrd", 30); rrdDef.setStartTime(920202900); // create datasources rrdDef.addDatasource("counter", DsType.GAUGE,60, Double.NaN, Double.NaN); rrdDef.addDatasource("duration", DsType.GAUGE,60, Double.NaN, Double.NaN); // create archives rrdDef.addArchive(ConsolFun.AVERAGE, 0, 1, 20000); rrdDef.addArchive(ConsolFun.AVERAGE, 0, 5, 200); // create database RrdDb rrdDb = new RrdDb(rrdDef, RrdBackendFactory.getFactory("MEMORY") ); // populate Sample sample = rrdDb.createSample(); sample.setTime(920202928).setValue("counter", 2).setValue("duration", 7).update(); sample.setTime(920202946).setValue("counter", 2).setValue("duration", 11).update(); sample.setTime(920202985).setValue("counter", 2).setValue("duration", 15).update(); sample.setTime(920203002).setValue("counter", 1).setValue("duration", 9).update(); sample.setTime(920203036).setValue("counter", 3).setValue("duration", 33).update(); sample.setTime(920203058).setValue("counter", 1).setValue("duration", 13).update(); sample.setTime(920203103).setValue("counter", 3).setValue("duration", 45).update(); sample.setTime(920203127).setValue("counter", 2).setValue("duration", 35).update(); sample.setTime(920203165).setValue("counter", 3).setValue("duration", 60).update(); sample.setTime(920203198).setValue("counter", 2).setValue("duration", 45).update(); sample.setTime(920203216).setValue("counter", 1).setValue("duration", 24).update(); sample.setTime(920203257).setValue("counter", 2).setValue("duration", 51).update(); sample.setTime(920203282).setValue("counter", 2).setValue("duration", 55).update(); sample.setTime(920203308).setValue("counter", 2).setValue("duration", 59).update(); sample.setTime(920203337).setValue("counter", 2).setValue("duration", 63).update(); sample.setTime(920203355).setValue("counter", 1).setValue("duration", 33).update(); sample.setTime(920203395).setValue("counter", 3).setValue("duration", 105).update(); sample.setTime(920203421).setValue("counter", 2).setValue("duration", 75).update(); sample.setTime(920203454).setValue("counter", 3).setValue("duration", 120).update(); sample.setTime(920203499).setValue("counter", 3).setValue("duration", 129).update(); sample.setTime(920203528).setValue("counter", 3).setValue("duration", 138).update(); // return rrdDb; } @Test public void testFetchDefault() throws Exception { RrdDb rrdDb = getDb(); FetchRequest fetchRequest = rrdDb.createFetchRequest(ConsolFun.AVERAGE, 920202800, 920203565); FetchData fetchData = fetchRequest.fetchData(); System.out.println("Without resolution \n"+fetchData.toString()); Assert.assertArrayEquals("timestamps don't match with no resolution", timeStamp1, fetchData.getTimestamps()); rrdDb.close(); } @Test public void testFetch150() throws Exception { RrdDb rrdDb = getDb(); FetchRequest fetchRequest = rrdDb.createFetchRequest(ConsolFun.AVERAGE, 920202800, 920203565, 150); FetchData fetchData = fetchRequest.fetchData(); System.out.println("With resolution 150s \n"+fetchData.toString()); Assert.assertArrayEquals("timestamps don't match with resolution 150", timeStamp2, fetchData.getTimestamps()); rrdDb.close(); } }