public void collectStates(Object[] states) { for (int i = 0; i < descs.length; i++) { states[i] = aggs[i].getState(); } }
public ByteBuffer[] getHColValues(MeasureAggregator[] aggrs) { int i = 0; for (int ci = 0; ci < nHCols; ci++) { HCol col = hcols[ci]; for (int j = 0; j < col.nMeasures; j++) col.measureValues[j] = aggrs[i++].getState(); col.measureBuf.clear(); col.measureCodec.encode(col.measureValues, col.measureBuf); hColValues[ci] = col.measureBuf; } return hColValues; }
/** * @param aggrs * @param buffer byte buffer to get the metric data * @return length of metric data */ public int serializeMetricValues(MeasureAggregator[] aggrs, byte[] buffer) { for (int i = 0; i < funcNames.length; i++) { metricValues[i] = aggrs[i].getState(); } int metricBytesOffset = 0; for (int i = 0; i < measureSerializers.length; i++) { measureSerializers[i].write(metricValues[i], buffer, metricBytesOffset); metricBytesOffset += measureSerializers[i].getLength(); } return metricBytesOffset; }
@Test @SuppressWarnings("rawtypes") public void basicTest() { for (int i = 0; i < tableData.size(); ++i) { byte[] data = tableData.get(i).getBytes(); CoprocessorProjector.AggrKey aggKey = projector.getAggrKey(data); MeasureAggregator[] bufs = aggCache.getBuffer(aggKey); aggregators.aggregate(bufs, data); aggCache.checkMemoryUsage(); } assertEquals(aggCache.getAllEntries().size(), 2); long sumTotal = 0; long minTotal = 0; for (Map.Entry<CoprocessorProjector.AggrKey, MeasureAggregator[]> entry : aggCache.getAllEntries()) { sumTotal += ((LongWritable) entry.getValue()[0].getState()).get(); minTotal += ((LongWritable) entry.getValue()[1].getState()).get(); } assertEquals(3020800, sumTotal); assertEquals(1020900, minTotal); }