#525 - Automatic autotune data

This commit is contained in:
Robin Bygrave
2016-01-13 00:08:00 +13:00
parent f44eb234c8
commit eb2f7cd852
14 changed files with 426 additions and 298 deletions
@@ -3,7 +3,9 @@ package com.avaje.tests.autofetch;
import java.util.List;
import java.util.Set;
import com.avaje.ebeaninternal.server.autotune.model.Origin;
import org.avaje.ebeantest.LoggedSqlCollector;
import org.jetbrains.annotations.NotNull;
import org.junit.Assert;
import org.junit.Test;
@@ -33,34 +35,6 @@ public class TunedQueryInfoTest extends BaseTestCase {
serverCacheManager.setCaching(Order.class, false);
}
@Test
public void withSelectNull() {
init();
OrmQueryDetail tunedDetail = new OrmQueryDetail();
tunedDetail.select(null);
TunedQueryInfo tunedInfo = new TunedQueryInfo(tunedDetail);
Query<Order> query = server.find(Order.class).setId(1);
tunedInfo.tuneQuery((SpiQuery<?>) query);
Order order = query.findUnique();
EntityBean eb = (EntityBean)order;
EntityBeanIntercept ebi = eb._ebean_getIntercept();
Assert.assertTrue(ebi.isFullyLoadedBean());
Set<String> loadedPropertyNames = ebi.getLoadedPropertyNames();
Assert.assertNull(loadedPropertyNames);
// invoke lazy loading
order.getCustomer();
}
@Test
public void withSelectEmpty() {
@@ -68,9 +42,9 @@ public class TunedQueryInfoTest extends BaseTestCase {
OrmQueryDetail tunedDetail = new OrmQueryDetail();
tunedDetail.select("");
TunedQueryInfo tunedInfo = new TunedQueryInfo(tunedDetail);
TunedQueryInfo tunedInfo = createTunedQueryInfo(tunedDetail);
Query<Order> query = server.find(Order.class).setId(1);
tunedInfo.tuneQuery((SpiQuery<?>) query);
@@ -95,9 +69,9 @@ public class TunedQueryInfoTest extends BaseTestCase {
OrmQueryDetail tunedDetail = new OrmQueryDetail();
tunedDetail.select("somethingThatDoesNotExist");
TunedQueryInfo tunedInfo = new TunedQueryInfo(tunedDetail);
TunedQueryInfo tunedInfo = createTunedQueryInfo(tunedDetail);
Query<Order> query = server.find(Order.class).setId(1);
tunedInfo.tuneQuery((SpiQuery<?>) query);
@@ -123,7 +97,14 @@ public class TunedQueryInfoTest extends BaseTestCase {
Assert.assertTrue(loggedSql.get(0).contains("select t0.id c0, t0.id c1 from o_order t0 where t0.id = ?"));
Assert.assertTrue(loggedSql.get(1).contains("select t0.id c0, t0.status c1,"));
}
@NotNull
private TunedQueryInfo createTunedQueryInfo(OrmQueryDetail tunedDetail) {
Origin origin = new Origin();
origin.setDetail(tunedDetail.toString());
return new TunedQueryInfo(origin);
}
@Test
public void withSelectSomeIncludeLazyLoaded() {
@@ -132,7 +113,7 @@ public class TunedQueryInfoTest extends BaseTestCase {
OrmQueryDetail tunedDetail = new OrmQueryDetail();
tunedDetail.select("status, customer");
TunedQueryInfo tunedInfo = new TunedQueryInfo(tunedDetail);
TunedQueryInfo tunedInfo = createTunedQueryInfo(tunedDetail);
Query<Order> query = server.find(Order.class).setId(1);
@@ -167,7 +148,7 @@ public class TunedQueryInfoTest extends BaseTestCase {
OrmQueryDetail tunedDetail = new OrmQueryDetail();
tunedDetail.select("status");
TunedQueryInfo tunedInfo = new TunedQueryInfo(tunedDetail);
TunedQueryInfo tunedInfo = createTunedQueryInfo(tunedDetail);
Query<Order> query = server.find(Order.class).setId(1);
@@ -1,5 +1,7 @@
package com.avaje.tests.cache;
import com.avaje.ebeaninternal.server.autotune.model.Origin;
import org.jetbrains.annotations.NotNull;
import org.junit.Assert;
import org.junit.Test;
@@ -14,6 +16,13 @@ import com.avaje.tests.model.basic.FeatureDescription;
public class TestL2CacheWithSharedBean extends BaseTestCase {
@NotNull
private TunedQueryInfo createTunedQueryInfo(OrmQueryDetail tunedDetail) {
Origin origin = new Origin();
origin.setDetail(tunedDetail.toString());
return new TunedQueryInfo(origin);
}
@Test
public void test() {
@@ -28,7 +37,7 @@ public class TestL2CacheWithSharedBean extends BaseTestCase {
OrmQueryDetail tunedDetail = new OrmQueryDetail();
tunedDetail.select("name");
TunedQueryInfo tunedInfo = new TunedQueryInfo(tunedDetail);
TunedQueryInfo tunedInfo = createTunedQueryInfo(tunedDetail);
Query<FeatureDescription> query = Ebean.find(FeatureDescription.class).setId(f1.getId());
@@ -7,23 +7,52 @@ import com.avaje.tests.model.basic.Customer;
import com.avaje.tests.model.basic.Order;
import com.avaje.tests.model.basic.OrderDetail;
import com.avaje.tests.model.basic.ResetBasicData;
import org.junit.Ignore;
import org.junit.Test;
import java.util.List;
import java.util.Random;
public class TestAutoTuneProfiling extends BaseTestCase {
@Ignore
@Test
public void test() {
public void test() throws InterruptedException {
ResetBasicData.reset();
System.out.println("Start .......");
for (int i = 0; i < 1; i++) {
execute();
}
collectUsage();
System.out.println("Sleeping ...");
sortOfBusy();
System.out.println("Run after collection");
for (int i = 0; i < 10; i++) {
execute();
}
collectUsage();
System.out.println("Sleeping ...");
sortOfBusy();
System.out.println("Run after collection");
for (int i = 0; i < 1; i++) {
execute();
}
}
private void sortOfBusy() {
for (int i = 0; i < 90000000; i++) {
new Random().nextLong();
}
}