#1345 - Refactor io.ebean.meta.MetaInfoManager API (query execution metrics). Breaking change for people collecting query execution metrics.

This commit is contained in:
Rob Bygrave
2018-03-10 02:51:51 +13:00
parent eda6350d89
commit 85bfe3d03e
79 changed files with 928 additions and 466 deletions
@@ -3,8 +3,8 @@ package org.tests.query.finder;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import io.ebean.Transaction;
import io.ebean.meta.MetaInfoManager;
import io.ebean.meta.MetaQueryPlanStatistic;
import io.ebean.meta.BasicMetricVisitor;
import io.ebean.meta.MetaOrmQueryMetric;
import io.ebean.meta.MetaTimedMetric;
import org.ebeantest.LoggedSqlCollector;
import org.junit.Test;
@@ -136,9 +136,7 @@ public class TestCustomerFinder extends BaseTestCase {
ResetBasicData.reset();
MetaInfoManager metaInfoManager = Ebean.getDefaultServer().getMetaInfoManager();
metaInfoManager.collectQueryPlanStatistics(true);
metaInfoManager.collectTransactionStatistics(true);
resetAllMetrics();
List<Customer> customers = Customer.find.all();
assertThat(customers).isNotEmpty();
@@ -153,14 +151,16 @@ public class TestCustomerFinder extends BaseTestCase {
Customer.find.updateNames("Junk", 2000);
Customer.find.byId(3);
List<MetaQueryPlanStatistic> planStats = metaInfoManager.collectQueryPlanStatistics(true);
BasicMetricVisitor basic = server().getMetaInfoManager().visitBasic();
List<MetaOrmQueryMetric> planStats = basic.getOrmQueryMetrics();
assertThat(planStats.size()).isGreaterThan(4);
for (MetaQueryPlanStatistic planStat : planStats) {
for (MetaOrmQueryMetric planStat : planStats) {
System.out.println(planStat);
}
for (MetaTimedMetric txnTimed : metaInfoManager.collectTransactionStatistics(true)) {
for (MetaTimedMetric txnTimed : basic.getTimedMetrics()) {
System.out.println(txnTimed);
}
}
@@ -3,16 +3,17 @@ package org.tests.query.other;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import io.ebean.EbeanServer;
import io.ebean.meta.BasicMetricVisitor;
import io.ebean.meta.MetaInfoManager;
import io.ebean.meta.MetaObjectGraphNodeStats;
import io.ebean.meta.MetaQueryPlanStatistic;
import io.ebean.meta.MetaOrmQueryMetric;
import io.ebean.meta.MetaOrmQueryNode;
import org.junit.Assert;
import org.junit.Test;
import org.tests.model.basic.Address;
import org.tests.model.basic.Customer;
import org.tests.model.basic.Order;
import org.tests.model.basic.OrderDetail;
import org.tests.model.basic.ResetBasicData;
import org.junit.Assert;
import org.junit.Test;
import java.util.List;
@@ -30,19 +31,19 @@ public class TestObjectGraphNodeStatsCollection extends BaseTestCase {
server.find(Order.class).findCount();
infoManager.collectNodeStatistics(true);
infoManager.collectQueryPlanStatistics(true);
infoManager.resetAllMetrics();
runFindOrderQuery(server);
runFindCustomerQuery(server);
List<MetaObjectGraphNodeStats> nodeStatistics = infoManager.collectNodeStatistics(true);
for (MetaObjectGraphNodeStats stat : nodeStatistics) {
stat.toString();
List<MetaOrmQueryNode> nodeStatistics = infoManager.collectNodeStatistics(true);
for (MetaOrmQueryNode stat : nodeStatistics) {
System.out.println(stat);
}
List<MetaQueryPlanStatistic> planStatistics = infoManager.collectQueryPlanStatistics(true);
for (MetaQueryPlanStatistic planStatistic : planStatistics) {
planStatistic.getSql();
BasicMetricVisitor basic = infoManager.visitBasic();
for (MetaOrmQueryMetric queryMetric : basic.getOrmQueryMetrics()) {
System.out.println(queryMetric);
}
}
@@ -4,6 +4,7 @@ import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import io.ebean.SqlQuery;
import io.ebean.SqlRow;
import io.ebean.meta.MetaTimedMetric;
import org.ebeantest.LoggedSqlCollector;
import org.junit.Test;
import org.tests.model.basic.Order;
@@ -114,9 +115,13 @@ public class SqlQueryTests extends BaseTestCase {
ResetBasicData.reset();
SqlQuery sqlQuery = Ebean.createSqlQuery("select * from o_order where o_order.id > :id order by id");
sqlQuery.setParameter("id", 3);
sqlQuery.setMaxRows(10);
resetAllMetrics();
SqlQuery sqlQuery = Ebean.createSqlQuery("select * from o_order where o_order.id > :id order by id")
.setParameter("id", 3)
.setMaxRows(10)
.setLabel("findList-3-10");
LoggedSqlCollector.start();
sqlQuery.findList();
@@ -129,6 +134,8 @@ public class SqlQueryTests extends BaseTestCase {
} else {
assertThat(sql.get(0)).contains("select * from o_order where o_order.id > ? order by id limit 10;");
}
assertThat(sqlMetrics()).isNotEmpty();
}
@Test
@@ -136,8 +143,11 @@ public class SqlQueryTests extends BaseTestCase {
ResetBasicData.reset();
SqlQuery sqlQuery = Ebean.createSqlQuery("Select * from o_order");
sqlQuery.setMaxRows(10);
resetAllMetrics();
SqlQuery sqlQuery = Ebean.createSqlQuery("Select * from o_order")
.setMaxRows(10)
.setLabel("findEach-Max10Rows");
LoggedSqlCollector.start();
sqlQuery.findEach(bean -> bean.get("id"));
@@ -150,6 +160,10 @@ public class SqlQueryTests extends BaseTestCase {
} else {
assertThat(sql.get(0)).contains("limit 10");
}
List<MetaTimedMetric> sqlMetrics = sqlMetrics();
assertThat(sqlMetrics).hasSize(1);
assertThat(sqlMetrics.get(0).getName()).isEqualTo("sql.query.findEach-Max10Rows");
}
@Test