@Override public String toString() { return String.format( "%s[timestamp=%s, resource=%s, elements=%s", getClass().getSimpleName(), getTimestamp(), getResource(), getElements()); }
public void addRow(Row<T> row) { m_rows.put(row.getTimestamp(), row); }
Aggregation(Resource resource, Timestamp start, Timestamp end, ResultDescriptor resultDescriptor, Duration resolution, Iterator<Row<Measurement>> input) { m_resultDescriptor = checkNotNull(resultDescriptor, "result descriptor argument"); m_resource = checkNotNull(resource, "resource argument"); checkNotNull(start, "start argument"); checkNotNull(end, "end argument"); m_resolution = checkNotNull(resolution, "resolution argument"); m_input = checkNotNull(input, "input argument"); Duration interval = resultDescriptor.getInterval(); checkArgument(resolution.isMultiple(interval), "resolution must be a multiple of interval"); m_timestamps = new IntervalGenerator(start.stepFloor(m_resolution), end.stepCeiling(m_resolution), m_resolution); m_intervalsPer = (double) resolution.divideBy(interval); m_working = m_input.hasNext() ? m_input.next() : null; m_nextOut = m_timestamps.hasNext() ? new Row<Measurement>(m_timestamps.next(), m_resource) : null; // If the input stream contains any Samples earlier than what's relevant, iterate past them. if (m_nextOut != null) { while (m_working != null && m_working.getTimestamp().lte(m_nextOut.getTimestamp().minus(m_resolution))) { m_working = nextWorking(); } } }
int k=0; for (final Row<Measurement> row : rows) { timestamps[k] = row.getTimestamp().asMillis(); k++;
int k=0; for (final Row<Measurement> row : rows) { timestamps[k] = row.getTimestamp().asMillis(); k++;
output.getTimestamp(), output.getResource(), ds.getSource(),
Double v = aggregate(ds, values.get(ds.getLabel())); Map<String, String> attrs = aggregatedAttrs.get(ds.getLabel()); m_nextOut.addElement(new Measurement(m_nextOut.getTimestamp(), m_resource, ds.getLabel(), v, attrs));
private int go(String[] args) { m_parser.setUsageWidth(80); try { m_parser.parseArgument(args); } catch (CmdLineException e) { System.err.println(e.getMessage()); printUsage(System.err); return 1; } if (m_needsHelp) { printUsage(System.out); return 0; } if (m_resource == null || m_metric == null) { System.err.println("Missing required argument(s)"); printUsage(System.err); return 1; } System.out.printf("timestamp,%s%n", m_metric); for (Results.Row<Sample> row : m_repository.select(Context.DEFAULT_CONTEXT, m_resource, timestamp(m_start), timestamp(m_end))) { System.out.printf("%s,%.2f%n", row.getTimestamp().asDate(), row.getElement(m_metric).getValue().doubleValue()); } return 0; }
@Override public Results.Row<Sample> next() { if (!hasNext()) throw new NoSuchElementException(); Results.Row<Sample> nextNext = null; while (m_results.hasNext()) { Sample m = getNextSample(); if (m.getTimestamp().gt(m_next.getTimestamp())) { nextNext = new Results.Row<>(m.getTimestamp(), m.getResource()); addSample(nextNext, m); break; } addSample(m_next, m); } try { return m_next; } finally { m_next = nextNext; } }
@Override public Row<Sample> next() { if (!hasNext()) throw new NoSuchElementException(); Row<Sample> working = m_input.next(); Row<Sample> result = new Row<>(working.getTimestamp(), working.getResource()); for (String metricName : m_metrics) { Sample sample = working.getElement(metricName); if (sample == null) { continue; } // Use rate as result if one of counter types, else pass through as-is. result.addElement(COUNTERS.contains(sample.getType()) ? getRate(sample) : sample); m_prevSamples.put(sample.getName(), sample); } return result; }
private Measurement getNan(String name) { return new Measurement(m_current.getTimestamp(), m_current.getResource(), name, Double.NaN); }
@Override public Row<Measurement> next() { if (!hasNext()) throw new NoSuchElementException(); Row<Measurement> result = new Row<>(m_current.getTimestamp(), m_current.getResource()); for (String export : m_exports) { result.addElement(getMeasurement(export)); } try { return result; } finally { m_current = m_input.hasNext() ? m_input.next() : null; } }
private boolean inRange() { if (m_working == null || m_nextOut == null) { return false; } Timestamp rangeUpper = m_nextOut.getTimestamp(); Timestamp rangeLower = m_nextOut.getTimestamp().minus(m_resolution); return m_working.getTimestamp().lte(rangeUpper) && m_working.getTimestamp().gt(rangeLower); }
@Override public Row<Measurement> next() { if (!hasNext()) throw new NoSuchElementException(); Row<Measurement> row = m_input.next(); for (Calculation calc : m_resultDescriptor.getCalculations().values()) { double v = calc.getCalculationFunction().apply(getValues(row, calc.getArgs())); row.addElement(new Measurement(row.getTimestamp(), row.getResource(), calc.getLabel(), v)); } return row; }