values.addAll(currTs.getValues());
@Test public void testSingle() throws Exception { try (InputStream stream = GraphiteFormatParserTest.class.getResourceAsStream("/opentsdb-http-api-single.json")) { assertNotNull(stream); List<MetricTimeSeries> series = Lists.newArrayList(sut.parse(stream)); // We should have one metric assertThat(series.size(), is(1)); MetricTimeSeries metric = series.get(0); assertThat(metric.getName(), is("sys.cpu.nice")); assertThat(metric.getTimestamps().size(), is(1)); assertThat(metric.getValues().get(0), is(18.0)); assertThat(metric.getTimestamps().get(0), is(1346846400000L)); } }
/** * Calculates the standard deviation of the first time series. * * @param timeSeriesList list with time series * @return the percentile or 0 if the list is empty */ @Override public void execute(List<ChronixTimeSeries<MetricTimeSeries>> timeSeriesList, FunctionCtx functionCtx) { for (ChronixTimeSeries<MetricTimeSeries> chronixTimeSeries : timeSeriesList) { MetricTimeSeries timeSeries = chronixTimeSeries.getRawTimeSeries(); //If it is empty, we return NaN if (timeSeries.size() <= 0) { functionCtx.add(this, Double.NaN, chronixTimeSeries.getJoinKey()); continue; } //Else calculate the analysis value functionCtx.add(this, de.qaware.chronix.solr.type.metric.functions.math.StdDev.dev(timeSeries.getValues()), chronixTimeSeries.getJoinKey()); } }
/** * Calculates the percentile of the first time series. * * @param timeSeriesList list with time series * @return the percentile or 0 if the list is empty */ @Override public void execute(List<ChronixTimeSeries<MetricTimeSeries>> timeSeriesList, FunctionCtx functionCtx) { for (ChronixTimeSeries<MetricTimeSeries> chronixTimeSeries : timeSeriesList) { MetricTimeSeries timeSeries = chronixTimeSeries.getRawTimeSeries(); //If it is empty, we return NaN if (timeSeries.size() <= 0) { functionCtx.add(this, Double.NaN, chronixTimeSeries.getJoinKey()); continue; } //Else calculate the analysis value functionCtx.add(this, de.qaware.chronix.solr.type.metric.functions.math.Percentile.evaluate(timeSeries.getValues(), percentile), chronixTimeSeries.getJoinKey()); } }
/** * Detects trends in time series using a linear regression. * * @param functionCtx * @return 1 if there is a positive trend, otherwise -1 */ @Override public void execute(List<ChronixTimeSeries<MetricTimeSeries>> timeSeriesList, FunctionCtx functionCtx) { for (ChronixTimeSeries<MetricTimeSeries> chronixTimeSeries : timeSeriesList) { MetricTimeSeries timeSeries = chronixTimeSeries.getRawTimeSeries(); //We need to sort the time series for this analysis timeSeries.sort(); //Calculate the linear regression LinearRegression linearRegression = new LinearRegression(timeSeries.getTimestamps(), timeSeries.getValues()); double slope = linearRegression.slope(); //If we have a positive slope, we return 1 otherwise -1 functionCtx.add(this, slope > 0, chronixTimeSeries.getJoinKey()); } }
@Test public void test() throws Exception { try (InputStream stream = KairosDbFormatParserTest.class.getResourceAsStream("/kairosdb.json")) { assertNotNull(stream); List<MetricTimeSeries> series = Lists.newArrayList(sut.parse(stream)); // We should have two metrics assertThat(series.size(), is(2)); MetricTimeSeries first = series.get(0); assertThat(first.getName(), is("archive.file.tracked")); assertThat(first.getTimestamps().size(), is(1)); assertThat(first.getValues().get(0), is(123.0)); assertThat(first.getTimestamps().get(0), is(1349109376L)); assertThat(first.getAttributesReference().get("host"), is("test")); MetricTimeSeries second = series.get(1); assertThat(second.getName(), is("archive.file.search")); assertThat(second.getTimestamps().size(), is(1)); assertThat(second.getValues().get(0), is(32.1)); assertThat(second.getTimestamps().get(0), is(1349109665L)); assertThat(second.getAttributesReference().get("host"), is("test")); } } }
@Test public void testMultiple() throws Exception { try (InputStream stream = GraphiteFormatParserTest.class.getResourceAsStream("/opentsdb-http-api-multiple.json")) { assertNotNull(stream); List<MetricTimeSeries> series = Lists.newArrayList(sut.parse(stream)); // We should have two metrics assertThat(series.size(), is(2)); MetricTimeSeries first = series.get(0); assertThat(first.getName(), is("sys.cpu.nice")); assertThat(first.getTimestamps().size(), is(2)); assertThat(first.getValues().get(0), is(1.0)); assertThat(first.getTimestamps().get(0), is(1346846400000L)); assertThat(first.getValues().get(1), is(2.0)); assertThat(first.getTimestamps().get(1), is(1346846400100L)); MetricTimeSeries second = series.get(1); assertThat(second.getName(), is("sys.cpu.load")); assertThat(second.getTimestamps().size(), is(1)); assertThat(second.getValues().get(0), is(2.0)); assertThat(second.getTimestamps().get(0), is(1346846400000L)); } } }
assertThat(bashSeries.getTimestamps().get(4), is(1475754115000L)); assertThat(bashSeries.getValues().size(), is(5)); assertThat(bashSeries.getValues().get(0), is(1.0)); assertThat(bashSeries.getValues().get(1), is(2.0)); assertThat(bashSeries.getValues().get(2), is(3.0)); assertThat(bashSeries.getValues().get(3), is(4.0)); assertThat(bashSeries.getValues().get(4), is(5.0)); assertThat(psSeries.getTimestamps().get(3), is(1475754119000L)); assertThat(psSeries.getValues().size(), is(4)); assertThat(psSeries.getValues().get(0), is(6.0)); assertThat(psSeries.getValues().get(1), is(7.0)); assertThat(psSeries.getValues().get(2), is(8.0)); assertThat(psSeries.getValues().get(3), is(9.0));
/** * Copies a given metric time series. * * @param ts the time series * @return builder preconfigured with values from the given time series */ public MetricTimeSeries.Builder copy(MetricTimeSeries ts) { MetricTimeSeries.Builder result = new MetricTimeSeries.Builder(ts.getName(), ts.getType()); result.start(ts.getStart()); result.end(ts.getEnd()); result.points(ts.getTimestamps(), ts.getValues()); result.attributes(ts.attributes()); return result; } }
assertThat(server01.getTimestamps().size(), is(1)); assertThat(server01.getTimestamps().get(0), is(NOW.toEpochMilli())); assertThat(server01.getValues().size(), is(1)); assertThat(server01.getValues().get(0), is(0.67)); assertThat(server01.getAttributesReference().get("host"), is("server01")); assertThat(server02.getTimestamps().size(), is(1)); assertThat(server02.getTimestamps().get(0), is(1422568543702900L)); assertThat(server02.getValues().size(), is(1)); assertThat(server02.getValues().get(0), is(0.55)); assertThat(server02.getAttributesReference().get("host"), is("server02")); assertThat(server03.getTimestamps().get(0), is(1422568543702900L)); assertThat(server03.getTimestamps().get(1), is(1422568544702900L)); assertThat(server03.getValues().size(), is(2)); assertThat(server03.getValues().get(0), is(2.0)); assertThat(server03.getValues().get(1), is(3.0)); assertThat(server03.getAttributesReference().get("host"), is("server03")); assertThat(server03.getAttributesReference().get("direction"), is("in"));
DoubleList points = timeSeries.getValues();