package org.rrd4j; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.IOException; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.rrd4j.ConsolFun; import org.rrd4j.DsType; import org.rrd4j.core.FetchData; import org.rrd4j.core.FetchRequest; import org.rrd4j.core.RrdDb; import org.rrd4j.core.RrdDef; import org.rrd4j.core.Sample; import org.rrd4j.core.Util; import org.rrd4j.graph.RrdGraph; import org.rrd4j.graph.RrdGraphDef; /** * The code from https://github.com/rrd4j/rrd4j/wiki/Tutorial, to be sure that it compiles and run. * @author Fabrice Bacchella * */ public class TutorialTest { @Rule public TemporaryFolder testFolder = new TemporaryFolder(); private String root; @Before public void set() { try { root = testFolder.getRoot().getCanonicalPath(); } catch (IOException e) { throw new RuntimeException(e); } } @Test public void testCode1() throws IOException { RrdDef rrdDef = new RrdDef(root + "/test.rrd"); rrdDef.setStartTime(920804400L); rrdDef.addDatasource("speed", DsType.COUNTER, 600, Double.NaN, Double.NaN); rrdDef.addArchive(ConsolFun.AVERAGE, 0.5, 1, 24); rrdDef.addArchive(ConsolFun.AVERAGE, 0.5, 6, 10); RrdDb rrdDb = new RrdDb(rrdDef); rrdDb.close(); } @Test public void testCode2() throws IOException { testCode1(); RrdDb rrdDb = new RrdDb(root + "/test.rrd"); Sample sample = rrdDb.createSample(); sample.setAndUpdate("920804700:12345"); sample.setAndUpdate("920805000:12357"); sample.setAndUpdate("920805300:12363"); sample.setAndUpdate("920805600:12363"); sample.setAndUpdate("920805900:12363"); sample.setAndUpdate("920806200:12373"); sample.setAndUpdate("920806500:12383"); sample.setAndUpdate("920806800:12393"); sample.setAndUpdate("920807100:12399"); sample.setAndUpdate("920807400:12405"); sample.setAndUpdate("920807700:12411"); sample.setAndUpdate("920808000:12415"); sample.setAndUpdate("920808300:12420"); sample.setAndUpdate("920808600:12422"); sample.setAndUpdate("920808900:12423"); rrdDb.close(); } @Test public void testCode3() throws IOException { testCode1(); RrdDb rrdDb = new RrdDb(root + "/test.rrd"); FetchRequest fetchRequest = rrdDb.createFetchRequest(ConsolFun.AVERAGE, 920804400L, 920809200L); FetchData fetchData = fetchRequest.fetchData(); fetchData.dump(); rrdDb.close(); } @Test public void testCode4() throws IOException { testCode1(); RrdGraphDef graphDef = new RrdGraphDef(); graphDef.setTimeSpan(920804400L, 920808000L); graphDef.datasource("myspeed", root + "/test.rrd", "speed", ConsolFun.AVERAGE); graphDef.line("myspeed", new Color(0xFF, 0, 0), null, 2); graphDef.setFilename(root + "/speed.gif"); RrdGraph graph = new RrdGraph(graphDef); BufferedImage bi = new BufferedImage(100,100,BufferedImage.TYPE_INT_RGB); graph.render(bi.getGraphics()); } @Test public void testCode5() throws IOException { testCode1(); RrdGraphDef graphDef = new RrdGraphDef(); graphDef.setTimeSpan(920804400L, 920808000L); graphDef.setVerticalLabel("m/s"); graphDef.datasource("myspeed", root + "/test.rrd", "speed", ConsolFun.AVERAGE); graphDef.datasource("realspeed", "myspeed,1000,*"); graphDef.line("realspeed", new Color(0xFF, 0, 0), null, 2); graphDef.setFilename("./speed2.gif"); RrdGraph graph = new RrdGraph(graphDef); BufferedImage bi = new BufferedImage(100,100,BufferedImage.TYPE_INT_RGB); graph.render(bi.getGraphics()); } @Test public void testCode6() throws IOException { testCode1(); RrdGraphDef graphDef = new RrdGraphDef(); graphDef.setTimeSpan(920804400L, 920808000L); graphDef.setVerticalLabel("km/h"); graphDef.datasource("myspeed", root + "/test.rrd", "speed", ConsolFun.AVERAGE); graphDef.datasource("kmh", "myspeed,3600,*"); graphDef.datasource("fast", "kmh,100,GT,kmh,0,IF"); graphDef.datasource("good", "kmh,100,GT,0,kmh,IF"); graphDef.area("good", new Color(0, 0xFF, 0), "Good speed"); graphDef.area("fast", new Color(0xFF, 0, 0), "Too fast"); graphDef.hrule(100, new Color(0, 0, 0xFF), "Maximum allowed"); graphDef.setFilename(root + "/speed3.gif"); RrdGraph graph = new RrdGraph(graphDef); BufferedImage bi = new BufferedImage(100,100,BufferedImage.TYPE_INT_RGB); graph.render(bi.getGraphics()); } @Test public void testCode7() throws IOException { testCode1(); RrdGraphDef graphDef = new RrdGraphDef(); graphDef.setTimeSpan(920804400L, 920808000L); graphDef.setVerticalLabel("km/h"); graphDef.datasource("myspeed", root + "/test.rrd", "speed", ConsolFun.AVERAGE); graphDef.datasource("kmh", "myspeed,3600,*"); graphDef.datasource("fast", "kmh,100,GT,100,0,IF"); graphDef.datasource("over", "kmh,100,GT,kmh,100,-,0,IF"); graphDef.datasource("good", "kmh,100,GT,0,kmh,IF"); graphDef.area("good", new Color(0, 0xFF, 0), "Good speed"); graphDef.area("fast", new Color(0x55, 0, 0), "Too fast"); graphDef.stack("over", new Color(0xFF, 0, 0), "Over speed"); graphDef.hrule(100, new Color(0, 0, 0xFF), "Maximum allowed"); graphDef.setFilename(root + "/speed4.gif"); RrdGraph graph = new RrdGraph(graphDef); BufferedImage bi = new BufferedImage(100,100,BufferedImage.TYPE_INT_RGB); graph.render(bi.getGraphics()); } @Test public void testCode8() throws IOException { RrdDef rrdDef = new RrdDef(root + "/myrouter.rrd"); rrdDef.addDatasource("input", DsType.COUNTER, 600, Double.NaN, Double.NaN); rrdDef.addDatasource("output", DsType.COUNTER, 600, Double.NaN, Double.NaN); rrdDef.addArchive(ConsolFun.AVERAGE, 0.5, 1, 600); rrdDef.addArchive(ConsolFun.AVERAGE, 0.5, 6, 700); rrdDef.addArchive(ConsolFun.AVERAGE, 0.5, 24, 775); rrdDef.addArchive(ConsolFun.AVERAGE, 0.5, 288, 797); rrdDef.addArchive(ConsolFun.MAX, 0.5, 1, 600); rrdDef.addArchive(ConsolFun.MAX, 0.5, 6, 700); rrdDef.addArchive(ConsolFun.MAX, 0.5, 24, 775); rrdDef.addArchive(ConsolFun.MAX, 0.5, 288, 797); RrdDb rrdDb = new RrdDb(rrdDef); rrdDb.close(); } @Test public void testCode9() throws IOException { RrdDef rrdDef = new RrdDef(root + "/myrouter.rrd"); rrdDef.addDatasource("DS:input:COUNTER:600:U:U"); rrdDef.addDatasource("DS:output:COUNTER:600:U:U"); rrdDef.addArchive("RRA:AVERAGE:0.5:1:600"); rrdDef.addArchive("RRA:AVERAGE:0.5:6:700"); rrdDef.addArchive("RRA:AVERAGE:0.5:24:775"); rrdDef.addArchive("RRA:AVERAGE:0.5:288:797"); rrdDef.addArchive("RRA:MAX:0.5:1:600"); rrdDef.addArchive("RRA:MAX:0.5:6:700"); rrdDef.addArchive("RRA:MAX:0.5:24:775"); rrdDef.addArchive("RRA:MAX:0.5:288:797"); RrdDb rrdDb = new RrdDb(rrdDef); rrdDb.close(); } @Test public void testCode10() throws IOException { testCode9(); RrdGraphDef graphDef = new RrdGraphDef(); long endTime = Util.getTime(); long startTime = endTime - (24*60*60L); graphDef.setTimeSpan(startTime, endTime); graphDef.datasource("inoctets", root + "/myrouter.rrd", "input", ConsolFun.AVERAGE); graphDef.datasource("outoctets", root + "/myrouter.rrd", "output", ConsolFun.AVERAGE); graphDef.area("inoctets", new Color(0, 0xFF, 0), "In traffic"); graphDef.line("outoctets", new Color(0, 0, 0xFF), "Out traffic", 1); graphDef.setFilename(root + "myrouter-day.gif"); BufferedImage bi = new BufferedImage(100,100,BufferedImage.TYPE_INT_RGB); RrdGraph graph = new RrdGraph(graphDef); graph.render(bi.getGraphics()); } @Test public void testCode11() throws IOException { RrdDef rrdDef = new RrdDef(root + "/all.rrd"); rrdDef.setStartTime(978300900L); rrdDef.addDatasource("a", DsType.COUNTER, 600, Double.NaN, Double.NaN); rrdDef.addDatasource("b", DsType.GAUGE, 600, Double.NaN, Double.NaN); rrdDef.addDatasource("c", DsType.DERIVE, 600, Double.NaN, Double.NaN); rrdDef.addDatasource("d", DsType.ABSOLUTE, 600, Double.NaN, Double.NaN); rrdDef.addArchive(ConsolFun.AVERAGE, 0.5, 1, 10); RrdDb rrdDb = new RrdDb(rrdDef); Sample sample = rrdDb.createSample(); sample.setAndUpdate("978301200:300:1:600:300"); sample.setAndUpdate("978301500:600:3:1200:600"); sample.setAndUpdate("978301800:900:5:1800:900"); sample.setAndUpdate("978302100:1200:3:2400:1200"); sample.setAndUpdate("978302400:1500:1:2400:1500"); sample.setAndUpdate("978302700:1800:2:1800:1800"); sample.setAndUpdate("978303000:2100:4:0:2100"); sample.setAndUpdate("978303300:2400:6:600:2400"); sample.setAndUpdate("978303600:2700:4:600:2700"); sample.setAndUpdate("978303900:3000:2:1200:3000"); rrdDb.close(); RrdGraphDef graphDef = new RrdGraphDef(); graphDef.setTimeSpan(978300600L, 978304200L); graphDef.datasource("linea", root + "/all.rrd", "a", ConsolFun.AVERAGE); graphDef.datasource("lineb", root + "/all.rrd", "b", ConsolFun.AVERAGE); graphDef.datasource("linec", root + "/all.rrd", "c", ConsolFun.AVERAGE); graphDef.datasource("lined", root + "/all.rrd", "d", ConsolFun.AVERAGE); graphDef.line("linea", Color.RED, "Line A", 3); graphDef.line("lineb", Color.GREEN, "Line B", 3); graphDef.line("linec", Color.BLUE, "Line C", 3); graphDef.line("lined", Color.BLACK, "Line D", 3); graphDef.setFilename(root + "all1.gif"); graphDef.setWidth(400); graphDef.setHeight(400); RrdGraph graph = new RrdGraph(graphDef); BufferedImage bim = new BufferedImage(400,400,BufferedImage.TYPE_INT_RGB); graph.render(bim.getGraphics()); } }