[jboss-cvs] JBoss Messaging SVN: r3098 - in trunk/tests/src/org/jboss/test/messaging: jms and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Sep 11 18:47:16 EDT 2007


Author: clebert.suconic at jboss.com
Date: 2007-09-11 18:47:15 -0400 (Tue, 11 Sep 2007)
New Revision: 3098

Modified:
   trunk/tests/src/org/jboss/test/messaging/MessagingTestCase.java
   trunk/tests/src/org/jboss/test/messaging/jms/MessageConsumerTest.java
   trunk/tests/src/org/jboss/test/messaging/jms/ScheduledDeliveryTest.java
Log:
Fixing eventual failures because of GC.

Modified: trunk/tests/src/org/jboss/test/messaging/MessagingTestCase.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/MessagingTestCase.java	2007-09-11 22:46:01 UTC (rev 3097)
+++ trunk/tests/src/org/jboss/test/messaging/MessagingTestCase.java	2007-09-11 22:47:15 UTC (rev 3098)
@@ -25,6 +25,7 @@
 import java.sql.ResultSet;
 import java.util.ArrayList;
 import java.util.List;
+import java.lang.ref.WeakReference;
 
 import javax.jms.Connection;
 import javax.jms.ConnectionFactory;
@@ -585,6 +586,23 @@
    	}
    }
 
+   /** Some testcases are time sensitive, and we need to make sure a GC would happen before certain scenarios*/
+   protected void forceGC()
+   {
+      WeakReference dumbReference = new WeakReference(new Object());
+      // A loopt that will wait GC, using the minimal time as possible
+      while (dumbReference.get() != null)
+      {
+         System.gc();
+         try
+         {
+            Thread.sleep(500);
+         } catch (InterruptedException e)
+         {
+         }
+      }
+   }
+
    // Private -------------------------------------------------------
    
    // Inner classes -------------------------------------------------   

Modified: trunk/tests/src/org/jboss/test/messaging/jms/MessageConsumerTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/MessageConsumerTest.java	2007-09-11 22:46:01 UTC (rev 3097)
+++ trunk/tests/src/org/jboss/test/messaging/jms/MessageConsumerTest.java	2007-09-11 22:47:15 UTC (rev 3098)
@@ -2193,8 +2193,7 @@
 			  
 			  //This is a really weird test - the received object is always going to be null since no message is sent!!
 
-			  System.gc();       /// If A GC need to be executed, it' s better to be executed now
-			  Thread.sleep(1000);
+			  forceGC();       /// If A GC need to be executed, it' s better to be executed now
 			  if (log.isTraceEnabled()) log.trace("testTimeoutReceiveOnClose");
 
 			  Object monitor = new Object();

Modified: trunk/tests/src/org/jboss/test/messaging/jms/ScheduledDeliveryTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/ScheduledDeliveryTest.java	2007-09-11 22:46:01 UTC (rev 3097)
+++ trunk/tests/src/org/jboss/test/messaging/jms/ScheduledDeliveryTest.java	2007-09-11 22:47:15 UTC (rev 3098)
@@ -127,7 +127,7 @@
          //Now stop the server and restart it
          
          conn.close();
-         
+
          ServerManagement.stopServerPeer();
          
          ServerManagement.startServerPeer();
@@ -143,22 +143,24 @@
          
          MessageConsumer cons = sess.createConsumer(queue1);
  
+         forceGC();
+
          //First the non scheduled messages should be received
-         
+
          TextMessage rm1 = (TextMessage)cons.receive(250);      
          assertNotNull(rm1);      
          assertEquals(tm2.getText(), rm1.getText());
          
-         TextMessage rm2 = (TextMessage)cons.receive(250);      
+         TextMessage rm2 = (TextMessage)cons.receive(250);
          assertNotNull(rm2);      
          assertEquals(tm3.getText(), rm2.getText());
          
-         TextMessage rm3 = (TextMessage)cons.receive(250);      
+         TextMessage rm3 = (TextMessage)cons.receive(250);
          assertNotNull(rm3);      
          assertEquals(tm4.getText(), rm3.getText());
          
          //Now the one with a scheduled with a -ve number
-         TextMessage rm5 = (TextMessage)cons.receive(250);      
+         TextMessage rm5 = (TextMessage)cons.receive(250);
          assertNotNull(rm5);      
          assertEquals(tm9.getText(), rm5.getText());
          
@@ -486,23 +488,25 @@
          {
          	sess.commit();
          }
- 
+
          //First the non scheduled messages should be received
-         
-         TextMessage rm1 = (TextMessage)cons.receive(250);      
+         forceGC();
+
+
+         TextMessage rm1 = (TextMessage)cons.receive(250);
          assertNotNull(rm1);      
          assertEquals(tm2.getText(), rm1.getText());
          
-         TextMessage rm2 = (TextMessage)cons.receive(250);      
+         TextMessage rm2 = (TextMessage)cons.receive(250);
          assertNotNull(rm2);      
          assertEquals(tm3.getText(), rm2.getText());
          
-         TextMessage rm3 = (TextMessage)cons.receive(250);      
+         TextMessage rm3 = (TextMessage)cons.receive(250);
          assertNotNull(rm3);      
          assertEquals(tm4.getText(), rm3.getText());
          
          //Now the one with a scheduled with a -ve number
-         TextMessage rm5 = (TextMessage)cons.receive(250);      
+         TextMessage rm5 = (TextMessage)cons.receive(250);
          assertNotNull(rm5);      
          assertEquals(tm9.getText(), rm5.getText());
          




More information about the jboss-cvs-commits mailing list