killbill-aplcache

meter: make TestTimelineAggregator MySQL specific H2 doesn't

12/14/2012 9:54:04 PM

Details

diff --git a/meter/src/main/java/com/ning/billing/meter/timeline/aggregator/TimelineAggregator.java b/meter/src/main/java/com/ning/billing/meter/timeline/aggregator/TimelineAggregator.java
index f39a547..505a114 100644
--- a/meter/src/main/java/com/ning/billing/meter/timeline/aggregator/TimelineAggregator.java
+++ b/meter/src/main/java/com/ning/billing/meter/timeline/aggregator/TimelineAggregator.java
@@ -295,6 +295,9 @@ public class TimelineAggregator {
 
                 @Override
                 public Void withHandle(final Handle handle) throws Exception {
+                    // MySQL needs special setup to make it stream the results. See:
+                    // http://javaquirks.blogspot.com/2007/12/mysql-streaming-result-set.html
+                    // http://stackoverflow.com/questions/2447324/streaming-large-result-sets-with-mysql
                     final Query<Map<String, Object>> query = handle.createQuery("getStreamingAggregationCandidates")
                                                                    .setFetchSize(Integer.MIN_VALUE)
                                                                    .bind("aggregationLevel", aggregationLevel)
diff --git a/meter/src/main/java/com/ning/billing/meter/timeline/aggregator/TimelineAggregatorSqlDao.java b/meter/src/main/java/com/ning/billing/meter/timeline/aggregator/TimelineAggregatorSqlDao.java
index d239d0a..e034a33 100644
--- a/meter/src/main/java/com/ning/billing/meter/timeline/aggregator/TimelineAggregatorSqlDao.java
+++ b/meter/src/main/java/com/ning/billing/meter/timeline/aggregator/TimelineAggregatorSqlDao.java
@@ -19,7 +19,6 @@ package com.ning.billing.meter.timeline.aggregator;
 import java.util.List;
 
 import org.skife.jdbi.v2.sqlobject.Bind;
-import org.skife.jdbi.v2.sqlobject.SqlQuery;
 import org.skife.jdbi.v2.sqlobject.SqlUpdate;
 import org.skife.jdbi.v2.sqlobject.mixins.Transactional;
 import org.skife.jdbi.v2.sqlobject.stringtemplate.UseStringTemplate3StatementLocator;
@@ -31,9 +30,6 @@ import com.ning.billing.util.callcontext.InternalTenantContextBinder;
 @UseStringTemplate3StatementLocator()
 public interface TimelineAggregatorSqlDao extends Transactional<TimelineAggregatorSqlDao> {
 
-    @SqlQuery
-    int getLastInsertedId();
-
     @SqlUpdate
     void makeTimelineChunkValid(@Bind("chunkId") final long chunkId,
                                 @InternalTenantContextBinder final InternalCallContext context);
diff --git a/meter/src/main/resources/com/ning/billing/meter/timeline/aggregator/TimelineAggregatorSqlDao.sql.stg b/meter/src/main/resources/com/ning/billing/meter/timeline/aggregator/TimelineAggregatorSqlDao.sql.stg
index bbb566a..418da2d 100644
--- a/meter/src/main/resources/com/ning/billing/meter/timeline/aggregator/TimelineAggregatorSqlDao.sql.stg
+++ b/meter/src/main/resources/com/ning/billing/meter/timeline/aggregator/TimelineAggregatorSqlDao.sql.stg
@@ -42,10 +42,6 @@ and metric_record_id in (<metricIds>)
 ;
 >>
 
-getLastInsertedId() ::= <<
-select last_insert_id();
->>
-
 makeTimelineChunkValid() ::= <<
 update timeline_chunks
 set not_valid = 0
diff --git a/meter/src/test/java/com/ning/billing/meter/timeline/aggregator/TestTimelineAggregator.java b/meter/src/test/java/com/ning/billing/meter/timeline/aggregator/TestTimelineAggregator.java
index bb202dc..716a4e3 100644
--- a/meter/src/test/java/com/ning/billing/meter/timeline/aggregator/TestTimelineAggregator.java
+++ b/meter/src/test/java/com/ning/billing/meter/timeline/aggregator/TestTimelineAggregator.java
@@ -70,7 +70,7 @@ public class TestTimelineAggregator extends MeterTestSuiteWithEmbeddedDB {
     private Integer minHeapUsedKindId = null;
     private Integer maxHeapUsedKindId = null;
 
-    @BeforeMethod(groups = "slow")
+    @BeforeMethod(groups = "mysql")
     public void setUp() throws Exception {
         timelineDao = new DefaultTimelineDao(getDBI());
         final Properties properties = System.getProperties();
@@ -79,7 +79,7 @@ public class TestTimelineAggregator extends MeterTestSuiteWithEmbeddedDB {
         aggregator = new TimelineAggregator(getDBI(), timelineDao, timelineCoder, sampleCoder, config, internalCallContextFactory);
     }
 
-    @Test(groups = "slow")
+    @Test(groups = "mysql")
     public void testAggregation() throws Exception {
         // Create the host
         hostId = timelineDao.getOrAddSource(HOST_NAME, internalCallContext);