killbill-uncached

Fix more test issues

5/3/2012 8:37:27 PM

Details

diff --git a/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java b/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
index 813c3a4..b567464 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
@@ -157,14 +157,7 @@ public class TestAnalyticsService {
     private  CatalogService catalogService;
     
     private Catalog catalog;
-    
-    @BeforeMethod(groups = "slow")
-    public void cleanup() throws Exception
-    {
-        helper.cleanupAllTables();
-    }
-
-
+ 
     @BeforeClass(groups = "slow")
     public void startMysql() throws IOException, ClassNotFoundException, SQLException, EntitlementUserApiException {
 
@@ -175,6 +168,8 @@ public class TestAnalyticsService {
         // Killbill generic setup
         setupBusAndMySQL();
 
+        helper.cleanupAllTables();
+        
         tagDao.create(TAG_ONE, context);
         tagDao.create(TAG_TWO, context);
 
@@ -296,35 +291,7 @@ public class TestAnalyticsService {
         helper.stopMysql();
     }
 
-    // STEPH Test cannot pass, as we never insert things on disk befopre sending events:
-    // TODO check with Pierre
-    /*
-     * SEVERE: Could not dispatch event: com.ning.billing.entitlement.api.user.DefaultSubscriptionEvent@6b67496c to handler [wrapper public void com.ning.billing.analytics.AnalyticsListener.handleSubscriptionTransitionChange(com.ning.billing.entitlement.api.user.SubscriptionEvent) throws com.ning.billing.account.api.AccountApiException,com.ning.billing.entitlement.api.user.EntitlementUserApiException]
-java.lang.reflect.InvocationTargetException
-    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
-    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
-    at java.lang.reflect.Method.invoke(Method.java:597)
-    at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:68)
-    at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
-    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
-    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
-    at com.google.common.eventbus.EventBus.post(EventBus.java:264)
-    at com.ning.billing.util.bus.PersistentBus.doProcessEvents(PersistentBus.java:205)
-    at com.ning.billing.util.bus.PersistentBus.access$200(PersistentBus.java:46)
-    at com.ning.billing.util.bus.PersistentBus$2.run(PersistentBus.java:144)
-    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
-    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
-    at java.lang.Thread.run(Thread.java:680)
-Caused by: java.lang.IllegalArgumentException: An event must have an key
-    at com.ning.billing.analytics.BusinessSubscriptionTransition.<init>(BusinessSubscriptionTransition.java:44)
-    at com.ning.billing.analytics.BusinessSubscriptionTransitionRecorder.record(BusinessSubscriptionTransitionRecorder.java:149)
-    at com.ning.billing.analytics.BusinessSubscriptionTransitionRecorder.recordTransition(BusinessSubscriptionTransitionRecorder.java:143)
-    at com.ning.billing.analytics.BusinessSubscriptionTransitionRecorder.subscriptionCreated(BusinessSubscriptionTransitionRecorder.java:59)
-    at com.ning.billing.analytics.AnalyticsListener.handleSubscriptionTransitionChange(AnalyticsListener.java:46)
-    ... 15 more
-     */
-    @Test(groups = "slow", enabled=false)
+    @Test(groups = "slow", enabled=true)
     public void testRegisterForNotifications() throws Exception {
         // Make sure the service has been instantiated
         Assert.assertEquals(service.getName(), "analytics-service");
@@ -340,9 +307,6 @@ Caused by: java.lang.IllegalArgumentException: An event must have an key
 
         // Send events and wait for the async part...
         bus.post(transition);
-        
-        Thread.sleep(5000000);
-
         bus.post(accountCreationNotification);
         Thread.sleep(5000);
 
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestAnalyticsDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestAnalyticsDao.java
index 55aa5d9..3e24a39 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/dao/TestAnalyticsDao.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestAnalyticsDao.java
@@ -263,10 +263,8 @@ public class TestAnalyticsDao
         Assert.assertEquals(transitions.get(0).getKey(), transition.getKey());
         Assert.assertEquals(transitions.get(0).getRequestedTimestamp(), transition.getRequestedTimestamp());
         Assert.assertEquals(transitions.get(0).getEvent(), transition.getEvent());
-        // Null Plan and Phase doesn't make sense so we turn the subscription into a null
-        // STEPH not sure why that fails ?
-        //Assert.assertNull(transitions.get(0).getPreviousSubscription());
-        //Assert.assertNull(transitions.get(0).getNextSubscription());
+        Assert.assertNull(transitions.get(0).getPreviousSubscription());
+        Assert.assertNull(transitions.get(0).getNextSubscription());
     }
 
     @Test(groups = "slow")
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
index 18c6dd4..29883f1 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
@@ -108,7 +108,6 @@ public class AccountResource implements BaseJaxrsResource {
             AccountJson json = new AccountJson(account);
             return Response.status(Status.OK).entity(json).build();
         } catch (AccountApiException e) {
-            log.warn("Failed to find account.", e);
             return Response.status(Status.NO_CONTENT).build();            
         }
         
@@ -131,7 +130,6 @@ public class AccountResource implements BaseJaxrsResource {
             });
             return Response.status(Status.OK).entity(result).build();
         } catch (AccountApiException e) {
-            log.warn("Failed to find account.", e);
             return Response.status(Status.NO_CONTENT).build();
         }
     }
@@ -151,7 +149,6 @@ public class AccountResource implements BaseJaxrsResource {
             AccountJson json = new AccountJson(account);
             return Response.status(Status.OK).entity(json).build();
         } catch (AccountApiException e) {
-            log.warn("Failed to find account.", e);
             return Response.status(Status.NO_CONTENT).build();
         }
     }
@@ -242,7 +239,6 @@ public class AccountResource implements BaseJaxrsResource {
             AccountTimelineJson json = new AccountTimelineJson(account, invoices, payments, bundlesTimeline);
             return Response.status(Status.OK).entity(json).build();
         } catch (AccountApiException e) {
-            log.warn("Failed to find account.", e);
             return Response.status(Status.NO_CONTENT).build();
         } catch (EntitlementRepairException e) {
             log.error(e.getMessage());
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/SubscriptionResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/SubscriptionResource.java
index 09db7f9..259fe9f 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/SubscriptionResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/SubscriptionResource.java
@@ -74,8 +74,6 @@ public class SubscriptionResource implements BaseJaxrsResource {
     private final JaxrsUriBuilder uriBuilder;	
     private final KillbillEventHandler killbillHandler;
     
-
-    
     @Inject
     public SubscriptionResource(final JaxrsUriBuilder uriBuilder, final EntitlementUserApi entitlementApi,
             final Clock clock, final Context context, final KillbillEventHandler killbillHandler) {
@@ -239,7 +237,6 @@ public class SubscriptionResource implements BaseJaxrsResource {
             return Response.status(Status.OK).build();
         } catch (EntitlementUserApiException e) {
             if(e.getCode() == ErrorCode.ENT_INVALID_SUBSCRIPTION_ID.getCode()) {
-                log.info(String.format("Failed to find subscription %s", subscriptionId), e);
                 return Response.status(Status.NO_CONTENT).build();
             } else {
                 log.info(String.format("Failed to uncancel plan for subscription %s", subscriptionId), e);
@@ -274,7 +271,6 @@ public class SubscriptionResource implements BaseJaxrsResource {
                     return Response.status(Status.OK).build();
                 } catch (EntitlementUserApiException e) {
                     if(e.getCode() == ErrorCode.ENT_INVALID_SUBSCRIPTION_ID.getCode()) {
-                        log.info(String.format("Failed to find subscription %s", subscriptionId), e);
                         return Response.status(Status.NO_CONTENT).build();
                     } else {
                         throw e;
diff --git a/util/src/main/java/com/ning/billing/util/bus/PersistentBus.java b/util/src/main/java/com/ning/billing/util/bus/PersistentBus.java
index e60c79e..a556028 100644
--- a/util/src/main/java/com/ning/billing/util/bus/PersistentBus.java
+++ b/util/src/main/java/com/ning/billing/util/bus/PersistentBus.java
@@ -16,7 +16,6 @@
 package com.ning.billing.util.bus;
 
 
-import java.lang.reflect.InvocationTargetException;
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
@@ -104,7 +103,6 @@ public class PersistentBus implements Bus  {
     }
 
     
-    
     @Override
     public void start() {
         
@@ -112,8 +110,9 @@ public class PersistentBus implements Bus  {
         curActiveThreads = 0;
         
         final PersistentBus thePersistentBus = this;
-        
         final CountDownLatch doneInitialization = new CountDownLatch(NB_BUS_THREADS);
+
+        log.info("Starting Persistent BUS with {} threads, countDownLatch = {}", NB_BUS_THREADS, doneInitialization.getCount());
         
         for (int i = 0; i < NB_BUS_THREADS; i++) {
             executor.execute(new Runnable() {
@@ -127,7 +126,7 @@ public class PersistentBus implements Bus  {
                     synchronized(thePersistentBus) {
                         curActiveThreads++;
                     }
-                    
+
                     doneInitialization.countDown();
                     
                     try {
@@ -173,7 +172,12 @@ public class PersistentBus implements Bus  {
             });
         }
         try {
-            doneInitialization.await(TIMEOUT_MSEC, TimeUnit.SECONDS);
+            boolean success = doneInitialization.await(TIMEOUT_MSEC, TimeUnit.MILLISECONDS);
+            if (!success) {
+                log.warn("Failed to wait for all threads to be started, got {}/{}", doneInitialization.getCount(), NB_BUS_THREADS);
+            } else {
+                log.info("Done waiting for all threads to be started, got {}/{}", doneInitialization.getCount(), NB_BUS_THREADS);
+            }
         } catch (InterruptedException e) {
             log.warn("PersistentBus start sequence got interrupted...");
         }
diff --git a/util/src/main/resources/com/ning/billing/util/ddl.sql b/util/src/main/resources/com/ning/billing/util/ddl.sql
index 2162500..9a241a0 100644
--- a/util/src/main/resources/com/ning/billing/util/ddl.sql
+++ b/util/src/main/resources/com/ning/billing/util/ddl.sql
@@ -126,7 +126,7 @@ DROP TABLE IF EXISTS bus_events;
 CREATE TABLE bus_events (
     id int(11) unsigned NOT NULL AUTO_INCREMENT,
     class_name varchar(128) NOT NULL, 
-    event_json varchar(1024) NOT NULL,     
+    event_json varchar(2048) NOT NULL,     
     created_dt datetime NOT NULL,
     processing_owner char(50) DEFAULT NULL,
     processing_available_dt datetime DEFAULT NULL,