#1586 - ENH: Add TimedMetric.addSinceNanos() ... as a helper when using start nanos

This commit is contained in:
rob bygrave
2018-12-21 02:28:23 +13:00
parent 81f42f8e95
commit baa3909c63
6 changed files with 37 additions and 0 deletions
@@ -22,6 +22,11 @@ public interface TimedMetric {
*/
void addSinceNanos(long startNanos);
/**
* Add a time event given the start nanos and bean count.
*/
void addSinceNanos(long startNanos, long beans);
/**
* Return true if there are no metrics collected since the last collection.
*/
@@ -12,6 +12,11 @@ public interface TimedMetricMap {
*/
void addSinceNanos(String key, long startNanos);
/**
* Add a time event given the start nanos and beans.
*/
void addSinceNanos(String key, long startNanos, int beans);
/**
* Add an execution for the given key.
*/
@@ -40,6 +40,11 @@ class DTimedMetric implements TimedMetric {
add((System.nanoTime() - startNanos) / 1000L);
}
@Override
public void addSinceNanos(long startNanos, long beans) {
add((System.nanoTime() - startNanos) / 1000L, beans);
}
/**
* Add a value. Usually the value is Time or Bytes etc.
*/
@@ -24,6 +24,11 @@ class DTimedMetricMap implements TimedMetricMap {
add(key, (System.nanoTime() - startNanos)/1000L);
}
@Override
public void addSinceNanos(String key, long startNanos, int beans) {
add(key, (System.nanoTime() - startNanos)/1000L, beans);
}
@Override
public void add(String key, long exeMicros) {
map.computeIfAbsent(key, (k) -> new DTimedMetric(metricType, name + key)).add(exeMicros);
@@ -25,5 +25,15 @@ public class DTimedMetricMapTest {
MetaTimedMetric timedMetric = visitor.getTimedMetrics().get(0);
assertThat(timedMetric.getCount()).isEqualTo(1);
assertThat(timedMetric.getTotal()).isGreaterThan(10);
metricMap.addSinceNanos("some", nanos, 42);
visitor = new BasicMetricVisitor();
metricMap.visit(visitor);
timedMetric = visitor.getTimedMetrics().get(0);
assertThat(timedMetric.getCount()).isEqualTo(1);
assertThat(timedMetric.getTotal()).isGreaterThan(10);
assertThat(timedMetric.getBeanCount()).isEqualTo(42);
}
}
@@ -22,5 +22,12 @@ public class DTimedMetricTest {
assertThat(stats.getTotal()).isGreaterThan(10);
assertThat(stats.getMax()).isEqualTo(stats.getTotal());
metric.addSinceNanos(start, 42);
stats = metric.collect(true);
assertThat(stats.getCount()).isEqualTo(1);
assertThat(stats.getTotal()).isGreaterThan(10);
assertThat(stats.getMax()).isEqualTo(stats.getTotal());
assertThat(stats.getBeanCount()).isEqualTo(42);
}
}