[jboss-cvs] JBoss Messaging SVN: r2816 - in trunk: src/main/org/jboss/messaging/core/impl/postoffice and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jun 28 17:51:10 EDT 2007


Author: timfox
Date: 2007-06-28 17:51:09 -0400 (Thu, 28 Jun 2007)
New Revision: 2816

Modified:
   trunk/src/main/org/jboss/messaging/core/impl/ChannelSupport.java
   trunk/src/main/org/jboss/messaging/core/impl/postoffice/MessagingPostOffice.java
   trunk/tests/src/org/jboss/test/messaging/jms/ScheduledDeliveryTest.java
   trunk/tests/src/org/jboss/test/thirdparty/remoting/RemotingTest.java
Log:
Fixed http://jira.jboss.com/jira/browse/JBMESSAGING-1001, fixed sql issue in hsql config and uncommented remoting test


Modified: trunk/src/main/org/jboss/messaging/core/impl/ChannelSupport.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/impl/ChannelSupport.java	2007-06-28 20:11:38 UTC (rev 2815)
+++ trunk/src/main/org/jboss/messaging/core/impl/ChannelSupport.java	2007-06-28 21:51:09 UTC (rev 2816)
@@ -898,30 +898,37 @@
       {         
          try
          {
-            // We add the references to the state
+            // We add the references to the state (or schedule them if appropriate)
          	
          	boolean promptDelivery = false;
             
             for(Iterator i = refsToAdd.iterator(); i.hasNext(); )
             {
                MessageReference ref = (MessageReference)i.next();
-
-               if (trace) { log.trace(this + ": adding " + ref + " to non-recoverable state"); }
-
-               try
+               
+               if (checkAndSchedule(ref))
                {
-                  synchronized (lock)
-                  {
-                     addReferenceInMemory(ref);
-                  }
+               	if (trace) { log.trace(this + ": scheduled " + ref); }
                }
-               catch (Throwable t)
-               {
-                  throw new TransactionException("Failed to add reference", t);
+               else
+               {	
+	               if (trace) { log.trace(this + ": adding " + ref + " to non-recoverable state"); }
+	
+	               try
+	               {
+	                  synchronized (lock)
+	                  {
+	                     addReferenceInMemory(ref);
+	                  }
+	               }
+	               catch (Throwable t)
+	               {
+	                  throw new TransactionException("Failed to add reference", t);
+	               }
+               
+	               //Only need to prompt delivery if refs were added
+	               promptDelivery = true;
                }
-               
-               //Only need to prompt delivery if refs were added
-               promptDelivery = true;
             }
 
             // Remove deliveries

Modified: trunk/src/main/org/jboss/messaging/core/impl/postoffice/MessagingPostOffice.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/impl/postoffice/MessagingPostOffice.java	2007-06-28 20:11:38 UTC (rev 2815)
+++ trunk/src/main/org/jboss/messaging/core/impl/postoffice/MessagingPostOffice.java	2007-06-28 21:51:09 UTC (rev 2816)
@@ -1024,7 +1024,7 @@
                  "CHANNEL_ID, " +
                  "CLUSTERED, " +
                  "ALL_NODES) " +
-              "VALUES (?, ?, ?, ?, ?, ?, ?)");
+              "VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
 
       map.put("DELETE_BINDING",
               "DELETE FROM JBM_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=? AND QUEUE_NAME=?");

Modified: trunk/tests/src/org/jboss/test/messaging/jms/ScheduledDeliveryTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/ScheduledDeliveryTest.java	2007-06-28 20:11:38 UTC (rev 2815)
+++ trunk/tests/src/org/jboss/test/messaging/jms/ScheduledDeliveryTest.java	2007-06-28 21:51:09 UTC (rev 2816)
@@ -69,144 +69,16 @@
 
    // Public --------------------------------------------------------
    
-   public void testScheduledDelivery() throws Exception
+   public void testScheduledDeliveryTX() throws Exception
    {
-      Connection conn = null;
-      
-      try
-      {
-         conn = cf.createConnection();
-         
-         Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
-         
-         MessageProducer prod = sess.createProducer(queue);
-         
-         MessageConsumer cons = sess.createConsumer(queue);
-         
-         conn.start();
-         
-         //Send one scheduled
-         
-         long now = System.currentTimeMillis();
-         
-         TextMessage tm1 = sess.createTextMessage("testScheduled1");      
-         tm1.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 7000);
-         prod.send(tm1);
- 
-         //First send some non scheduled messages
-         
-         TextMessage tm2 = sess.createTextMessage("testScheduled2");
-         prod.send(tm2);
-
-         TextMessage tm3 = sess.createTextMessage("testScheduled3");
-         prod.send(tm3);
-
-         TextMessage tm4 = sess.createTextMessage("testScheduled4");
-         prod.send(tm4);
-
-         
-         //Now send some more scheduled messages   
-         
-         TextMessage tm5 = sess.createTextMessage("testScheduled5");      
-         tm5.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 5000);
-         prod.send(tm5);
-         
-         TextMessage tm6 = sess.createTextMessage("testScheduled6");      
-         tm6.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 4000);
-         prod.send(tm6);
+   	scheduledDelivery(true);
+   }
    
-         TextMessage tm7 = sess.createTextMessage("testScheduled7");      
-         tm7.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 3000);
-         prod.send(tm7);
-
-         TextMessage tm8 = sess.createTextMessage("testScheduled8");      
-         tm8.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 6000);
-         prod.send(tm8);
-
-         //And one scheduled with a -ve number
-         
-         TextMessage tm9 = sess.createTextMessage("testScheduled9");      
-         tm8.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, -3);
-         prod.send(tm9);
- 
-         //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);      
-         assertNotNull(rm2);      
-         assertEquals(tm3.getText(), rm2.getText());
-         
-         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);      
-         assertNotNull(rm5);      
-         assertEquals(tm9.getText(), rm5.getText());
-         
-         //Now the scheduled
-         TextMessage rm6 = (TextMessage)cons.receive(3250);      
-         assertNotNull(rm6);      
-         assertEquals(tm7.getText(), rm6.getText());
-         
-         long now2 = System.currentTimeMillis();
-         
-         assertTrue(now2 - now >= 3000);
-         
-         
-         TextMessage rm7 = (TextMessage)cons.receive(1250);      
-         assertNotNull(rm7);      
-         assertEquals(tm6.getText(), rm7.getText());
-         
-         now2 = System.currentTimeMillis();
-         
-         assertTrue(now2 - now >= 4000);
-         
-         
-         TextMessage rm8 = (TextMessage)cons.receive(1250);      
-         assertNotNull(rm8);      
-         assertEquals(tm5.getText(), rm8.getText());
-         
-         now2 = System.currentTimeMillis();
-         
-         assertTrue(now2 - now >= 5000);
-         
-         
-         TextMessage rm9 = (TextMessage)cons.receive(1250);      
-         assertNotNull(rm9);      
-         assertEquals(tm8.getText(), rm9.getText());
-         
-         now2 = System.currentTimeMillis();
-         
-         assertTrue(now2 - now >= 6000);
-         
-         
-         TextMessage rm10 = (TextMessage)cons.receive(1250);      
-         assertNotNull(rm10);      
-         assertEquals(tm1.getText(), rm10.getText());
-         
-         now2 = System.currentTimeMillis();
-         
-         assertTrue(now2 - now >= 7000);
-         
-         Message m = cons.receive(1000);
-         
-         assertNull(m);
-      }
-      finally
-      {
-         if (conn != null)
-         {
-            conn.close();
-         }
-      }           
+   public void testScheduledDeliveryNoTX() throws Exception
+   {
+   	scheduledDelivery(false);
    }
    
-   
    public void testScheduledDeliveryWithRestart() throws Exception
    {
       Connection conn = null;
@@ -590,7 +462,154 @@
    }
 
    // Private -------------------------------------------------------
+   
+   private void scheduledDelivery(boolean tx) throws Exception
+   {
+      Connection conn = null;
+      
+      try
+      {
+         conn = cf.createConnection();
+         
+         Session sess = conn.createSession(tx, tx ? Session.SESSION_TRANSACTED : Session.AUTO_ACKNOWLEDGE);
+         
+         MessageProducer prod = sess.createProducer(queue);
+         
+         MessageConsumer cons = sess.createConsumer(queue);
+         
+         conn.start();
+         
+         //Send one scheduled
+         
+         long now = System.currentTimeMillis();
+         
+         TextMessage tm1 = sess.createTextMessage("testScheduled1");      
+         tm1.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 7000);
+         prod.send(tm1);
+ 
+         //First send some non scheduled messages
+         
+         TextMessage tm2 = sess.createTextMessage("testScheduled2");
+         prod.send(tm2);
 
+         TextMessage tm3 = sess.createTextMessage("testScheduled3");
+         prod.send(tm3);
+
+         TextMessage tm4 = sess.createTextMessage("testScheduled4");
+         prod.send(tm4);
+
+         
+         //Now send some more scheduled messages   
+         
+         TextMessage tm5 = sess.createTextMessage("testScheduled5");      
+         tm5.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 5000);
+         prod.send(tm5);
+         
+         TextMessage tm6 = sess.createTextMessage("testScheduled6");      
+         tm6.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 4000);
+         prod.send(tm6);
+   
+         TextMessage tm7 = sess.createTextMessage("testScheduled7");      
+         tm7.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 3000);
+         prod.send(tm7);
+
+         TextMessage tm8 = sess.createTextMessage("testScheduled8");      
+         tm8.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 6000);
+         prod.send(tm8);
+
+         //And one scheduled with a -ve number
+         
+         TextMessage tm9 = sess.createTextMessage("testScheduled9");      
+         tm8.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, -3);
+         prod.send(tm9);
+         
+         if (tx)
+         {
+         	sess.commit();
+         }
+ 
+         //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);      
+         assertNotNull(rm2);      
+         assertEquals(tm3.getText(), rm2.getText());
+         
+         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);      
+         assertNotNull(rm5);      
+         assertEquals(tm9.getText(), rm5.getText());
+         
+         //Now the scheduled
+         TextMessage rm6 = (TextMessage)cons.receive(3250);      
+         assertNotNull(rm6);      
+         assertEquals(tm7.getText(), rm6.getText());
+         
+         long now2 = System.currentTimeMillis();
+         
+         assertTrue(now2 - now >= 3000);
+         
+         
+         TextMessage rm7 = (TextMessage)cons.receive(1250);      
+         assertNotNull(rm7);      
+         assertEquals(tm6.getText(), rm7.getText());
+         
+         now2 = System.currentTimeMillis();
+         
+         assertTrue(now2 - now >= 4000);
+         
+         
+         TextMessage rm8 = (TextMessage)cons.receive(1250);      
+         assertNotNull(rm8);      
+         assertEquals(tm5.getText(), rm8.getText());
+         
+         now2 = System.currentTimeMillis();
+         
+         assertTrue(now2 - now >= 5000);
+         
+         
+         TextMessage rm9 = (TextMessage)cons.receive(1250);      
+         assertNotNull(rm9);      
+         assertEquals(tm8.getText(), rm9.getText());
+         
+         now2 = System.currentTimeMillis();
+         
+         assertTrue(now2 - now >= 6000);
+         
+         
+         TextMessage rm10 = (TextMessage)cons.receive(1250);      
+         assertNotNull(rm10);      
+         assertEquals(tm1.getText(), rm10.getText());
+         
+         now2 = System.currentTimeMillis();
+         
+         assertTrue(now2 - now >= 7000);
+         
+         Message m = cons.receive(1000);
+         
+         assertNull(m);
+         
+         if (tx)
+         {
+         	sess.commit();
+         }
+      }
+      finally
+      {
+         if (conn != null)
+         {
+            conn.close();
+         }
+      }           
+   }
+
    // Inner classes -------------------------------------------------
    
 }

Modified: trunk/tests/src/org/jboss/test/thirdparty/remoting/RemotingTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/thirdparty/remoting/RemotingTest.java	2007-06-28 20:11:38 UTC (rev 2815)
+++ trunk/tests/src/org/jboss/test/thirdparty/remoting/RemotingTest.java	2007-06-28 21:51:09 UTC (rev 2816)
@@ -153,52 +153,52 @@
    /**
     * TODO: Commented out until fixed. See http://jira.jboss.org/jira/browse/JBMESSAGING-287
     */
-//   public void testConnectionListener() throws Throwable
-//   {
-//      // Start a server
-//
-//      Connector serverConnector = new Connector();
-//
-//      InvokerLocator serverLocator = new InvokerLocator("socket://localhost:9099");
-//
-//      serverConnector.setInvokerLocator(serverLocator.getLocatorURI());
-//
-//      serverConnector.create();
-//
-//      SimpleServerInvocationHandler invocationHandler = new SimpleServerInvocationHandler();
-//
-//      serverConnector.addInvocationHandler("JMS", invocationHandler);
-//
-//      serverConnector.setLeasePeriod(1000);
-//
-//      serverConnector.addConnectionListener(new SimpleConnectionListener());
-//
-//      serverConnector.start();
-//
-//      try
-//      {
-//         Client client = new Client(serverLocator);
-//
-//         client.connect();
-//
-//         Thread.sleep(5000);
-//
-//         client.disconnect();
-//
-//         // Connection Listener should now be called
-//
-//         Thread.sleep(5000);
-//
-//         assertTrue(connListenerCalled);
-//      }
-//      finally
-//      {
-//         serverConnector.stop();
-//         serverConnector.destroy();
-//      }
-//
-//   }
+   public void testConnectionListener() throws Throwable
+   {
+      // Start a server
 
+      Connector serverConnector = new Connector();
+
+      InvokerLocator serverLocator = new InvokerLocator("socket://localhost:9099");
+
+      serverConnector.setInvokerLocator(serverLocator.getLocatorURI());
+
+      serverConnector.create();
+
+      SimpleServerInvocationHandler invocationHandler = new SimpleServerInvocationHandler();
+
+      serverConnector.addInvocationHandler("JMS", invocationHandler);
+
+      serverConnector.setLeasePeriod(1000);
+
+      serverConnector.addConnectionListener(new SimpleConnectionListener());
+
+      serverConnector.start();
+
+      try
+      {
+         Client client = new Client(serverLocator);
+
+         client.connect();
+
+         Thread.sleep(5000);
+
+         client.disconnect();
+
+         // Connection Listener should now be called
+
+         Thread.sleep(5000);
+
+         assertTrue(connListenerCalled);
+      }
+      finally
+      {
+         serverConnector.stop();
+         serverConnector.destroy();
+      }
+
+   }
+
    /**
     * JIRA issue: http://jira.jboss.org/jira/browse/JBMESSAGING-371
     */




More information about the jboss-cvs-commits mailing list