/** * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, * javax.servlet.http.HttpServletResponse) */ public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); res.addHeader("Cache-Control", "no-cache"); ServletOutputStream out = res.getOutputStream(); ParamsBean params = getParamsBean(req); Probe<?, ?> probe = params.getProbe(); if(probe != null) { Period p = params.getPeriod(); ExtractInfo ei = ExtractInfo.get().make(p.getBegin(), p.getEnd()); DataProcessor dp = probe.extract(ei); for(String dsName: probe.getPd().getDs()) { try { out.print(dsName + " "); out.println(dp.getVariable(dsName, new Variable.AVERAGE()).value + " "); out.println(dp.getVariable(dsName, new Variable.MIN()).value + " "); out.println(dp.getVariable(dsName, new Variable.MAX()).value); } catch (IOException e) { logger.error("Probe " + probe + "unusable: " + e); } } } else { logger.error("Probe id provided " + params.getId() + " invalid"); } }
ExtractInfo ei = ExtractInfo.get().make(p.getBegin(), p.getEnd()).make(probe.getStep()); try { sourceDp = probe.extract(ei); fileName = probe.getName().replaceFirst("\\.rrd", ".csv"); } catch (IOException e) {
@Test public void testFill() throws Exception { @SuppressWarnings("unchecked") Probe<?, ?> p = GenerateProbe.quickProbe(testFolder); p.setStep(30); p.getPd().add("test", DsType.GAUGE); Assert.assertTrue("Probe file creation failed", p.checkStore()); Extractor e = p.getMainStore().getExtractor(); e.addSource("test", "test"); String[] dsNames = e.getNames(); Assert.assertEquals("data source test not found", "test", dsNames[0]); long start = p.getLastUpdate().getTime(); for(int i = 1; i <= 30; i++) { JrdsSample s = p.newSample(); long sampletime = i * p.getStep() * 1000 + start; sampletime = (sampletime) - (sampletime % (p.getStep() * 1000)); s.setTime(new Date(sampletime)); s.put("test", i); p.getMainStore().commit(s); } ExtractInfo ei = ExtractInfo.get().make(new Date(start), new Date(start + 30 * p.getStep() * 1000)); DataProcessor dp = p.extract(ei); double[][] values = dp.getValues(); for(int i = 1; i <= 30; i++) { // Check raw values Assert.assertEquals("Wrong values stored", i, values[0][i], 1e-10); long sampletime = i * p.getStep() * 1000 + start; sampletime = (sampletime) - (sampletime % (p.getStep() * 1000)); } }
DataProcessor dp = p.extract(ei);
@Test public void readDatasourcesNames() throws Exception { GenerateProbe.ChainedMap<Object> factoryArgs = GenerateProbe.ChainedMap.start(1).set("rrdfile", rrdfile.getCanonicalPath()); GenerateProbe.ChainedMap<Object> args = GenerateProbe.ChainedMap.start(2) .set(StoreFactory.class, new RRDToolStoreFactory()) .set(GenerateProbe.FACTORYCONFIG, factoryArgs); Probe<?,?> p = GenerateProbe.fillProbe(new GenerateProbe.EmptyProbe(), testFolder, args); p.getPd().add("speed", DsType.GAUGE); p.getPd().add("weight", DsType.GAUGE); Assert.assertTrue(p.checkStore()); Period period = new Period("1999-03-07T13:00:00", "1999-03-07T13:15:00"); DataProcessor dp = p.extract(ExtractInfo.get().make(period.getBegin(), period.getEnd())); String[] dsNames = dp.getSourceNames(); Assert.assertEquals("data source weight not found", "weight", dsNames[0]); Assert.assertEquals("data source speed not found", "speed", dsNames[1]); Assert.assertEquals("Missing last values", 2, p.getMainStore().getLastValues().size()); }