[jboss-svn-commits] JBL Code SVN: r9246 - labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Feb 1 06:02:12 EST 2007


Author: kevin.conner at jboss.com
Date: 2007-02-01 06:02:12 -0500 (Thu, 01 Feb 2007)
New Revision: 9246

Modified:
   labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerBaseTest.java
   labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerFTPIntegrationTest.java
   labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerFileUnitTest.java
   labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerJDBCUnitTest.java
   labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerJMSXntegrationTest.java
   labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/listenerFile.xml
   labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/listenerFtp.xml
   labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/listenerJdbc.xml
   labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/listenerJms.xml
Log:
Changed tests to use notification isntead of creating files: JBESB-342

Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerBaseTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerBaseTest.java	2007-02-01 10:59:58 UTC (rev 9245)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerBaseTest.java	2007-02-01 11:02:12 UTC (rev 9246)
@@ -22,18 +22,19 @@
 
 package org.jboss.soa.esb.listeners;
 
-import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStream;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.Statement;
+import java.util.LinkedList;
 import java.util.Properties;
+import java.util.Queue;
 import java.util.Random;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.Condition;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
 
 import org.apache.log4j.Logger;
 import org.apache.log4j.xml.DOMConfigurator;
@@ -46,35 +47,93 @@
 
 public class ListenerManagerBaseTest extends BaseTest
 {
-
-	static void bytesToFile(File file, byte[] text) throws Exception
+	/**
+	 * The message lock.
+	 */
+	private static Lock lock = new ReentrantLock() ;
+	/**
+	 * The not empty condition.
+	 */
+	private static Condition notEmpty = lock.newCondition() ;
+	/**
+	 * The queue of messages.
+	 */
+	private static final Queue<String> MESSAGES = new LinkedList<String>() ;
+	
+	/**
+	 * Clear the current message queue.
+	 */
+	protected static void clearMessages()
 	{
-		OutputStream out = new FileOutputStream(file);
-		out.write(text);
-		out.close();
+		lock.lock() ;
+		try
+		{
+			MESSAGES.clear() ;
+		}
+		finally
+		{
+			lock.unlock() ;
+		}
 	}
-
-	static String stringFromFile(File file) throws Exception
+	
+	/**
+	 * Add the message to the message queue.
+	 * @param text The message text.
+	 */
+	protected static void addMessage(final byte[] text)
 	{
-		ByteArrayOutputStream out = new ByteArrayOutputStream();
-		
-		if (!file.exists())
+		lock.lock() ;
+		try
 		{
-			System.err
-					.println("File does not exist: " + file.getAbsolutePath());
+			final boolean notify = (MESSAGES.size() == 0) ;
+			final String message = new String(text) ;
+			MESSAGES.add(message) ;
+			if (notify)
+			{
+				notEmpty.signal() ;
+			}
 		}
-		
-		FileInputStream inp = new FileInputStream(file);
-		byte[] ba = new byte[1000];
-		int iQ;
-		while (-1 != (iQ = inp.read(ba)))
-			if (iQ > 0)
-				out.write(ba, 0, iQ);
-		inp.close();
-
-		out.close();
-		return out.toString();
+		finally
+		{
+			lock.unlock() ;
+		}
 	}
+	
+	/**
+	 * Get the first message from the queue.
+	 * @param timeout The maximum time to wait before returning. 
+	 * @return The first message in the queue or null on timeout.
+	 */
+	protected static String getMessage(final long timeout)
+	{
+            final long endTime = System.currentTimeMillis() + timeout ;
+            lock.lock() ;
+            try
+            {
+                while (MESSAGES.size() == 0)
+                {
+                    final long delay = endTime - System.currentTimeMillis() ;
+                    if (delay > 0)
+                    {
+                        try
+                        {
+                            notEmpty.await(delay, TimeUnit.MILLISECONDS) ;
+                        }
+                        catch (final InterruptedException ie) {} // Ignore the interrupt
+                    }
+                    else
+                    {
+                        return null ;
+                    }
+                }
+                final String message = MESSAGES.remove() ;
+                return message ;
+            }
+            finally
+            {
+                lock.unlock();
+            }
+	}
 
 	protected void runBeforeAllTests()
 	{
@@ -177,19 +236,6 @@
 	protected static Logger _logger = Logger
 			.getLogger(ListenerManagerBaseTest.class);
 
-	static File _returnFile = new File(TMP_DIR, "ListenerManagerOutput.txt");
-	static
-	{
-		try
-		{
-			_returnFile = File.createTempFile("ListenerManagerOutput", ".txt",
-					new File(TMP_DIR));
-		}
-		catch (IOException e)
-		{/* OK just leave the default fixed name */
-		}
-	};
-
 	private static String mDbDriver;
 
 	private static String mDbUrl;
@@ -211,17 +257,10 @@
 			_config = config;
 		}
 
-		public Message writeToDisk(Message message) throws Exception
+		public Message notifyTest(Message message) throws Exception
 		{
-			String id = message.getHeader().getCall().getMessageID()
-					.toASCIIString();
-			long lSleep = Math.abs(_rand.nextInt()) % 300;
+			addMessage(message.getBody().getContents());
 
-			_logger.info("Random sleep on " + Thread.currentThread() + "="
-					+ lSleep + "-Message id=" + id);
-			Thread.sleep(lSleep);
-			bytesToFile(_returnFile, message.getBody().getContents());
-
 			return message;
 		}
 	}

Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerFTPIntegrationTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerFTPIntegrationTest.java	2007-02-01 10:59:58 UTC (rev 9245)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerFTPIntegrationTest.java	2007-02-01 11:02:12 UTC (rev 9246)
@@ -96,8 +96,6 @@
 			sender.deliver(message);
 		}
 
-		_returnFile.delete();
-		
                 final List<ManagedLifecycle> instances = LifecycleUtil.getListeners(tree) ;
                 final ManagedLifecycleController controller = new ManagedLifecycleController(instances) ;
                 controller.start() ;
@@ -111,15 +109,21 @@
 		// messages
 		// will be processed, and how many will remain unprocessed
 		
-		Thread.sleep(250 * howMany);
-
-		_logger.debug("going to stop");
-		controller.stop();
-		_logger.debug("back from stop");
-
-		Assert.assertEquals(THE_TEXT, stringFromFile(_returnFile));
-
-		_returnFile.delete();
+                try
+                {
+                    for (int count = 0 ; count < howMany ; count++)
+                    {
+                    	final String response = getMessage(10000) ;
+                    	assertNotNull("getMessage timeout", response) ;
+                    	assertEquals(THE_TEXT, response);
+                    }
+                }
+                finally
+                {
+                    _logger.debug("going to stop");
+                    controller.stop() ;
+                    _logger.debug("back from stop");
+                }
 	}
 	
 }

Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerFileUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerFileUnitTest.java	2007-02-01 10:59:58 UTC (rev 9245)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerFileUnitTest.java	2007-02-01 11:02:12 UTC (rev 9246)
@@ -70,8 +70,7 @@
 	{
 		_logger.info("Writing temp files to " + TMP_DIR);
 
-		// delete this one just to make sure asserts take the new ones
-		_returnFile.delete();
+		clearMessages() ;
 
 		// initialize registry
 		runBeforeAllTests();
@@ -79,7 +78,7 @@
 
 	public void tearDown()
 	{
-		_returnFile.delete();
+		clearMessages() ;
 		
 		runAfterAllTests();
 	}
@@ -129,8 +128,6 @@
 			sender.deliver(message);
 		}
 
-		_returnFile.delete();
-		
 		//		 launch listener manager in a child thread
 		final ConfigTree newTree = ConfigTree.fromInputStream(new FileInputStream(
 				configFile));
@@ -150,15 +147,16 @@
 		// messages
 		// will be processed, and how many will remain unprocessed
 		
-		Thread.sleep(150 * howMany);
+		for (int count = 0 ; count < howMany ; count++)
+		{
+			final String response = getMessage(10000) ;
+			assertNotNull("getMessage timeout", response) ;
+			assertEquals(THE_TEXT, response);
+		}
 
 		_logger.debug("going to stop");
 		controller.stop();
 		_logger.debug("back from stop");
-
-		assertEquals(THE_TEXT, stringFromFile(_returnFile));
-		
-		_returnFile.delete();
 	}
 	
 	protected String _file;

Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerJDBCUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerJDBCUnitTest.java	2007-02-01 10:59:58 UTC (rev 9245)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerJDBCUnitTest.java	2007-02-01 11:02:12 UTC (rev 9246)
@@ -51,8 +51,7 @@
 	{
 		_logger.info("Writing temp files to " + TMP_DIR);
 
-		// delete this one just to make sure asserts take the new ones
-		_returnFile.delete();
+		clearMessages() ;
 
 		try
 		{
@@ -120,8 +119,6 @@
 			sender.deliver(message);
 		}
 
-		_returnFile.delete();
-		
 		//		 launch listener manager in a child thread
 		final ConfigTree newTree = ConfigTree.fromInputStream(new FileInputStream(
 				configFile));
@@ -146,15 +143,16 @@
 		// messages
 		// will be processed, and how many will remain unprocessed
 		
-		Thread.sleep(150 * howMany);
+		for (int count = 0 ; count < howMany ; count++)
+		{
+			final String response = getMessage(10000) ;
+			assertNotNull("getMessage timeout", response) ;
+			assertEquals(THE_TEXT, response);
+		}
 
 		_logger.debug("going to stop");
 		controller.stop();
 		_logger.debug("back from stop");
-
-		assertEquals(THE_TEXT, stringFromFile(_returnFile));
-		
-		_returnFile.delete();
 	}
 
 }
\ No newline at end of file

Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerJMSXntegrationTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerJMSXntegrationTest.java	2007-02-01 10:59:58 UTC (rev 9245)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/ListenerManagerJMSXntegrationTest.java	2007-02-01 11:02:12 UTC (rev 9246)
@@ -56,8 +56,7 @@
 	{
 		_logger.info("Writing temp files to " + TMP_DIR);
 
-		// delete this one just to make sure asserts take the new ones
-		_returnFile.delete();
+		clearMessages() ;
 
 		// initialize registry
 		runBeforeAllTests();
@@ -109,8 +108,6 @@
 			sender.deliver(message);
 		}
 
-		_returnFile.delete();
-		
 		//		 launch listener manager in a child thread
 		final ConfigTree newTree = ConfigTree.fromInputStream(new FileInputStream(
 				configFile));
@@ -128,15 +125,16 @@
 		// messages
 		// will be processed, and how many will remain unprocessed
 		
-		Thread.sleep(150 * howMany);
+		for (int count = 0 ; count < howMany ; count++)
+		{
+			final String response = getMessage(10000) ;
+			assertNotNull("getMessage timeout", response) ;
+			assertEquals(THE_TEXT, response);
+		}
 
 		_logger.debug("going to stop");
 		controller.stop();
 		_logger.debug("back from stop");
-
-		Assert.assertEquals(THE_TEXT, stringFromFile(_returnFile));
-		
-		_returnFile.delete();
 	}
 	
 	protected String _file;

Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/listenerFile.xml
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/listenerFile.xml	2007-02-01 10:59:58 UTC (rev 9245)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/listenerFile.xml	2007-02-01 11:02:12 UTC (rev 9246)
@@ -13,7 +13,7 @@
 			postSuffix=".processedOK"
 		/>
 		
-		<action class="org.jboss.soa.esb.listeners.ListenerManagerBaseTest$MockMessageAwareAction" process="writeToDisk" />
+		<action class="org.jboss.soa.esb.listeners.ListenerManagerBaseTest$MockMessageAwareAction" process="notifyTest" />
 		<action  class="org.jboss.soa.esb.actions.Notifier"  okMethod="notifyOK">
 		   	<NotificationList type="OK"> 
 				<target class="NotifyConsole" /> 

Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/listenerFtp.xml
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/listenerFtp.xml	2007-02-01 10:59:58 UTC (rev 9245)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/listenerFtp.xml	2007-02-01 11:02:12 UTC (rev 9246)
@@ -13,7 +13,7 @@
 			postDelete="true"
 		/>
 		
-		<action class="org.jboss.soa.esb.listeners.ListenerManagerBaseTest$MockMessageAwareAction" process="writeToDisk" />
+		<action class="org.jboss.soa.esb.listeners.ListenerManagerBaseTest$MockMessageAwareAction" process="notifyTest" />
 		<action  class="org.jboss.soa.esb.actions.Notifier"  okMethod="notifyOK">
 		   	<NotificationList type="OK"> 
 				<target class="NotifyConsole" /> 

Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/listenerJdbc.xml
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/listenerJdbc.xml	2007-02-01 10:59:58 UTC (rev 9245)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/listenerJdbc.xml	2007-02-01 11:02:12 UTC (rev 9246)
@@ -14,7 +14,7 @@
             tablename="esb_messages" 
         />
         
-        <action class="org.jboss.soa.esb.listeners.ListenerManagerBaseTest$MockMessageAwareAction" process="writeToDisk" />
+        <action class="org.jboss.soa.esb.listeners.ListenerManagerBaseTest$MockMessageAwareAction" process="notifyTest" />
 		<action  class="org.jboss.soa.esb.actions.Notifier"  okMethod="notifyOK">
 		   	<NotificationList type="OK"> 
 				<target class="NotifyConsole" /> 

Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/listenerJms.xml
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/listenerJms.xml	2007-02-01 10:59:58 UTC (rev 9245)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/listeners/listenerJms.xml	2007-02-01 11:02:12 UTC (rev 9246)
@@ -16,7 +16,7 @@
 		    message-selector="messSelector='testJmsGateway'"
 		/>
 		
-		<action class="org.jboss.soa.esb.listeners.ListenerManagerBaseTest$MockMessageAwareAction" process="writeToDisk" />
+		<action class="org.jboss.soa.esb.listeners.ListenerManagerBaseTest$MockMessageAwareAction" process="notifyTest" />
 		<action  class="org.jboss.soa.esb.actions.Notifier"  okMethod="notifyOK">
 		   	<NotificationList type="OK"> 
 				<target class="NotifyConsole" /> 




More information about the jboss-svn-commits mailing list