mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
Support a naming convention function that can be applied to metrics names for reporting
For example, can apply a lower case underscore naming convention to the metrics names. This can be done such that it doesn't have to be applied every time the metrics are collected and reported.
This commit is contained in:
+43
@@ -1,12 +1,55 @@
|
||||
package io.ebeaninternal.server.profile;
|
||||
|
||||
import io.ebean.meta.BasicMetricVisitor;
|
||||
import io.ebean.meta.MetaTimedMetric;
|
||||
import io.ebean.metric.MetricFactory;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class BasicProfileLocationTest {
|
||||
|
||||
Function<String,String> naming = (String name) -> "prefix[" + name.replace('.', '-') + "]";
|
||||
|
||||
@Test
|
||||
void metricNameFromOverride() {
|
||||
DTimedProfileLocation loc = new DTimedProfileLocation(12, "", MetricFactory.get().createTimedMetric("a.b.c"));
|
||||
loc.initWith("foo.label");
|
||||
loc.add(42);
|
||||
|
||||
BasicMetricVisitor visitor = new BasicMetricVisitor("v", naming);
|
||||
loc.visit(visitor);
|
||||
|
||||
List<MetaTimedMetric> result = visitor.timedMetrics();
|
||||
assertThat(result).hasSize(1);
|
||||
assertThat(result.get(0).name()).isEqualTo("prefix[txn-named-foo-label]");
|
||||
assertThat(result.get(0).total()).isEqualTo(42);
|
||||
|
||||
loc.add(21);
|
||||
BasicMetricVisitor visitor2 = new BasicMetricVisitor("v", naming);
|
||||
loc.visit(visitor2);
|
||||
List<MetaTimedMetric> result2 = visitor2.timedMetrics();
|
||||
assertThat(result2).hasSize(1);
|
||||
assertThat(result2.get(0).name()).isEqualTo("prefix[txn-named-foo-label]");
|
||||
assertThat(result2.get(0).total()).isEqualTo(21);
|
||||
}
|
||||
|
||||
@Test
|
||||
void metricNameFromTimed() {
|
||||
DTimedProfileLocation loc = new DTimedProfileLocation(12, "foo", MetricFactory.get().createTimedMetric("a.b.c"));
|
||||
loc.add(42);
|
||||
|
||||
BasicMetricVisitor visitor = new BasicMetricVisitor("v", naming);
|
||||
loc.visit(visitor);
|
||||
|
||||
List<MetaTimedMetric> result = visitor.timedMetrics();
|
||||
assertThat(result).hasSize(1);
|
||||
assertThat(result.get(0).name()).isEqualTo("prefix[a-b-c]");
|
||||
}
|
||||
|
||||
@Test
|
||||
void obtain() {
|
||||
DProfileLocation loc = new DTimedProfileLocation(12, "foo", MetricFactory.get().createTimedMetric("junk"));
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
package io.ebeaninternal.server.profile;
|
||||
|
||||
import io.ebean.meta.BasicMetricVisitor;
|
||||
import io.ebean.meta.MetaCountMetric;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class DCountMetricTest {
|
||||
|
||||
Function<String, String> naming = (String name) -> "prefix[" + name.replace('.', '-') + "]";
|
||||
|
||||
@Test
|
||||
void visit() {
|
||||
|
||||
DCountMetric counter = new DCountMetric("org.hello");
|
||||
counter.add(7);
|
||||
{
|
||||
BasicMetricVisitor visitor = new BasicMetricVisitor("v", naming);
|
||||
counter.visit(visitor);
|
||||
List<MetaCountMetric> result = visitor.countMetrics();
|
||||
|
||||
assertThat(result).hasSize(1);
|
||||
assertThat(result.get(0).name()).isEqualTo("prefix[org-hello]");
|
||||
assertThat(result.get(0).count()).isEqualTo(7);
|
||||
}
|
||||
{
|
||||
// second collection
|
||||
counter.add(4);
|
||||
counter.add(8);
|
||||
BasicMetricVisitor visitor2 = new BasicMetricVisitor("v", naming);
|
||||
counter.visit(visitor2);
|
||||
|
||||
List<MetaCountMetric> result2 = visitor2.countMetrics();
|
||||
assertThat(result2).hasSize(1);
|
||||
assertThat(result2.get(0).name()).isEqualTo("prefix[org-hello]");
|
||||
assertThat(result2.get(0).count()).isEqualTo(12);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package io.ebeaninternal.server.profile;
|
||||
|
||||
import io.ebean.meta.BasicMetricVisitor;
|
||||
import io.ebean.meta.MetaQueryMetric;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class DQueryPlanMetricTest {
|
||||
|
||||
Function<String, String> naming = (String name) -> "prefix[" + name.replace('.', '-') + "]";
|
||||
|
||||
@Test
|
||||
void visit() {
|
||||
|
||||
DQueryPlanMeta meta = new DQueryPlanMeta(Object.class, "lab", null, "sql");
|
||||
DTimedMetric metric = new DTimedMetric("org.timed.plan");
|
||||
DQueryPlanMetric planMetric = new DQueryPlanMetric(meta, metric);
|
||||
|
||||
metric.add(560);
|
||||
metric.add(260);
|
||||
{
|
||||
BasicMetricVisitor visitor = new BasicMetricVisitor("v", naming);
|
||||
planMetric.visit(visitor);
|
||||
List<MetaQueryMetric> result = visitor.queryMetrics();
|
||||
|
||||
assertThat(result).hasSize(1);
|
||||
assertThat(result.get(0).name()).isEqualTo("prefix[dto-Object_lab]");
|
||||
assertThat(result.get(0).count()).isEqualTo(2);
|
||||
assertThat(result.get(0).total()).isEqualTo(820);
|
||||
}
|
||||
metric.add(410);
|
||||
{
|
||||
BasicMetricVisitor visitor = new BasicMetricVisitor("v", naming);
|
||||
planMetric.visit(visitor);
|
||||
List<MetaQueryMetric> result = visitor.queryMetrics();
|
||||
|
||||
assertThat(result).hasSize(1);
|
||||
assertThat(result.get(0).name()).isEqualTo("prefix[dto-Object_lab]");
|
||||
assertThat(result.get(0).count()).isEqualTo(1);
|
||||
assertThat(result.get(0).total()).isEqualTo(410);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,12 @@
|
||||
package io.ebeaninternal.server.profile;
|
||||
|
||||
import io.ebean.meta.BasicMetricVisitor;
|
||||
import io.ebean.meta.MetaTimedMetric;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class DTimedMetricTest {
|
||||
@@ -52,4 +57,37 @@ public class DTimedMetricTest {
|
||||
assertThat(stats.total()).isGreaterThan(10000);
|
||||
assertThat(stats.max()).isEqualTo(stats.total() / 2);
|
||||
}
|
||||
|
||||
Function<String, String> naming = (String name) -> "prefix[" + name.replace('.', '-') + "]";
|
||||
|
||||
@Test
|
||||
void visit() {
|
||||
DTimedMetric metric = new DTimedMetric("org.timed");
|
||||
metric.add(560);
|
||||
metric.add(500);
|
||||
{
|
||||
BasicMetricVisitor visitor = new BasicMetricVisitor("v", naming);
|
||||
metric.visit(visitor);
|
||||
List<MetaTimedMetric> result = visitor.timedMetrics();
|
||||
|
||||
assertThat(result).hasSize(1);
|
||||
assertThat(result.get(0).name()).isEqualTo("prefix[org-timed]");
|
||||
assertThat(result.get(0).count()).isEqualTo(2);
|
||||
assertThat(result.get(0).total()).isEqualTo(1060);
|
||||
}
|
||||
|
||||
metric.add(160);
|
||||
metric.add(100);
|
||||
metric.add(150);
|
||||
{
|
||||
BasicMetricVisitor visitor = new BasicMetricVisitor("v", naming);
|
||||
metric.visit(visitor);
|
||||
List<MetaTimedMetric> result = visitor.timedMetrics();
|
||||
|
||||
assertThat(result).hasSize(1);
|
||||
assertThat(result.get(0).name()).isEqualTo("prefix[org-timed]");
|
||||
assertThat(result.get(0).count()).isEqualTo(3);
|
||||
assertThat(result.get(0).total()).isEqualTo(410);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user