@Test public void requestTrackingFuseable() { BaseSubscriber<Integer> bs = new BaseSubscriber<Integer>() { @Override protected void hookOnSubscribe(Subscription subscription) { subscription.request(1); } }; Flux<Integer> source = Flux.range(1, 10) .name("foo"); new FluxMetricsFuseable<>(source, registry) .subscribe(bs); DistributionSummary meter = registry.find(METER_REQUESTED) .tag(TAG_SEQUENCE_NAME, "foo") .summary(); assertThat(meter).as("meter").isNotNull(); assertThat(meter.totalAmount()).isEqualTo(1); bs.request(7); assertThat(meter.totalAmount()).isEqualTo(8); assertThat(meter.max()).isEqualTo(7); bs.request(100); assertThat(meter.totalAmount()).isEqualTo(108); assertThat(meter.max()).isEqualTo(100); } }
@Test public void requestTracking() { BaseSubscriber<Integer> bs = new BaseSubscriber<Integer>() { @Override protected void hookOnSubscribe(Subscription subscription) { subscription.request(1); } }; Flux<Integer> source = Flux.range(1, 10) .name("foo") .hide(); new FluxMetrics<>(source, registry) .subscribe(bs); DistributionSummary meter = registry.find(METER_REQUESTED) .tag(TAG_SEQUENCE_NAME, "foo") .summary(); assertThat(meter).as("meter").isNotNull(); assertThat(meter.totalAmount()).isEqualTo(1); bs.request(7); assertThat(meter.totalAmount()).isEqualTo(8); assertThat(meter.max()).isEqualTo(7); bs.request(100); assertThat(meter.totalAmount()).isEqualTo(108); assertThat(meter.max()).isEqualTo(100); }
@Override public double max() { return summary.max(); }
Optional<String> writeSummary(DistributionSummary summary) { summary.takeSnapshot(); return Optional.of(writeDocument(summary, builder -> { builder.append(",\"count\":").append(summary.count()); builder.append(",\"sum\":").append(summary.totalAmount()); builder.append(",\"mean\":").append(summary.mean()); builder.append(",\"max\":").append(summary.max()); })); }
private Stream<SignalFxProtocolBuffers.DataPoint.Builder> addDistributionSummary(DistributionSummary summary) { return Stream.of( addDatapoint(summary, COUNTER, "count", summary.count()), addDatapoint(summary, COUNTER, "totalTime", summary.totalAmount()), addDatapoint(summary, GAUGE, "avg", summary.mean()), addDatapoint(summary, GAUGE, "max", summary.max()) ); }
@Nullable private Optional<String> writeSummary(DistributionSummary summary) { HistogramSnapshot snapshot = summary.takeSnapshot(); if (snapshot.count() > 0) { return Optional.of(write(summary.getId(), "distributionSummary", Fields.Count.tag(), decimal(summary.count()), Fields.Sum.tag(), decimal(summary.totalAmount()), Fields.Max.tag(), decimal(summary.max()))); } return Optional.empty(); }
private Stream<String> writeSummary(DistributionSummary summary) { return Stream.of( event(summary.getId(), new Attribute("count", summary.count()), new Attribute("avg", summary.mean()), new Attribute("total", summary.totalAmount()), new Attribute("max", summary.max()) ) ); }
private Stream<String> writeSummary(DistributionSummary summary) { final long wallTime = clock.wallTime(); final Stream.Builder<String> metrics = Stream.builder(); Meter.Id id = summary.getId(); addMetric(metrics, id, "sum", wallTime, summary.totalAmount()); addMetric(metrics, id, "count", wallTime, summary.count()); addMetric(metrics, id, "avg", wallTime, summary.mean()); addMetric(metrics, id, "max", wallTime, summary.max()); return metrics.build(); }
Stream<String> writeSummary(DistributionSummary summary) { long wallTime = config().clock().wallTime(); return Stream.of( writeMetric(idWithSuffix(summary.getId(), "count"), wallTime, summary.count()), writeMetric(idWithSuffix(summary.getId(), "avg"), wallTime, summary.mean()), writeMetric(idWithSuffix(summary.getId(), "sum"), wallTime, summary.totalAmount()), writeMetric(idWithSuffix(summary.getId(), "max"), wallTime, summary.max()) ); }
private Stream<MetricDatum> summaryData(DistributionSummary summary) { final Stream.Builder<MetricDatum> metrics = Stream.builder(); metrics.add(metricDatum(summary.getId(), "sum", summary.totalAmount())); metrics.add(metricDatum(summary.getId(), "count", summary.count())); metrics.add(metricDatum(summary.getId(), "avg", summary.mean())); metrics.add(metricDatum(summary.getId(), "max", summary.max())); return metrics.build(); }
private Stream<String> writeSummary(DistributionSummary summary, Map<String, DatadogMetricMetadata> metadata) { final long wallTime = clock.wallTime(); final Stream.Builder<String> metrics = Stream.builder(); Meter.Id id = summary.getId(); metrics.add(writeMetric(id, "sum", wallTime, summary.totalAmount())); metrics.add(writeMetric(id, "count", wallTime, summary.count())); metrics.add(writeMetric(id, "avg", wallTime, summary.mean())); metrics.add(writeMetric(id, "max", wallTime, summary.max())); addToMetadataList(metadata, id, "sum", Statistic.TOTAL, null); addToMetadataList(metadata, id, "count", Statistic.COUNT, "occurrence"); addToMetadataList(metadata, id, "avg", Statistic.VALUE, null); addToMetadataList(metadata, id, "max", Statistic.MAX, null); return metrics.build(); }