mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#1865 - ENH: Add metric collection for ORM insert update and delete
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
package io.ebeaninternal.server.deploy;
|
||||
|
||||
import io.ebean.meta.BasicMetricVisitor;
|
||||
import io.ebean.meta.MetaTimedMetric;
|
||||
import io.ebean.meta.MetricType;
|
||||
import io.ebeaninternal.server.core.PersistRequest;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class BeanIudMetricsTest {
|
||||
|
||||
|
||||
@Test
|
||||
public void addBatch() {
|
||||
|
||||
BeanIudMetrics iudMetrics = new BeanIudMetrics("one");
|
||||
|
||||
final long startNanos = System.nanoTime() - 10000;
|
||||
iudMetrics.addBatch(PersistRequest.Type.INSERT, startNanos, 4);
|
||||
|
||||
BasicMetricVisitor basic = new BasicMetricVisitor();
|
||||
iudMetrics.visit(basic);
|
||||
|
||||
List<MetaTimedMetric> timed = basic.getTimedMetrics();
|
||||
assertThat(timed).hasSize(1);
|
||||
|
||||
assertThat(timed.get(0).getCount()).isEqualTo(4);
|
||||
assertThat(timed.get(0).getName()).isEqualTo("iud.one.insertBatch");
|
||||
assertThat(timed.get(0).getMetricType()).isEqualTo(MetricType.IUD);
|
||||
|
||||
iudMetrics.addBatch(PersistRequest.Type.UPDATE, startNanos, 1);
|
||||
iudMetrics.addBatch(PersistRequest.Type.DELETE_SOFT, startNanos, 2);
|
||||
iudMetrics.addBatch(PersistRequest.Type.DELETE, startNanos, 4);
|
||||
iudMetrics.addBatch(PersistRequest.Type.DELETE_PERMANENT, startNanos, 8);
|
||||
iudMetrics.addBatch(PersistRequest.Type.INSERT, startNanos, 16);
|
||||
|
||||
basic = new BasicMetricVisitor();
|
||||
iudMetrics.visit(basic);
|
||||
timed = basic.getTimedMetrics();
|
||||
assertThat(timed).hasSize(3);
|
||||
|
||||
assertThat(timed.get(0).getCount()).isEqualTo(16);
|
||||
assertThat(timed.get(0).getName()).isEqualTo("iud.one.insertBatch");
|
||||
assertThat(timed.get(1).getCount()).isEqualTo(3);
|
||||
assertThat(timed.get(1).getName()).isEqualTo("iud.one.updateBatch");
|
||||
assertThat(timed.get(2).getCount()).isEqualTo(12);
|
||||
assertThat(timed.get(2).getName()).isEqualTo("iud.one.deleteBatch");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addNoBatch() {
|
||||
|
||||
BeanIudMetrics iudMetrics = new BeanIudMetrics("one");
|
||||
|
||||
final long startNanos = System.nanoTime() - 10000;
|
||||
iudMetrics.addNoBatch(PersistRequest.Type.INSERT, startNanos);
|
||||
iudMetrics.addNoBatch(PersistRequest.Type.UPDATE, startNanos);
|
||||
iudMetrics.addNoBatch(PersistRequest.Type.DELETE_SOFT, startNanos);
|
||||
iudMetrics.addNoBatch(PersistRequest.Type.DELETE, startNanos);
|
||||
iudMetrics.addNoBatch(PersistRequest.Type.DELETE_PERMANENT, startNanos);
|
||||
|
||||
BasicMetricVisitor basic = new BasicMetricVisitor();
|
||||
iudMetrics.visit(basic);
|
||||
|
||||
List<MetaTimedMetric> timed = basic.getTimedMetrics();
|
||||
assertThat(timed).hasSize(3);
|
||||
|
||||
assertThat(timed.get(0).getCount()).isEqualTo(1);
|
||||
assertThat(timed.get(0).getName()).isEqualTo("iud.one.insert");
|
||||
assertThat(timed.get(1).getCount()).isEqualTo(2);
|
||||
assertThat(timed.get(1).getName()).isEqualTo("iud.one.update");
|
||||
assertThat(timed.get(2).getCount()).isEqualTo(2);
|
||||
assertThat(timed.get(2).getName()).isEqualTo("iud.one.delete");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -30,4 +30,28 @@ public class DTimedMetricTest {
|
||||
assertThat(stats.getMax()).isEqualTo(stats.getTotal());
|
||||
assertThat(stats.getBeanCount()).isEqualTo(42);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addBatchSince() throws InterruptedException {
|
||||
|
||||
DTimedMetric metric = new DTimedMetric(MetricType.L2, "addSinceNanos");
|
||||
|
||||
long start = System.nanoTime();
|
||||
Thread.sleep(10);
|
||||
|
||||
metric.addBatchSince(start, 5);
|
||||
|
||||
DTimeMetricStats stats = metric.collect(true);
|
||||
assertThat(stats.getCount()).isEqualTo(5);
|
||||
assertThat(stats.getTotal()).isGreaterThan(10000);
|
||||
assertThat(stats.getMax()).isEqualTo(stats.getTotal() / 5);
|
||||
assertThat(stats.getMax()).isGreaterThan(10000 / 5);
|
||||
|
||||
metric.addBatchSince(start, 2);
|
||||
|
||||
stats = metric.collect(true);
|
||||
assertThat(stats.getCount()).isEqualTo(2);
|
||||
assertThat(stats.getTotal()).isGreaterThan(10000);
|
||||
assertThat(stats.getMax()).isEqualTo(stats.getTotal() / 2);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user