mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#1345 - Refactor io.ebean.meta.MetaInfoManager API (query execution metrics). Breaking change for people collecting query execution metrics.
This commit is contained in:
@@ -6,7 +6,7 @@ import io.ebean.EbeanServer;
|
||||
import io.ebean.Transaction;
|
||||
import io.ebean.annotation.PersistBatch;
|
||||
import io.ebean.annotation.Transactional;
|
||||
import io.ebean.meta.MetaInfoManager;
|
||||
import io.ebean.meta.BasicMetricVisitor;
|
||||
import io.ebean.meta.MetaTimedMetric;
|
||||
import io.ebeaninternal.api.SpiTransaction;
|
||||
import org.ebeantest.LoggedSqlCollector;
|
||||
@@ -29,8 +29,7 @@ public class TestBatchInsertFlush extends BaseTestCase {
|
||||
|
||||
EbeanServer server = Ebean.getDefaultServer();
|
||||
|
||||
MetaInfoManager metaInfoManager = server.getMetaInfoManager();
|
||||
metaInfoManager.collectTransactionStatistics(true);
|
||||
resetAllMetrics();
|
||||
|
||||
Transaction transaction = server.beginTransaction();
|
||||
try {
|
||||
@@ -76,7 +75,8 @@ public class TestBatchInsertFlush extends BaseTestCase {
|
||||
transaction.end();
|
||||
}
|
||||
|
||||
List<MetaTimedMetric> txnStats = metaInfoManager.collectTransactionStatistics(true);
|
||||
BasicMetricVisitor basic = visitMetricsBasic();
|
||||
List<MetaTimedMetric> txnStats = basic.getTimedMetrics();
|
||||
for (MetaTimedMetric txnMetric : txnStats) {
|
||||
System.out.println(txnMetric);
|
||||
}
|
||||
|
||||
@@ -2,25 +2,34 @@ package org.tests.m2m;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.meta.MetaTimedMetric;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.tests.model.m2m.Permission;
|
||||
import org.tests.model.m2m.Role;
|
||||
import org.tests.model.m2m.Tenant;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class TestM2mDeleteObject extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
|
||||
Ebean.createUpdate(Permission.class, "delete from Permission").execute();
|
||||
resetAllMetrics();
|
||||
|
||||
Ebean.createUpdate(Permission.class, "delete from Permission").setLabel("deleteAllPermissions").execute();
|
||||
Ebean.createUpdate(Tenant.class, "delete from Tenant").execute();
|
||||
Ebean.createUpdate(Role.class, "delete from Role").execute();
|
||||
|
||||
List<MetaTimedMetric> sqlMetrics = sqlMetrics();
|
||||
assertThat(sqlMetrics).hasSize(1);
|
||||
assertThat(sqlMetrics.get(0).getName()).isEqualTo("orm.update.deleteAllPermissions");
|
||||
|
||||
Tenant t = new Tenant("tenant");
|
||||
|
||||
Ebean.save(t);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -5,7 +5,6 @@ import io.ebean.Ebean;
|
||||
import io.ebean.Transaction;
|
||||
import io.ebean.annotation.Transactional;
|
||||
import io.ebean.annotation.TxType;
|
||||
import io.ebean.meta.MetaInfoManager;
|
||||
import io.ebean.meta.MetaTimedMetric;
|
||||
import org.junit.Test;
|
||||
import org.slf4j.Logger;
|
||||
@@ -19,17 +18,16 @@ public class TestNestedMandatory extends BaseTestCase {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(TestNestedMandatory.class);
|
||||
|
||||
static Transaction outerTxn;
|
||||
private static Transaction outerTxn;
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
|
||||
MetaInfoManager metaInfoManager = Ebean.getDefaultServer().getMetaInfoManager();
|
||||
metaInfoManager.collectTransactionStatistics(true);
|
||||
resetAllMetrics();
|
||||
|
||||
new Outer().doOuter();
|
||||
|
||||
List<MetaTimedMetric> txnMetrics = metaInfoManager.collectTransactionStatistics(true);
|
||||
List<MetaTimedMetric> txnMetrics = visitTimedMetrics();
|
||||
for (MetaTimedMetric txnTimed : txnMetrics) {
|
||||
System.out.println(txnTimed);
|
||||
}
|
||||
|
||||
@@ -3,10 +3,13 @@ package org.tests.update;
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.SqlUpdate;
|
||||
import io.ebean.meta.MetaTimedMetric;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.tests.idkeys.db.AuditLog;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class TestSqlUpdateInTxn extends BaseTestCase {
|
||||
@@ -40,11 +43,18 @@ public class TestSqlUpdateInTxn extends BaseTestCase {
|
||||
|
||||
String sql = " \nupdate audit_log \nset description = description \nwhere id = id";
|
||||
|
||||
SqlUpdate sqlUpdate = Ebean.createSqlUpdate(sql);
|
||||
resetAllMetrics();
|
||||
|
||||
SqlUpdate sqlUpdate = Ebean.createSqlUpdate(sql).setLabel("auditLargeUpdate");
|
||||
sqlUpdate.execute();
|
||||
|
||||
assertThat(sqlUpdate.getSql()).isEqualTo(sql.trim());
|
||||
assertThat(sqlUpdate.getGeneratedSql()).isEqualTo(sql.trim());
|
||||
|
||||
List<MetaTimedMetric> sqlMetrics = sqlMetrics();
|
||||
assertThat(sqlMetrics).hasSize(1);
|
||||
assertThat(sqlMetrics.get(0).getName()).isEqualTo("sql.update.auditLargeUpdate");
|
||||
assertThat(sqlMetrics.get(0).getCount()).isEqualTo(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user