public Bucket getUpdatedSnapshot() throws InterruptedException { updater.gotData.await(10, TimeUnit.SECONDS); Bucket s = receiver.getSnapshot(); long startedWaitingForSnapshot = System.currentTimeMillis(); // just waiting for the correct snapshot being constructed (yes, this is // necessary) while (s == null || s.entrySet().size() == 0) { if (System.currentTimeMillis() - startedWaitingForSnapshot > (10L * 1000L)) { throw new RuntimeException("Test timed out."); } Thread.sleep(10); s = receiver.getSnapshot(); } return s; }
void outputHistograms(PrintStream output) { boolean gotHistogram = false; for (Map.Entry<Identifier, UntypedMetric> entry : snapshot.entrySet()) { if (entry.getValue().getHistogram() == null) { continue; } gotHistogram = true; DoubleHistogram histogram = entry.getValue().getHistogram(); Identifier id = entry.getKey(); String metricIdentifier = getIdentifierString(id); output.println("# start of metric " + metricIdentifier); histogram.outputPercentileDistribution(output, 4, 1.0d, true); output.println("# end of metric " + metricIdentifier); } if (!gotHistogram) { output.println("# No histograms currently available."); } }
MetricSnapshot convert() { for (Map.Entry<Identifier, UntypedMetric> entry : snapshot.entrySet()) { Identifier ident = entry.getKey(); getMap(ident.getLocation()).put(ident.getName(), convert(entry.getValue())); } Map<MetricDimensions, MetricSet> data = new HashMap<>(); for (Map.Entry<Point, Map<String, MetricValue>> entry : perPointData.entrySet()) { MetricDimensions key = convert(entry.getKey()); MetricSet newval = new MetricSet(entry.getValue()); MetricSet old = data.get(key); if (old != null) { // should not happen, this is bad // TODO: consider merging the two MetricSet instances log.warning("losing MetricSet when converting for: "+entry.getKey()); } else { data.put(key, newval); } } return new MetricSnapshot(snapshot.getFromMillis(), snapshot.getToMillis(), TimeUnit.MILLISECONDS, data); }