Java 类com.codahale.metrics.ExponentiallyDecayingReservoir 实例源码

项目:datacollector    文件:KafkaUDPConsumer.java   
public KafkaUDPConsumer(
    Stage.Context context,
    UDPConfigBean udpConfigBean,
    KafkaTargetConfig kafkaTargetConfig,
    BlockingQueue<Exception> errorQueue
) {
  this.udpConfigBean = udpConfigBean;
  this.kafkaTargetConfig = kafkaTargetConfig;
  this.errorQueue = errorQueue;

  acceptedPackagesMeter = context.createMeter("acceptedPackages");
  discardedPackagesMeter = context.createMeter("discardedPackages");
  errorPackagesMeter = context.createMeter("errorPackages");
  udpTimer = context.createTimer("udp");
  kafkaTimer = context.createTimer("kafka");
  kafkaMessagesMeter = context.createMeter("kafkaMessages");

  // context does not have a createHistogram(), TODO open JIRA for that
  concurrencyHistogram = new Histogram(new ExponentiallyDecayingReservoir());
  context
      .getMetrics()
      .register("custom." + context.getPipelineInfo().get(0).getInstanceName() + ".concurrentPackages.histogram",
          concurrencyHistogram);
}
项目:datacollector    文件:KafkaFragmentWriter.java   
@Override
public List<Stage.ConfigIssue> init(Stage.Context context) {
  List<Stage.ConfigIssue> issues = new ArrayList<>();

  kafkaTimer = context.createTimer("kafka");
  kafkaMessagesMeter = context.createMeter("kafkaMessages");

  //TODO: change to use API-66 when API-66 is done.
  concurrencyHistogram = new Histogram(new ExponentiallyDecayingReservoir());
  context
      .getMetrics()
      .register("custom." + context.getPipelineInfo().get(0).getInstanceName() + ".concurrentRequests.histogram",
          concurrencyHistogram);
  try {
    kafkaProducerPool = createKafkaProducerPool();
  } catch (Exception ex) {

  }
  return issues;
}
项目:datacollector    文件:PreviewPipelineRunner.java   
@Override
public void run(
  SourcePipe originPipe,
  List<PipeRunner> pipes,
  BadRecordsHandler badRecordsHandler,
  List<StageOutput> stageOutputsToOverride,
  StatsAggregationHandler statsAggregationHandler
) throws StageException, PipelineRuntimeException {
  this.originPipe = originPipe;
  this.pipes = pipes;
  this.badRecordsHandler = badRecordsHandler;
  this.statsAggregationHandler = statsAggregationHandler;
  this.runnerPool = new RunnerPool<>(pipes, new RuntimeStats(), new Histogram(new ExponentiallyDecayingReservoir()));

  stagesToSkip = new HashMap<>();
  for (StageOutput stageOutput : stageOutputsToOverride) {
    stagesToSkip.put(stageOutput.getInstanceName(), stageOutput);
  }

  if (originPipe.getStage().getStage() instanceof PushSource) {
    runPushSource();
  } else {
    runPollSource();
  }
}
项目:delight-metrics    文件:MetricsFactory.java   
@Override
@SuppressWarnings("unchecked")
public <T> T create(final Class<T> type) {

    if (type.equals(Meter.class)) {
        return (T) new Meter();
    }

    if (type.equals(Counter.class)) {
        return (T) new Counter();
    }

    if (type.equals(Histogram.class)) {
        return (T) new Histogram(new ExponentiallyDecayingReservoir());
    }

    return null;

}
项目:dropwizard-influxdb-reporter    文件:DropwizardTransformerTest.java   
@Test
public void testFromHistogram() {
  final Set<String> fieldKeys = ImmutableSet.of(
    "count",
    "min",
    "max",
    "mean",
    "std-dev",
    "50-percentile",
    "75-percentile",
    "95-percentile",
    "99-percentile",
    "999-percentile",
    "run-count"
  );

  final DropwizardMeasurementParser parser = mock(DropwizardMeasurementParser.class);
  final DropwizardTransformer transformer = transformerWithParser(parser, true);

  when(parser.parse("some.metric.name")).thenReturn(
    DropwizardMeasurement.create("Measurement", MEASUREMENT_TAGS, Optional.empty())
  );

  final Histogram histogram = new Histogram(new ExponentiallyDecayingReservoir());
  histogram.update(15L);
  histogram.update(70L);
  histogram.update(100L);

  final InfluxDbMeasurement measurement = transformer.fromHistogram("some.metric.name", histogram, 90210L);
  assertEquals("should parse name from full metric key", "Measurement", measurement.name());
  assertEquals("should add global and measurement tags", ALL_TAGS, measurement.tags());
  assertEquals("should timestamp measurement", 90210L, measurement.timestamp());
  assertEquals("should add all histogram fields", fieldKeys, measurement.fields().keySet());
}
项目:monitoring-center    文件:CompositeForwardingHistogram.java   
public CompositeForwardingHistogram(Histogram mainDelegate, MetricProvider<Histogram> supplementaryMetricProvider) {
    super(new ExponentiallyDecayingReservoir());

    Preconditions.checkNotNull(mainDelegate);
    Preconditions.checkNotNull(supplementaryMetricProvider);

    this.mainDelegate = mainDelegate;
    this.supplementaryMetricProvider = supplementaryMetricProvider;
}
项目:monitoring-center    文件:ForwardingReadOnlyHistogram.java   
public ForwardingReadOnlyHistogram(final Histogram delegate) {
    super(new ExponentiallyDecayingReservoir());

    Preconditions.checkNotNull(delegate);
    this.metricProvider = new MetricProvider<Histogram>() {
        @Override
        public Histogram get() {
            return delegate;
        }
    };
}
项目:microbule    文件:ExponentiallyDecayingTimingStrategyTest.java   
@Test
public void testCreateTimer() throws Exception {
    final ExponentiallyDecayingTimingStrategy strategy = new ExponentiallyDecayingTimingStrategy();
    final Timer timer = strategy.createTimer(new MapConfig());

    ExponentiallyDecayingReservoir reservoir = reservoir(timer);
    assertNotNull(reservoir);
    assertEquals("decay", strategy.name());
}
项目:Gobblin    文件:ContextAwareHistogram.java   
ContextAwareHistogram(MetricContext context, String name) {
  super(new ExponentiallyDecayingReservoir());

  this.name = name;
  this.context = context;
  this.tagged = new Tagged();

  Optional<MetricContext> parentContext = context.getParent();
  if (parentContext.isPresent()) {
    this.parentHistogram = Optional.fromNullable(parentContext.get().contextAwareHistogram(name));
  } else {
    this.parentHistogram = Optional.absent();
  }
}
项目:carbon-metrics    文件:MetricManager.java   
/**
 * Get reservoir implementation based on the reservoir type
 *
 * @return The {@link Reservoir} implementation
 */
private Reservoir getReservoir() {
    // The Reservoir implementation is selected using a switch statement.
    // The ReservoirType enum is a part of YAML configuration
    // and foreign imports are not supported by Carbon Configuration Maven Plugin.
    // Therefore, the Reservoir class cannot be imported and the Reservoir
    // creation logic cannot be written inside ReservoirType enum.
    switch (reservoirType) {
        case EXPONENTIALLY_DECAYING:
            return new ExponentiallyDecayingReservoir();
        case UNIFORM:
            return new UniformReservoir(reservoirParametersConfig.getSize());
        case SLIDING_WINDOW:
            return new SlidingWindowReservoir(reservoirParametersConfig.getSize());
        case SLIDING_TIME_WINDOW:
            return new SlidingTimeWindowReservoir(reservoirParametersConfig.getWindow(),
                    reservoirParametersConfig.getWindowUnit());
        case HDR_HISTOGRAM:
            Recorder recorder = new Recorder(reservoirParametersConfig.getNumberOfSignificantValueDigits());
            if (reservoirParametersConfig.isResetOnSnapshot()) {
                return new HdrHistogramResetOnSnapshotReservoir(recorder);
            } else {
                return new HdrHistogramReservoir(recorder);
            }
        default:
            throw new RuntimeException("Invalid Reservoir Type");

    }
}
项目:samza    文件:SamzaHistogram.java   
public SamzaHistogram(MetricsRegistry registry, String group, String name, List<Double> percentiles) {
  this.histogram = new Histogram(new ExponentiallyDecayingReservoir());
  this.percentiles = percentiles;
  this.gauges = this.percentiles.stream()
          .filter(x -> x > 0 && x <= 100)
          .collect(
                  Collectors.toMap(Function.identity(), x -> registry.newGauge(group, name + "_" + String.valueOf(0), 0D)));
}
项目:samza    文件:SamzaHistogram.java   
SamzaHistogram(MetricsRegistry registry, String group, String name, List<Double> percentiles) {
  this.registry = registry;
  this.histogram = new Histogram(new ExponentiallyDecayingReservoir());
  this.percentiles = percentiles;
  this.gauges = percentiles.stream()
      .filter(x -> x > 0 && x <= 100)
      .collect(
          Collectors.toMap(Function.identity(), x -> this.registry.newGauge(group, name + "_" + String.valueOf(0), 0D)));
}
项目:datacollector    文件:MetricsConfigurator.java   
public static Histogram createHistogram5Min(MetricRegistry metrics, String name, final String pipelineName, final String pipelineRev) {
  return create(
    metrics,
    new Histogram(new ExponentiallyDecayingReservoir()),
    metricName(name, HISTOGRAM_M5_SUFFIX),
    pipelineName,
    pipelineRev
  );
}
项目:datacollector    文件:TestRunnerPool.java   
@Before
public void createRunnerPool() {
  this.runnerPool = new RunnerPool<>(
    ImmutableList.of("a", "b"),
    new RuntimeStats(),
    new Histogram(new ExponentiallyDecayingReservoir())
  );
}
项目:scylla-tools-java    文件:DynamicEndpointSnitch.java   
public void receiveTiming(InetAddress host, long latency) // this is cheap
{
    ExponentiallyDecayingReservoir sample = samples.get(host);
    if (sample == null)
    {
        ExponentiallyDecayingReservoir maybeNewSample = new ExponentiallyDecayingReservoir(WINDOW_SIZE, ALPHA);
        sample = samples.putIfAbsent(host, maybeNewSample);
        if (sample == null)
            sample = maybeNewSample;
    }
    sample.update(latency);
}
项目:scylla-tools-java    文件:DynamicEndpointSnitch.java   
public List<Double> dumpTimings(String hostname) throws UnknownHostException
{
    InetAddress host = InetAddress.getByName(hostname);
    ArrayList<Double> timings = new ArrayList<Double>();
    ExponentiallyDecayingReservoir sample = samples.get(host);
    if (sample != null)
    {
        for (double time: sample.getSnapshot().getValues())
            timings.add(time);
    }
    return timings;
}
项目:modules    文件:HistogramAdapterTest.java   
@Test
public void testHistogramWithMetricsEnabled() {
    HistogramAdapter histogramAdapter = new HistogramAdapter(new com.codahale.metrics.Histogram(new ExponentiallyDecayingReservoir()), true);

    for (int i = 1; i <= 9; i++) {
        histogramAdapter.update(i);
    }

    assertEquals(9, histogramAdapter.getCount());

    histogramAdapter.update(10L);

    assertEquals(10, histogramAdapter.getCount());

    Snapshot snapshot = histogramAdapter.getSnapshot();
    assertEquals(8.0, snapshot.get75thPercentile(), 0);
    assertEquals(10, snapshot.get95thPercentile(), 0);
    assertEquals(10, snapshot.get99thPercentile(), 0);
    assertEquals(10, snapshot.get999thPercentile(), 0);
    assertEquals(10, snapshot.getMax());
    assertEquals(5.5, snapshot.getMean(), .001);
    assertEquals(6.0, snapshot.getMedian(), 0);
    assertEquals(1, snapshot.getMin());
    assertEquals(2.872, snapshot.getStdDev(), .001);
    assertEquals(6.0, snapshot.getValue(.5), 0);
    assertArrayEquals(new long[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, snapshot.getValues());
}
项目:modules    文件:HistogramAdapterTest.java   
@Test
public void testHistogramWithMetricsDisabled() {
    HistogramAdapter histogramAdapter = new HistogramAdapter(new com.codahale.metrics.Histogram(new ExponentiallyDecayingReservoir()), false);

    for (int i = 1; i <= 9; i++) {
        histogramAdapter.update(i);
    }

    assertEquals(0, histogramAdapter.getCount());

    histogramAdapter.update(10L);

    assertEquals(0, histogramAdapter.getCount());

    Snapshot snapshot = histogramAdapter.getSnapshot();
    assertEquals(0, snapshot.get75thPercentile(), 0);
    assertEquals(0, snapshot.get95thPercentile(), 0);
    assertEquals(0, snapshot.get99thPercentile(), 0);
    assertEquals(0, snapshot.get999thPercentile(), 0);
    assertEquals(0, snapshot.getMax());
    assertEquals(0, snapshot.getMean(), 0);
    assertEquals(0, snapshot.getMedian(), 0);
    assertEquals(0, snapshot.getMin());
    assertEquals(0, snapshot.getStdDev(), 0);
    assertEquals(0, snapshot.getValue(.5), 0);
    assertArrayEquals(new long[]{}, snapshot.getValues());
}
项目:vertx-dropwizard-metrics    文件:AbstractMetrics.java   
protected Histogram histogram(String... names) {
  try {
    return registry.histogram(nameOf(names));
  } catch (Exception e) {
    return new Histogram(new ExponentiallyDecayingReservoir());
  }
}
项目:incubator-gobblin    文件:InnerHistogram.java   
InnerHistogram(MetricContext context, String name, ContextAwareHistogram contextAwareHistogram) {
  super(new ExponentiallyDecayingReservoir());

  this.name = name;

  Optional<MetricContext> parentContext = context.getParent();
  if (parentContext.isPresent()) {
    this.parentHistogram = Optional.fromNullable(parentContext.get().contextAwareHistogram(name));
  } else {
    this.parentHistogram = Optional.absent();
  }

  this.contextAwareHistogram = new WeakReference<>(contextAwareHistogram);
}
项目:NeverwinterDP-Commons    文件:AlgorithmComparatorUnitTest.java   
protected void runAlgorithm(long[] numbers) {
  reservoir = new ExponentiallyDecayingReservoir() ;
  for(int i = 0; i < numbers.length; i++) {
    reservoir.update(numbers[i]);
  }
  snapshot = reservoir.getSnapshot() ;
}
项目:flexy-pool    文件:ConfigurationTest.java   
@Test
public void testBuilder() {
    final MetricRegistry metricRegistry = Mockito.mock(MetricRegistry.class);

    DataSource dataSource = Mockito.mock(DataSource.class);
    PoolAdapterFactory<DataSource> poolAdapterFactory = Mockito.mock(PoolAdapterFactory.class);
    ConnectionProxyFactory connectionProxyFactory = Mockito.mock(ConnectionProxyFactory.class);
    Metrics metrics = Mockito.mock(Metrics.class);
    PoolAdapter poolAdapter = Mockito.mock(PoolAdapter.class);
    when(poolAdapterFactory.newInstance(any(ConfigurationProperties.class))).thenReturn(poolAdapter);
    Configuration<DataSource> configuration = new Configuration.Builder<DataSource>(
            "unique", dataSource, poolAdapterFactory)
            .setConnectionProxyFactory(connectionProxyFactory)
            .setJmxAutoStart(true)
            .setJmxEnabled(true)
            .setMetricLogReporterMillis(120)
            .setMetricsFactory(new MetricsFactory() {
                @Override
                public Metrics newInstance(ConfigurationProperties configurationProperties) {
                    return new DropwizardMetrics(configurationProperties, metricRegistry, new ReservoirFactory() {
                        @Override
                        public Reservoir newInstance(Class<? extends Metric> metricClass, String metricName) {
                            return new ExponentiallyDecayingReservoir();
                        }
                    });
                }
            })
            .build();
    assertSame("unique", configuration.getUniqueName());
    assertSame(connectionProxyFactory, configuration.getConnectionProxyFactory());
    assertTrue(configuration.isJmxAutoStart());
    assertTrue(configuration.isJmxEnabled());
    assertEquals(120, configuration.getMetricLogReporterMillis());
    assertSame(poolAdapter, configuration.getPoolAdapter());
    assertSame(dataSource, configuration.getTargetDataSource());
}
项目:flexy-pool    文件:ConfigurationTest.java   
@Test
public void testBuilder() {
    final MetricRegistry metricRegistry = Mockito.mock(MetricRegistry.class);

    DataSource dataSource = Mockito.mock(DataSource.class);
    PoolAdapterFactory<DataSource> poolAdapterFactory = Mockito.mock(PoolAdapterFactory.class);
    ConnectionProxyFactory connectionProxyFactory = Mockito.mock(ConnectionProxyFactory.class);
    Metrics metrics = Mockito.mock(Metrics.class);
    PoolAdapter poolAdapter = Mockito.mock(PoolAdapter.class);
    when(poolAdapterFactory.newInstance(any(ConfigurationProperties.class))).thenReturn(poolAdapter);
    Configuration<DataSource> configuration = new Configuration.Builder<DataSource>(
            "unique", dataSource, poolAdapterFactory)
            .setConnectionProxyFactory(connectionProxyFactory)
            .setJmxAutoStart(true)
            .setJmxEnabled(true)
            .setMetricLogReporterMillis(120)
            .setMetricsFactory(new MetricsFactory() {
                @Override
                public Metrics newInstance(ConfigurationProperties configurationProperties) {
                    return new CodahaleMetrics(configurationProperties, metricRegistry, new ReservoirFactory() {
                        @Override
                        public Reservoir newInstance(Class<? extends Metric> metricClass, String metricName) {
                            return new ExponentiallyDecayingReservoir();
                        }
                    });
                }
            })
            .build();
    assertSame("unique", configuration.getUniqueName());
    assertSame(connectionProxyFactory, configuration.getConnectionProxyFactory());
    assertTrue(configuration.isJmxAutoStart());
    assertTrue(configuration.isJmxEnabled());
    assertEquals(120, configuration.getMetricLogReporterMillis());
    assertSame(poolAdapter, configuration.getPoolAdapter());
    assertSame(dataSource, configuration.getTargetDataSource());
}
项目:heftydb    文件:ReadPerformance.java   
public static void main(String[] args) throws Exception {
    Random random = new Random(System.nanoTime());

    Config config = new Config.Builder().directory(TestFileHelper.TEMP_PATH).compactionStrategy
            (CompactionStrategies.SIZE_TIERED_COMPACTION_STRATEGY).tableCacheSize(512000000).indexCacheSize
            (64000000).maxWriteRate(Integer.MAX_VALUE).build();

    MetricRegistry metrics = new MetricRegistry();
    ConsoleReporter reporter = PerformanceHelper.consoleReporter(metrics);
    Timer readTimer = metrics.register("reads", new Timer(new ExponentiallyDecayingReservoir()));

    DB db = HeftyDB.open(config);

    db.compact().get();

    //Read
    for (int i = 0; i < RECORD_COUNT * 10; i++) {
        String key = random.nextInt(RECORD_COUNT) + "";
        Timer.Context watch = readTimer.time();
        db.get(ByteBuffers.fromString(key));
        watch.stop();
    }

    reporter.report();
    db.logMetrics();
    db.close();

    System.exit(0);
}
项目:JInsight    文件:TracingMetricRegistry.java   
public TracedHistogram(String metricName) {
  super(new ExponentiallyDecayingReservoir());
  this.metricName = metricName;
}
项目:JInsight    文件:TracingMetricRegistryTest.java   
@Test(expected = UnsupportedOperationException.class)
public void testHistogramSupplier() throws Exception {
  registry.histogram("HXX", () -> new Histogram(new ExponentiallyDecayingReservoir()));
}
项目:dropwizard-influxdb-reporter    文件:InfluxDbMeasurementReporterTest.java   
@Test
public void testReport() {
  final Sender sender = mock(Sender.class);
  final DropwizardTransformer transformer = mock(DropwizardTransformer.class);

  final InfluxDbMeasurementReporter reporter = new InfluxDbMeasurementReporter(
    sender,
    new MetricRegistry(),
    MetricFilter.ALL,
    TimeUnit.SECONDS,
    TimeUnit.MILLISECONDS,
    clock,
    transformer
  );

  final long timestamp = clock.instant().toEpochMilli();
  final SortedMap<String, Gauge> gauges = ImmutableSortedMap.of("some", () -> 5);
  final SortedMap<String, Counter> counters = ImmutableSortedMap.of("more", new Counter());
  final SortedMap<String, Histogram> histograms = ImmutableSortedMap.of("metrics", new Histogram(new ExponentiallyDecayingReservoir()));
  final SortedMap<String, Meter> meters = ImmutableSortedMap.of("for", new Meter());
  final SortedMap<String, Timer> timers = ImmutableSortedMap.of("for", new Timer());

  final List<InfluxDbMeasurement> expectedMeasurements =
    Stream
      .of("gauge", "counter", "histogram", "meter", "timer")
      .map(name ->
        InfluxDbMeasurement.create(
          "some",
          ImmutableMap.of(),
          ImmutableMap.of(name, "stuff"),
          timestamp
        )
      ).collect(toList());

  when(transformer.fromGauges(gauges, timestamp))
    .thenReturn(ImmutableList.of(expectedMeasurements.get(0)));

  when(transformer.fromCounters(counters, timestamp))
    .thenReturn(ImmutableList.of(expectedMeasurements.get(1)));

  when(transformer.fromHistograms(histograms, timestamp))
    .thenReturn(ImmutableList.of(expectedMeasurements.get(2)));

  when(transformer.fromMeters(meters, timestamp))
    .thenReturn(ImmutableList.of(expectedMeasurements.get(3)));

  when(transformer.fromTimers(timers, timestamp))
    .thenReturn(ImmutableList.of(expectedMeasurements.get(4)));

  reporter.report(gauges, counters, histograms, meters, timers);
  verify(sender).send(expectedMeasurements);
}
项目:semantic-metrics    文件:SemanticMetricBuilder.java   
@Override
public Histogram newMetric() {
    return new Histogram(new ExponentiallyDecayingReservoir());
}
项目:mongoose-base    文件:CustomMetricRegistry.java   
@Override
public Histogram newMetric() {
    return new Histogram(new ExponentiallyDecayingReservoir());
}
项目:monitoring-center    文件:ForwardingReadOnlyHistogram.java   
public ForwardingReadOnlyHistogram(MetricProvider<Histogram> metricProvider) {
    super(new ExponentiallyDecayingReservoir());

    Preconditions.checkNotNull(metricProvider);
    this.metricProvider = metricProvider;
}
项目:monitoring-center    文件:NoOpMetricCollector.java   
@Override
public Histogram getHistogram(String topLevelName, String... additionalNames) {
    return new Histogram(new ExponentiallyDecayingReservoir());
}
项目:microbule    文件:ExponentiallyDecayingTimingStrategy.java   
@Override
public Timer createTimer(Config config) {
    return new Timer(new ExponentiallyDecayingReservoir(
            config.integerValue(SIZE_PROP).orElse(DEFAULT_SIZE),
            config.doubleValue(ALPHA_PROP).orElse(DEFAULT_ALPHA)));
}
项目:metrics-circonus    文件:TimerAlaCoda.java   
public TimerAlaCoda() {
    this(new ExponentiallyDecayingReservoir());
}
项目:metrics-circonus    文件:CirconusMetricRegistryAlaCoda.java   
@Override
public Histogram histogram(String name) {
    Histogram existed = (Histogram) getMetrics().get(name);
    if(existed != null) return existed;
    return register(name, new HistogramAlaCoda(new ExponentiallyDecayingReservoir()));
}
项目:Gobblin    文件:HadoopCounterReporterTest.java   
@Test
public void testReportMetrics() {
  Gauge<Integer> queueSizeGauge = new Gauge<Integer>() {
    @Override
    public Integer getValue() {
      return 1000;
    }
  };

  Counter recordsProcessedCounter = new Counter();
  recordsProcessedCounter.inc(10l);

  Histogram recordSizeDistributionHistogram = new Histogram(new ExponentiallyDecayingReservoir());
  recordSizeDistributionHistogram.update(1);
  recordSizeDistributionHistogram.update(2);
  recordSizeDistributionHistogram.update(3);

  Meter recordProcessRateMeter = new Meter();
  recordProcessRateMeter.mark(1l);
  recordProcessRateMeter.mark(2l);
  recordProcessRateMeter.mark(3l);

  Timer totalDurationTimer = new Timer();
  totalDurationTimer.update(1, TimeUnit.SECONDS);
  totalDurationTimer.update(2, TimeUnit.SECONDS);
  totalDurationTimer.update(3, TimeUnit.SECONDS);

  SortedMap<String, Counter> counters = ImmutableSortedMap.<String, Counter>naturalOrder()
      .put(RECORDS_PROCESSED, recordsProcessedCounter).build();
  SortedMap<String, Gauge> gauges = ImmutableSortedMap.<String, Gauge>naturalOrder()
      .put(QUEUE_SIZE, queueSizeGauge).build();
  SortedMap<String, Histogram> histograms = ImmutableSortedMap.<String, Histogram>naturalOrder()
      .put(RECORD_SIZE_DISTRIBUTION, recordSizeDistributionHistogram).build();
  SortedMap<String, Meter> meters = ImmutableSortedMap.<String, Meter>naturalOrder()
      .put(RECORD_PROCESS_RATE, recordProcessRateMeter).build();
  SortedMap<String, Timer> timers = ImmutableSortedMap.<String, Timer>naturalOrder()
      .put(TOTAL_DURATION, totalDurationTimer).build();

  this.hadoopCounterReporter.report(gauges, counters, histograms, meters, timers);

  Mockito.verify(this.recordsProcessedCount).increment(10l);
  Mockito.verify(this.recordProcessRateCount).increment(6l);
  Mockito.verify(this.recordSizeDistributionCount).increment(3l);
  Mockito.verify(this.totalDurationCount).increment(3l);
  Mockito.verify(this.queueSize).setValue(1000);

  recordsProcessedCounter.inc(5l);
  recordSizeDistributionHistogram.update(4);
  recordProcessRateMeter.mark(4l);
  totalDurationTimer.update(4, TimeUnit.SECONDS);

  this.hadoopCounterReporter.report(gauges, counters, histograms, meters, timers);

  Mockito.verify(this.recordsProcessedCount).increment(5l);
  Mockito.verify(this.recordProcessRateCount).increment(4l);
  Mockito.verify(this.recordSizeDistributionCount).increment(1l);
  Mockito.verify(this.totalDurationCount).increment(1l);
}
项目:Gobblin    文件:NewAPIHadoopCounterReporterTest.java   
@Test
public void testReportMetrics() {
  Gauge<Integer> queueSizeGauge = new Gauge<Integer>() {
    @Override
    public Integer getValue() {
      return 1000;
    }
  };

  com.codahale.metrics.Counter recordsProcessedCounter = new com.codahale.metrics.Counter();
  recordsProcessedCounter.inc(10l);

  Histogram recordSizeDistributionHistogram = new Histogram(new ExponentiallyDecayingReservoir());
  recordSizeDistributionHistogram.update(1);
  recordSizeDistributionHistogram.update(2);
  recordSizeDistributionHistogram.update(3);

  Meter recordProcessRateMeter = new Meter();
  recordProcessRateMeter.mark(1l);
  recordProcessRateMeter.mark(2l);
  recordProcessRateMeter.mark(3l);

  Timer totalDurationTimer = new Timer();
  totalDurationTimer.update(1, TimeUnit.SECONDS);
  totalDurationTimer.update(2, TimeUnit.SECONDS);
  totalDurationTimer.update(3, TimeUnit.SECONDS);

  SortedMap<String, com.codahale.metrics.Counter> counters =
      ImmutableSortedMap.<String, com.codahale.metrics.Counter>naturalOrder()
      .put(RECORDS_PROCESSED, recordsProcessedCounter).build();
  SortedMap<String, Gauge> gauges = ImmutableSortedMap.<String, Gauge>naturalOrder()
      .put(QUEUE_SIZE, queueSizeGauge).build();
  SortedMap<String, Histogram> histograms = ImmutableSortedMap.<String, Histogram>naturalOrder()
      .put(RECORD_SIZE_DISTRIBUTION, recordSizeDistributionHistogram).build();
  SortedMap<String, Meter> meters = ImmutableSortedMap.<String, Meter>naturalOrder()
      .put(RECORD_PROCESS_RATE, recordProcessRateMeter).build();
  SortedMap<String, Timer> timers = ImmutableSortedMap.<String, Timer>naturalOrder()
      .put(TOTAL_DURATION, totalDurationTimer).build();

  this.hadoopCounterReporter.report(gauges, counters, histograms, meters, timers);

  Mockito.verify(this.recordsProcessedCount).increment(10l);
  Mockito.verify(this.recordProcessRateCount).increment(6l);
  Mockito.verify(this.recordSizeDistributionCount).increment(3l);
  Mockito.verify(this.totalDurationCount).increment(3l);
  Mockito.verify(this.queueSize).setValue(1000);

  recordsProcessedCounter.inc(5l);
  recordSizeDistributionHistogram.update(4);
  recordProcessRateMeter.mark(4l);
  totalDurationTimer.update(4, TimeUnit.SECONDS);

  this.hadoopCounterReporter.report(gauges, counters, histograms, meters, timers);

  Mockito.verify(this.recordsProcessedCount).increment(5l);
  Mockito.verify(this.recordProcessRateCount).increment(4l);
  Mockito.verify(this.recordSizeDistributionCount).increment(1l);
  Mockito.verify(this.totalDurationCount).increment(1l);
}
项目:heroic    文件:HistogramBuilder.java   
public Histogram newMetric() {
    return new Histogram(
        // A min/max value will stay around for 2 * 30 seconds
        new MinMaxSlidingTimeReservoir(Clock.defaultClock(), 2, 30, TimeUnit.SECONDS,
            new ExponentiallyDecayingReservoir()));
}
项目:heroic    文件:MinMaxSlidingTimeReservoirIT.java   
@Test
public void testBasicStatisticsSlowRate() throws Exception {
    final DeterministicClock clock = new DeterministicClock();

    int iterations = 10;
    int numSamples = 100;

    final Reservoir delegate = new ExponentiallyDecayingReservoir(1028, 0.015, clock);
    final MinMaxSlidingTimeReservoir reservoir =
        new MinMaxSlidingTimeReservoir(clock, SIZE, STEP, TimeUnit.NANOSECONDS, delegate);
    long exactValues[] = new long[(numSamples + 2) * iterations];
    int i = 0;

    for (int iteration = 0; iteration < iterations; iteration++) {
        long maxPos = ThreadLocalRandom.current().nextInt(0, numSamples);
        long minPos = ThreadLocalRandom.current().nextInt(0, numSamples);
        for (long pos = 0; pos < numSamples; pos++) {
            long val = ThreadLocalRandom.current().nextLong(-VALUE_RANGE, VALUE_RANGE);
            reservoir.update(val);
            exactValues[i] = val;
            i++;
            if (pos == maxPos) {
                reservoir.update(MAX_VALUE);
                exactValues[i] = MAX_VALUE;
                i++;
            }
            if (pos == minPos) {
                reservoir.update(MIN_VALUE);
                exactValues[i] = MIN_VALUE;
                i++;
            }
        }

        final Snapshot snapshot = reservoir.getSnapshot();

        assertEquals(MAX_VALUE, snapshot.getMax());
        assertEquals(MIN_VALUE, snapshot.getMin());

        long expectedValues[] = Arrays.copyOf(exactValues, i);
        Arrays.sort(expectedValues);
        long reservoirValues[] =
            Arrays.copyOf(snapshot.getValues(), snapshot.getValues().length);
        Arrays.sort(reservoirValues);

        assertArrayEquals(expectedValues, reservoirValues);
    }
}
项目:heroic    文件:MinMaxSlidingTimeReservoirIT.java   
@Test
public void testBasicStatisticsHighRate() throws Exception {
    final DeterministicClock clock = new DeterministicClock();

    int iterations = 2;
    for (int iteration = 0; iteration < iterations; iteration++) {
        final Reservoir delegate = new ExponentiallyDecayingReservoir(1028, 0.015, clock);
        final MinMaxSlidingTimeReservoir reservoir =
            new MinMaxSlidingTimeReservoir(clock, SIZE, STEP, TimeUnit.NANOSECONDS, delegate);

        int numSamples = 1000000;
        int clockInterval = numSamples / SIZE;
        long exactValues[] = new long[numSamples + 2];
        long maxPos = ThreadLocalRandom.current().nextInt(0, numSamples);
        long minPos = ThreadLocalRandom.current().nextInt(0, numSamples);
        int i = 0;
        for (long pos = 0; pos < numSamples; pos++) {
            if (pos > 0 && pos % clockInterval == 0) {
                clock.add(STEP);
            }
            long val = ThreadLocalRandom.current().nextLong(-VALUE_RANGE, VALUE_RANGE);
            reservoir.update(val);
            exactValues[i] = val;
            i++;
            // Insert an extreme max / min value at a random point in the reservoir
            if (pos == maxPos) {
                reservoir.update(MAX_VALUE);
                exactValues[i] = MAX_VALUE;
                i++;
            }
            if (pos == minPos) {
                reservoir.update(MIN_VALUE);
                exactValues[i] = MIN_VALUE;
                i++;
            }
        }

        final Snapshot snapshot = reservoir.getSnapshot();

        assertEquals("Max value", MAX_VALUE, snapshot.getMax());
        assertEquals("Min value", MIN_VALUE, snapshot.getMin());

        final long actualValues[] = Arrays.copyOf(snapshot.getValues(), snapshot.getValues().length);
        assertTrue("Reservoir contains values", actualValues.length > 1000);

        final Set<Long> exactValueSet = new HashSet<>();
        for (i = 0; i < exactValues.length; i++) {
            exactValueSet.add(exactValues[i]);
        }
        assertTrue("Only known values in the reservoir", Arrays
            .stream(actualValues)
            .filter(value -> !exactValueSet.contains(value))
            .count() == 0);

        final long zeroValueRange = (VALUE_RANGE * 10) / 100;
        assertThat("Mean value is within 10% error rate of 0", (long) snapshot.getMean(),
            allOf(greaterThan(-zeroValueRange), lessThan(zeroValueRange)));

        final long stdDev = (long) snapshot.getStdDev();
        assertThat("Mean deviation is more than 40% of value range", stdDev,
            greaterThan((VALUE_RANGE * 40) / 100));
        assertThat("Mean deviation is less than the max value range", stdDev,
            lessThan(MAX_VALUE));

        final Snapshot snapshot2 = reservoir.getSnapshot();
        assertArrayEquals("Two calls to get snapshot results in same data",
            snapshot.getValues(), snapshot2.getValues());
    }
}
项目:jstrom    文件:AsmHistogram.java   
private Histogram newHistogram() {
    return new Histogram(new ExponentiallyDecayingReservoir());
}