/**
* Package private constructor for unit test.
*/
AnomalyDetector(LinkedBlockingDeque<Anomaly> anomalies,
long anomalyDetectionIntervalMs,
KafkaCruiseControl kafkaCruiseControl,
AnomalyNotifier anomalyNotifier,
GoalViolationDetector goalViolationDetector,
BrokerFailureDetector brokerFailureDetector,
ScheduledExecutorService detectorScheduler) {
_anomalies = anomalies;
_anomalyDetectionIntervalMs = anomalyDetectionIntervalMs;
_anomalyNotifier = anomalyNotifier;
_goalViolationDetector = goalViolationDetector;
_brokerFailureDetector = brokerFailureDetector;
_kafkaCruiseControl = kafkaCruiseControl;
_detectorScheduler = detectorScheduler;
_shutdown = false;
_brokerFailureRate = new Meter();
_goalViolationRate = new Meter();
}
java类com.codahale.metrics.Meter的实例源码
AnomalyDetector.java 文件源码
项目:cruise-control
阅读 37
收藏 0
点赞 0
评论 0
TrainingFetcher.java 文件源码
项目:cruise-control
阅读 29
收藏 0
点赞 0
评论 0
TrainingFetcher(MetricSampler metricSampler,
Cluster cluster,
SampleStore sampleStore,
Set<TopicPartition> assignedPartitions,
long startTimeMs,
long endTimeMs,
Timer fetcherTimer,
Meter fetcherFailureRate) {
_cluster = cluster;
_sampleStore = sampleStore;
_metricSampler = metricSampler;
_startTimeMs = startTimeMs;
_endTimeMs = endTimeMs;
_assignedPartitions = assignedPartitions;
_fetcherTimer = fetcherTimer;
_fetcherFailureRate = fetcherFailureRate;
}
SamplingFetcher.java 文件源码
项目:cruise-control
阅读 27
收藏 0
点赞 0
评论 0
SamplingFetcher(MetricSampler metricSampler,
Cluster cluster,
MetricSampleAggregator metricSampleAggregator,
SampleStore sampleStore,
Set<TopicPartition> assignedPartitions,
long startTimeMs,
long endTimeMs,
boolean leaderValidation,
boolean useLinearRegressionModel,
Timer fetchTimer,
Meter fetchFailureRate) {
_metricSampler = metricSampler;
_cluster = cluster;
_metricSampleAggregator = metricSampleAggregator;
_sampleStore = sampleStore;
_assignedPartitions = assignedPartitions;
_startTimeMs = startTimeMs;
_endTimeMs = endTimeMs;
_leaderValidation = leaderValidation;
_useLinearRegressionModel = useLinearRegressionModel;
_fetchTimer = fetchTimer;
_fetchFailureRate = fetchFailureRate;
}
AbstractMeteredLoadProcessorTest.java 文件源码
项目:pyplyn
阅读 32
收藏 0
点赞 0
评论 0
@Test
public void testMetersRetrievedAndMarkIsDelegated() throws Exception {
// ARRANGE
SystemStatus systemStatus = mock(SystemStatus.class);
Meter meter = mock(Meter.class);
doReturn(meter).when(systemStatus).meter(anyString(), any());
AbstractMeteredLoadProcessorImpl processor = spy(new AbstractMeteredLoadProcessorImpl(0, null, 0, null));
processor.setSystemStatus(systemStatus);
// ACT
processor.succeeded();
processor.failed();
processor.authenticationFailure();
// ASSERT
verify(processor, times(3)).meterName(); // FindBugs: RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT - IGNORE
verify(systemStatus, times(3)).meter(anyString(), any());
verify(meter, times(3)).mark();
}
AbstractMeteredExtractProcessorTest.java 文件源码
项目:pyplyn
阅读 26
收藏 0
点赞 0
评论 0
@Test
public void testMetersRetrievedAndMarkIsDelegated() throws Exception {
// ARRANGE
SystemStatus systemStatus = mock(SystemStatus.class);
Meter meter = mock(Meter.class);
doReturn(meter).when(systemStatus).meter(anyString(), any());
processor.setSystemStatus(systemStatus);
// ACT
processor.succeeded();
processor.failed();
processor.noData();
processor.authenticationFailure();
// ASSERT
verify(processor, times(4)).meterName(); // FindBugs: RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT - IGNORE
verify(systemStatus, times(4)).meter(anyString(), any());
verify(meter, times(4)).mark();
}
FeignOutboundMetricsMethodHandlerTest.java 文件源码
项目:metrics-feign
阅读 35
收藏 0
点赞 0
评论 0
@Test(expected = FeignException.class)
public void exception() {
stubFor(post(anyUrl()).willReturn(aResponse().withStatus(400)));
MyClientWithAnnotationOnMethodLevel target = Feign.builder().invocationHandlerFactory(
new FeignOutboundMetricsDecorator(new InvocationHandlerFactory.Default(), metricRegistry))
.target(MyClientWithAnnotationOnMethodLevel.class,
String.format("http://localhost:%d", wireMockRule.port()));
try {
target.myMethod();
} finally {
assertMetrics();
Set<Map.Entry<String, Meter>> entries = metricRegistry.getMeters().entrySet();
entries.forEach(entry -> {
if (entry.getKey().endsWith(ExceptionMetered.DEFAULT_NAME_SUFFIX)) {
assertEquals(String.format("wrong number of invocations in metric %s", entry.getKey()), 1,
entry.getValue().getCount());
}
});
}
}
FeignOutboundMetricsMethodHandlerTest.java 文件源码
项目:metrics-feign
阅读 25
收藏 0
点赞 0
评论 0
private void assertMetrics() {
Timer timer = metricRegistry.getTimers().values().iterator().next();
assertEquals("wrong number of invocations in metric.", 1, timer.getCount());
assertTrue("wrong value of mean in metric.", timer.getMeanRate() > 0);
assertEquals("wrong number of meter metrics.", 2, metricRegistry.getMeters().values().size());
Set<Map.Entry<String, Meter>> entries = metricRegistry.getMeters().entrySet();
entries.forEach(entry -> {
if (entry.getKey().endsWith("Metered")) {
assertEquals(String.format("wrong number of invocations in metric %s", entry.getKey()), 1,
entry.getValue().getCount());
}
});
}
InfluxDbMeasurementReporter.java 文件源码
项目:dropwizard-influxdb-reporter
阅读 25
收藏 0
点赞 0
评论 0
@Override
public void report(final SortedMap<String, Gauge> gauges,
final SortedMap<String, Counter> counters,
final SortedMap<String, Histogram> histograms,
final SortedMap<String, Meter> meters,
final SortedMap<String, Timer> timers) {
final long timestamp = clock.instant().toEpochMilli();
final ImmutableList<InfluxDbMeasurement> influxDbMeasurements = ImmutableList.<InfluxDbMeasurement>builder()
.addAll(transformer.fromGauges(gauges, timestamp))
.addAll(transformer.fromCounters(counters, timestamp))
.addAll(transformer.fromHistograms(histograms, timestamp))
.addAll(transformer.fromMeters(meters, timestamp))
.addAll(transformer.fromTimers(timers, timestamp))
.build();
sender.send(influxDbMeasurements);
}
DropwizardTransformer.java 文件源码
项目:dropwizard-influxdb-reporter
阅读 35
收藏 0
点赞 0
评论 0
/**
* Build an {@link InfluxDbMeasurement} from a meter.
*/
@VisibleForTesting InfluxDbMeasurement fromMeter(final String metricName, final Meter mt, final long timestamp) {
final DropwizardMeasurement measurement = parser.parse(metricName);
final Map<String, String> tags = new HashMap<>(baseTags);
tags.putAll(measurement.tags());
return new InfluxDbMeasurement.Builder(measurement.name(), timestamp)
.putTags(tags)
.putField("count", mt.getCount())
.putField("one-minute", convertRate(mt.getOneMinuteRate()))
.putField("five-minute", convertRate(mt.getFiveMinuteRate()))
.putField("fifteen-minute", convertRate(mt.getFifteenMinuteRate()))
.putField("mean-minute", convertRate(mt.getMeanRate()))
.build();
}
MetricsElasticsearchModule.java 文件源码
项目:oneops
阅读 25
收藏 0
点赞 0
评论 0
@Override
public void serialize(JsonMeter jsonMeter,
JsonGenerator json,
SerializerProvider provider) throws IOException {
json.writeStartObject();
json.writeStringField("name", jsonMeter.name());
json.writeObjectField(timestampFieldname, jsonMeter.timestampAsDate());
Meter meter = jsonMeter.value();
json.writeNumberField("count", meter.getCount());
json.writeNumberField("m1_rate", meter.getOneMinuteRate() * rateFactor);
json.writeNumberField("m5_rate", meter.getFiveMinuteRate() * rateFactor);
json.writeNumberField("m15_rate", meter.getFifteenMinuteRate() * rateFactor);
json.writeNumberField("mean_rate", meter.getMeanRate() * rateFactor);
json.writeStringField("units", rateUnit);
addOneOpsMetadata(json);
json.writeEndObject();
}
OpenFlowControlMessageAggregator.java 文件源码
项目:athena
阅读 24
收藏 0
点赞 0
评论 0
/**
* Generates an OpenFlow message aggregator instance.
* The instance is for aggregating a specific OpenFlow message
* type of an OpenFlow switch.
*
* @param metricsService metrics service reference object
* @param providerService control message provider service reference object
* @param deviceId device identification
*/
public OpenFlowControlMessageAggregator(MetricsService metricsService,
ControlMessageProviderService providerService,
DeviceId deviceId) {
MetricsComponent mc = metricsService.registerComponent(deviceId.toString());
OF_TYPE_SET.forEach(type -> {
MetricsFeature metricsFeature = mc.registerFeature(type.toString());
Meter rateMeter = metricsService.createMeter(mc, metricsFeature, RATE_NAME);
Meter countMeter = metricsService.createMeter(mc, metricsFeature, COUNT_NAME);
rateMeterMap.put(type, rateMeter);
countMeterMap.put(type, countMeter);
});
this.deviceId = deviceId;
this.providerService = providerService;
metricsService.notifyReporters();
}
IntentEventsMetricsCommand.java 文件源码
项目:athena
阅读 22
收藏 0
点赞 0
评论 0
/**
* Prints an Event Metric.
*
* @param operationStr the string with the intent operation to print
* @param eventMetric the Event Metric to print
*/
private void printEventMetric(String operationStr,
EventMetric eventMetric) {
Gauge<Long> gauge = eventMetric.lastEventTimestampGauge();
Meter meter = eventMetric.eventRateMeter();
TimeUnit rateUnit = TimeUnit.SECONDS;
double rateFactor = rateUnit.toSeconds(1);
// Print the Gauge
print(FORMAT_GAUGE, operationStr, gauge.getValue());
// Print the Meter
print(FORMAT_METER, operationStr, meter.getCount(),
meter.getMeanRate() * rateFactor,
meter.getOneMinuteRate() * rateFactor,
meter.getFiveMinuteRate() * rateFactor,
meter.getFifteenMinuteRate() * rateFactor);
}
TopologyEventsMetricsCommand.java 文件源码
项目:athena
阅读 26
收藏 0
点赞 0
评论 0
/**
* Prints an Event Metric.
*
* @param operationStr the string with the intent operation to print
* @param eventMetric the Event Metric to print
*/
private void printEventMetric(String operationStr,
EventMetric eventMetric) {
Gauge<Long> gauge = eventMetric.lastEventTimestampGauge();
Meter meter = eventMetric.eventRateMeter();
TimeUnit rateUnit = TimeUnit.SECONDS;
double rateFactor = rateUnit.toSeconds(1);
// Print the Gauge
print(FORMAT_GAUGE, operationStr, gauge.getValue());
// Print the Meter
print(FORMAT_METER, operationStr, meter.getCount(),
meter.getMeanRate() * rateFactor,
meter.getOneMinuteRate() * rateFactor,
meter.getFiveMinuteRate() * rateFactor,
meter.getFifteenMinuteRate() * rateFactor);
}
MetricCodecTest.java 文件源码
项目:athena
阅读 24
收藏 0
点赞 0
评论 0
/**
* Tests encoding of a Metric object.
*/
@Test
public void testMetricEncode() {
Counter counter = new Counter();
Meter meter = new Meter();
Timer timer = new Timer();
counter.inc();
meter.mark();
timer.update(1, TimeUnit.MILLISECONDS);
ObjectNode counterJson = metricCodec.encode(counter, context);
assertThat(counterJson.get("counter"), matchesMetric(counter));
ObjectNode meterJson = metricCodec.encode(meter, context);
assertThat(meterJson.get("meter"), matchesMetric(meter));
ObjectNode timerJson = metricCodec.encode(timer, context);
assertThat(timerJson.get("timer"), matchesMetric(timer));
}
AstyanaxEventReaderDAO.java 文件源码
项目:emodb
阅读 33
收藏 0
点赞 0
评论 0
private static ExecutorService defaultCleanupExecutor(String metricsGroup, LifeCycleRegistry lifeCycle, MetricRegistry metricRegistry) {
final Meter meter = metricRegistry.meter(MetricRegistry.name(metricsGroup, "AstyanaxEventReaderDAO", "discarded_slab_cleanup"));
String nameFormat = "Events Slab Reader Cleanup-" + metricsGroup.substring(metricsGroup.lastIndexOf('.') + 1) + "-%d";
ExecutorService executor = new ThreadPoolExecutor(
NUM_CLEANUP_THREADS, NUM_CLEANUP_THREADS,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(MAX_CLEANUP_QUEUE_LENGTH),
new ThreadFactoryBuilder().setNameFormat(nameFormat).build(),
new ThreadPoolExecutor.DiscardPolicy() {
@Override
public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
meter.mark();
}
});
lifeCycle.manage(new ExecutorServiceManager(executor, Duration.seconds(5), nameFormat));
return executor;
}
SemanticMetricRegistry.java 文件源码
项目:semantic-metrics
阅读 26
收藏 0
点赞 0
评论 0
private void notifyListenerOfRemovedMetric(
final MetricId name, final Metric metric, final SemanticMetricRegistryListener listener
) {
if (metric instanceof Gauge) {
listener.onGaugeRemoved(name);
} else if (metric instanceof Counter) {
listener.onCounterRemoved(name);
} else if (metric instanceof Histogram) {
listener.onHistogramRemoved(name);
} else if (metric instanceof Meter) {
listener.onMeterRemoved(name);
} else if (metric instanceof Timer) {
listener.onTimerRemoved(name);
} else if (metric instanceof DerivingMeter) {
listener.onDerivingMeterRemoved(name);
} else {
throw new IllegalArgumentException("Unknown metric type: " + metric.getClass());
}
}
CirconusReporterTest.java 文件源码
项目:metrics-circonus
阅读 22
收藏 0
点赞 0
评论 0
@Test
public void reportsCounters() throws Exception {
final Counter counter = mock(Counter.class);
when(counter.getCount()).thenReturn(100L);
reporter.report(this.<Gauge>map(),
this.<Counter>map("counter", counter),
this.<Histogram>map(),
this.<Meter>map(),
this.<Timer>map());
final InOrder inOrder = inOrder(transport, request);
inOrder.verify(transport).prepare();
inOrder.verify(request).addGauge(new CirconusGauge("counter", 100L, timestamp, HOST, tags));
inOrder.verify(request).send();
verify(transport).prepare();
verify(request).send();
verifyNoMoreInteractions(transport, request);
}
HawkularReporterITest.java 文件源码
项目:hawkular-dropwizard-reporter
阅读 22
收藏 0
点赞 0
评论 0
@Test
public void shouldUseFailoverMaxRequests() throws IOException, InterruptedException {
String metricName = randomName();
HawkularReporter reporter = HawkularReporter.builder(registry, defaultTenant)
.uri("http://invalid:999")
.failoverCacheMaxSize(3)
.build();
Meter meter = registry.meter(metricName);
meter.mark(1000);
Thread.sleep(100);
meter.mark(1000);
reporter.report();
// 6 requests (6 = 5 tags + 1 metric), but majored by 3
assertThat(((JdkHawkularHttpClient) reporter.getHawkularClient()).getFailoverCacheSize()).isEqualTo(3);
}
DefaultRateLimiter.java 文件源码
项目:fili
阅读 24
收藏 0
点赞 0
评论 0
/**
* Creates a new RateLimitRequestToken.
*
* @param count The atomic reference that holds the amount of in-flight requests the user owns
* @param userName The user who launched the request
* @param isUIQuery Whether or not this query was generated from the UI
* @param requestLimit The limit of requests the user is allowed to launch
* @param requestMeter Meter tracking the amount of requests that have been launched
* @param rejectMeter Meter tracking the amount of requests that have been rejected
*
* @return a new RateLimitRequestToken, representing an in-flight (or rejected) request that is tracked by the
* RateLimiter
*/
protected RateLimitRequestToken createNewRateLimitRequestToken(AtomicInteger count, String userName,
boolean isUIQuery, int requestLimit, Meter requestMeter, Meter rejectMeter) {
if (!incrementAndCheckCount(globalCount, requestLimitGlobal)) {
rejectRequest(rejectMeter, true, isUIQuery, userName);
return REJECT_REQUEST_TOKEN;
}
// Bind to the user
if (!incrementAndCheckCount(count, requestLimit)) {
// Decrement the global count that had already been incremented
globalCount.decrementAndGet();
rejectRequest(rejectMeter, false, isUIQuery, userName);
return REJECT_REQUEST_TOKEN;
}
// Measure the accepted request and current open connections
requestMeter.mark();
requestGlobalCounter.inc();
// Return new request token
RateLimitCleanupOnRequestComplete callback = generateCleanupClosure(count, userName);
return new CallbackRateLimitRequestToken(true, callback);
}
SignalFxAwareCodahaleMetricsCollectorTest.java 文件源码
项目:riposte
阅读 28
收藏 0
点赞 0
评论 0
@DataProvider(value = {
"null",
"0",
"1",
"2"
}, splitBy = "\\|")
@Test
public void getNamedMeter_with_iterable_dimensions_creates_dimensioned_meter_using_sfx_mechanisms(
Integer numDimensions
) {
// given
String meterName = UUID.randomUUID().toString();
List<Pair<String, String>> iterableDims = generateIterableDimensions(numDimensions);
// when
Meter result = sfxImpl.getNamedMeter(meterName, iterableDims);
// then
verifyMetricCreation(MetricBuilder.METERS, meterTaggerMock, meterName, iterableDims, meterMock, result);
}
MetricsBaseTest.java 文件源码
项目:quarks
阅读 24
收藏 0
点赞 0
评论 0
private final void rateMeter(String[] data) throws Exception {
Topology t = newTopology();
TStream<String> s = t.strings(data);
s = Metrics.rateMeter(s);
waitUntilComplete(t, s, data);
if (metricRegistry != null) {
SortedMap<String, Meter> meters = metricRegistry.getMeters();
assertEquals(1, meters.size());
Collection<Meter> values = meters.values();
for (Meter v : values) {
assertEquals(data.length, v.getCount());
}
}
}
CustomMetricRegistry.java 文件源码
项目:mongoose-base
阅读 29
收藏 0
点赞 0
评论 0
private void notifyListenerOfAddedMetric(
final MetricRegistryListener listener, final Metric metric, final String name
) {
if(metric instanceof Gauge) {
listener.onGaugeAdded(name, (Gauge<?>) metric);
} else if(metric instanceof Counter) {
listener.onCounterAdded(name, (Counter) metric);
} else if(metric instanceof Histogram) {
listener.onHistogramAdded(name, (Histogram) metric);
} else if(metric instanceof Meter) {
listener.onMeterAdded(name, (Meter) metric);
} else if(metric instanceof Timer) {
listener.onTimerAdded(name, (Timer) metric);
} else {
throw new IllegalArgumentException("Unsupported metric type: " + metric.getClass());
}
}
CustomMetricRegistry.java 文件源码
项目:mongoose-base
阅读 36
收藏 0
点赞 0
评论 0
private void notifyListenerOfRemovedMetric(
final String name, final Metric metric, final MetricRegistryListener listener
) {
if(metric instanceof Gauge) {
listener.onGaugeRemoved(name);
} else if(metric instanceof Counter) {
listener.onCounterRemoved(name);
} else if(metric instanceof Histogram) {
listener.onHistogramRemoved(name);
} else if(metric instanceof Meter) {
listener.onMeterRemoved(name);
} else if(metric instanceof Timer) {
listener.onTimerRemoved(name);
} else {
throw new IllegalArgumentException("Unsupported metric type: " + metric.getClass());
}
}
MeterTimer.java 文件源码
项目:outland
阅读 23
收藏 0
点赞 0
评论 0
default <T> T metric(Timer timer, Meter meter, Supplier<T> supplier) {
Timer.Context time = timer.time();
try {
meter.mark();
return supplier.get();
} finally {
time.stop();
}
}
DropwizardFunctionCounter.java 文件源码
项目:micrometer
阅读 20
收藏 0
点赞 0
评论 0
DropwizardFunctionCounter(Id id, Clock clock,
T obj, ToDoubleFunction<T> f) {
super(id);
this.ref = new WeakReference<>(obj);
this.f = f;
this.rate = new DropwizardRate(clock);
this.dropwizardMeter = new Meter(new DropwizardClock(clock)) {
@Override
public double getFifteenMinuteRate() {
count();
return rate.getFifteenMinuteRate();
}
@Override
public double getFiveMinuteRate() {
count();
return rate.getFiveMinuteRate();
}
@Override
public double getOneMinuteRate() {
count();
return rate.getOneMinuteRate();
}
@Override
public long getCount() {
return (long) count();
}
};
}
FeignOutboundMetricsDecorator.java 文件源码
项目:metrics-feign
阅读 23
收藏 0
点赞 0
评论 0
public MethodHandlerDecorator(final Method method, final MethodHandler methodHandler,
final ConcurrentMap<Method, Meter> meters,
final ConcurrentMap<Method, ExceptionMeterMetric> exceptionMeters,
final ConcurrentMap<Method, Timer> timers) {
this.method = method;
this.methodHandler = methodHandler;
this.meters = meters;
this.exceptionMeters = exceptionMeters;
this.timers = timers;
}
FeignOutboundMetricsDecorator.java 文件源码
项目:metrics-feign
阅读 32
收藏 0
点赞 0
评论 0
@Override
public Object invoke(Object[] argv) throws Throwable {
try {
final Meter meter = this.meters.get(method);
if (meter != null) {
meter.mark();
}
final Timer timer = this.timers.get(method);
if (timer != null) {
this.context = timer.time();
}
return methodHandler.invoke(argv);
} catch (Exception e) {
final FeignOutboundMetricsDecorator.ExceptionMeterMetric metric =
(method != null) ? this.exceptionMeters.get(method) : null;
if (metric != null && (metric.cause.isAssignableFrom(e.getClass()) || (e.getCause() != null
&& metric.cause.isAssignableFrom(e.getCause().getClass())))) {
metric.meter.mark();
}
throw e;
} finally {
if (this.context != null) {
this.context.close();
}
}
}
ApptuitReporter.java 文件源码
项目:JInsight
阅读 28
收藏 0
点赞 0
评论 0
@Override
public void report(SortedMap<String, Gauge> gauges, SortedMap<String, Counter> counters,
SortedMap<String, Histogram> histograms, SortedMap<String, Meter> meters,
SortedMap<String, Timer> timers) {
DataPointCollector collector = new DataPointCollector(System.currentTimeMillis() / 1000);
buildReportTimer.time(() -> {
debug("################");
debug(">>>>>>>> Guages <<<<<<<<<");
gauges.forEach(collector::collectGauge);
debug(">>>>>>>> Counters <<<<<<<<<");
counters.forEach(collector::collectCounter);
debug(">>>>>>>> Histograms <<<<<<<<<");
histograms.forEach(collector::collectHistogram);
debug(">>>>>>>> Meters <<<<<<<<<");
meters.forEach(collector::collectMeter);
debug(">>>>>>>> Timers <<<<<<<<<");
timers.forEach(collector::collectTimer);
debug("################");
});
sendReportTimer.time(() -> {
Collection<DataPoint> dataPoints = collector.dataPoints;
dataPointsReporter.put(dataPoints);
//dataPoints.forEach(System.out::println);
});
}
DropwizardTransformerTest.java 文件源码
项目:dropwizard-influxdb-reporter
阅读 22
收藏 0
点赞 0
评论 0
@Test
public void testFromMeter() {
final Set<String> fieldKeys = ImmutableSet.of(
"count",
"one-minute",
"five-minute",
"fifteen-minute",
"mean-minute"
);
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 Meter meter = new Meter();
meter.mark(50L);
meter.mark(64L);
meter.mark(80L);
final InfluxDbMeasurement measurement = transformer.fromMeter("some.metric.name", meter, 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 meter fields", fieldKeys, measurement.fields().keySet());
}
MetricsUtil.java 文件源码
项目:logistimo-web-service
阅读 26
收藏 0
点赞 0
评论 0
public static Meter getMeter(Class clazz, String key) {
Meter
meter =
_metrics.getMeters() != null ? _metrics.getMeters().get(MetricRegistry.name(clazz, key))
: null;
if (meter == null) {
return _metrics.meter(MetricRegistry.name(clazz, key));
}
return meter;
}