[jboss-cvs] JBoss Messaging SVN: r1968 - in branches/Branch_1_0_1_SP: lib and 6 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jan 16 02:32:00 EST 2007


Author: ovidiu.feodorov at jboss.com
Date: 2007-01-16 02:31:34 -0500 (Tue, 16 Jan 2007)
New Revision: 1968

Added:
   branches/Branch_1_0_1_SP/lib/jboss-remoting.jar
   branches/Branch_1_0_1_SP/tests/src/org/jboss/test/messaging/util/TestClientInvoker.java
Modified:
   branches/Branch_1_0_1_SP/build-messaging.xml
   branches/Branch_1_0_1_SP/src/main/org/jboss/jms/client/remoting/ClientSocketWrapper.java
   branches/Branch_1_0_1_SP/src/main/org/jboss/jms/server/remoting/ServerSocketWrapper.java
   branches/Branch_1_0_1_SP/tests/bin/runtest
   branches/Branch_1_0_1_SP/tests/etc/log4j.info.xml
   branches/Branch_1_0_1_SP/tests/etc/log4j.trace.xml
   branches/Branch_1_0_1_SP/tests/etc/log4j.xml
   branches/Branch_1_0_1_SP/tests/src/org/jboss/test/messaging/jms/QueueTest.java
   branches/Branch_1_0_1_SP/tests/src/org/jboss/test/messaging/util/RemotingTest.java
Log:
added partial test in investigation of http://jira.jboss.org/jira/browse/JBMESSAGING-748

Modified: branches/Branch_1_0_1_SP/build-messaging.xml
===================================================================
--- branches/Branch_1_0_1_SP/build-messaging.xml	2007-01-15 18:08:00 UTC (rev 1967)
+++ branches/Branch_1_0_1_SP/build-messaging.xml	2007-01-16 07:31:34 UTC (rev 1968)
@@ -49,9 +49,9 @@
    <property name="messaging.version.minor" value="0"/>
    <property name="messaging.version.revision" value="1"/>
    <property name="messaging.version.incrementing" value="6"/>
-   <property name="messaging.version.tag" value="SP2"/>
+   <property name="messaging.version.tag" value="SP3"/>
    <property name="messaging.version.name" value=""/>
-   <property name="messaging.version.cvstag" value="JBossMessaging_1_0_1_SP2"/>
+   <property name="messaging.version.cvstag" value="JBossMessaging_1_0_1_SP3"/>
    <property name="module.name" value="messaging"/>
    <property name="module.Name" value="JBoss Messaging"/>
    <property name="module.version" value="${messaging.version.major}.${messaging.version.minor}.${messaging.version.revision}.${messaging.version.tag}"/>

Added: branches/Branch_1_0_1_SP/lib/jboss-remoting.jar
===================================================================
(Binary files differ)


Property changes on: branches/Branch_1_0_1_SP/lib/jboss-remoting.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: branches/Branch_1_0_1_SP/src/main/org/jboss/jms/client/remoting/ClientSocketWrapper.java
===================================================================
--- branches/Branch_1_0_1_SP/src/main/org/jboss/jms/client/remoting/ClientSocketWrapper.java	2007-01-15 18:08:00 UTC (rev 1967)
+++ branches/Branch_1_0_1_SP/src/main/org/jboss/jms/client/remoting/ClientSocketWrapper.java	2007-01-16 07:31:34 UTC (rev 1968)
@@ -25,7 +25,9 @@
 
 import org.jboss.remoting.InvokerLocator;
 import org.jboss.remoting.serialization.SerializationStreamFactory;
+import org.jboss.remoting.serialization.SerializationManager;
 import org.jboss.remoting.transport.socket.SocketWrapper;
+import org.jboss.logging.Logger;
 
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
@@ -44,16 +46,20 @@
  */
 public class ClientSocketWrapper extends SocketWrapper
 {
-   // Constants -----------------------------------------------------
+   // Constants ------------------------------------------------------------------------------------
 
-   // Static --------------------------------------------------------
+   private static final Logger log = Logger.getLogger(ClientSocketWrapper.class);
 
-   // Attributes ----------------------------------------------------
+   // Static ---------------------------------------------------------------------------------------
 
+   private static boolean trace = log.isTraceEnabled();
+
+   // Attributes -----------------------------------------------------------------------------------
+
    private ObjectInputStream in;
    private ObjectOutputStream out;
 
-   // Constructors --------------------------------------------------
+   // Constructors ---------------------------------------------------------------------------------
 
    public ClientSocketWrapper(Socket socket) throws IOException
    {
@@ -67,7 +73,7 @@
       createStreams(socket, metadata);
    }
 
-   // Public --------------------------------------------------------
+   // Public ---------------------------------------------------------------------------------------
 
    public OutputStream getOutputStream()
    {
@@ -90,12 +96,13 @@
       in.readByte();
    }
 
-   // Package protected ---------------------------------------------
+   // Package protected ----------------------------------------------------------------------------
 
-   // Protected -----------------------------------------------------
+   // Protected ------------------------------------------------------------------------------------
 
    protected void createStreams(Socket socket, Map metadata) throws IOException
    {
+      if (trace) { log.trace(this + " creating streams for " + socket); }
 
       String serializationType = "jboss"; // hardcoding to default to jboss serialization
 
@@ -119,20 +126,35 @@
    protected ObjectInputStream createInputStream(String serializationType, Socket socket)
          throws IOException
    {
+      if (trace) { log.trace(this + " creating input stream"); }
+
       BufferedInputStream bin = new BufferedInputStream(socket.getInputStream());
-      return SerializationStreamFactory.getManagerInstance(serializationType).
-         createInput(bin, null);
+      SerializationManager sm = SerializationStreamFactory.getManagerInstance(serializationType);
+
+      ObjectInputStream ois = sm.createInput(bin, null);
+
+      if (trace) { log.trace(this + " created and returned " + ois); }
+
+      return ois;
    }
 
    protected ObjectOutputStream createOutputStream(String serializationType, Socket socket)
          throws IOException
    {
+      if (trace) { log.trace(this + " creating output stream"); }
+
       BufferedOutputStream bout = new BufferedOutputStream(socket.getOutputStream());
-      return SerializationStreamFactory.getManagerInstance(serializationType).createOutput(bout);
+      SerializationManager sm = SerializationStreamFactory.getManagerInstance(serializationType);
+
+      ObjectOutputStream oos = sm.createOutput(bout);
+
+      if (trace) { log.trace(this + " created and returned " + oos); }
+
+      return oos;
    }
 
-   // Private -------------------------------------------------------
+   // Private --------------------------------------------------------------------------------------
 
-   // Inner classes -------------------------------------------------
+   // Inner classes --------------------------------------------------------------------------------
 
 }

Modified: branches/Branch_1_0_1_SP/src/main/org/jboss/jms/server/remoting/ServerSocketWrapper.java
===================================================================
--- branches/Branch_1_0_1_SP/src/main/org/jboss/jms/server/remoting/ServerSocketWrapper.java	2007-01-15 18:08:00 UTC (rev 1967)
+++ branches/Branch_1_0_1_SP/src/main/org/jboss/jms/server/remoting/ServerSocketWrapper.java	2007-01-16 07:31:34 UTC (rev 1968)
@@ -34,6 +34,7 @@
 import org.jboss.jms.client.remoting.ClientSocketWrapper;
 import org.jboss.logging.Logger;
 import org.jboss.remoting.serialization.SerializationStreamFactory;
+import org.jboss.remoting.serialization.SerializationManager;
 
 /**
  * @author <a href="mailto:tom.elrod at jboss.com">Tom Elrod</a>
@@ -42,29 +43,33 @@
  */
 public class ServerSocketWrapper extends ClientSocketWrapper
 {
-   // Constants -----------------------------------------------------
+   // Constants ------------------------------------------------------------------------------------
 
    final static private Logger log = Logger.getLogger(ServerSocketWrapper.class);
 
-   // Static --------------------------------------------------------
+   // Static ---------------------------------------------------------------------------------------
 
-   // Attributes ----------------------------------------------------
+   // Attributes -----------------------------------------------------------------------------------
 
-   private boolean trace = log.isTraceEnabled();
+   private static boolean trace = log.isTraceEnabled();
 
-   // Constructors --------------------------------------------------
+   // Constructors ---------------------------------------------------------------------------------
 
    public ServerSocketWrapper(Socket socket) throws Exception
    {
       super(socket);
+
+      log.debug(this + " constructed");
    }
 
    public ServerSocketWrapper(Socket socket, Map metadata, Integer timeout) throws Exception
    {
       super(socket, metadata, timeout);
+
+      log.debug(this + " constructed using a timeout of " + timeout + " ms");
    }
 
-   // Public --------------------------------------------------------
+   // Public ---------------------------------------------------------------------------------------
 
    public void checkConnection() throws IOException
    {
@@ -98,32 +103,53 @@
       out.reset();
    }
 
+   public String toString()
+   {
+      return "ServerSocketWrapper[" + getSocket() + "]";
+   }
 
-   // Package protected ---------------------------------------------
+   // Package protected ----------------------------------------------------------------------------
 
-   // Protected -----------------------------------------------------
+   // Protected ------------------------------------------------------------------------------------
 
    protected ObjectInputStream createInputStream(String serializationType, Socket socket)
       throws IOException
    {
+      if (trace) { log.trace(this + " creating input stream"); }
+
       BufferedInputStream bin = new BufferedInputStream(socket.getInputStream());
-      return SerializationStreamFactory.getManagerInstance(serializationType).
-         createInput(bin, null);
+      SerializationManager sm = SerializationStreamFactory.getManagerInstance(serializationType);
+
+      if (trace) { log.trace(this + " creating input stream using " + sm); }
+
+      ObjectInputStream ois = sm.createInput(bin, null);
+
+      if (trace) { log.trace(this + " created and returned " + ois); }
+
+      return ois;
    }
 
    protected ObjectOutputStream createOutputStream(String serializationType, Socket socket)
          throws IOException
    {
+      if (trace) { log.trace(this + " creating output stream"); }
+
       BufferedOutputStream bout = new BufferedOutputStream(socket.getOutputStream());
-      ObjectOutputStream oout = SerializationStreamFactory.getManagerInstance(serializationType).
-         createOutput(bout);
+      SerializationManager sm = SerializationStreamFactory.getManagerInstance(serializationType);
 
-      oout.flush();
-      return oout;
+      if (trace) { log.trace(this + " creating output stream using " + sm); }
+
+      ObjectOutputStream oos = sm.createOutput(bout);
+
+      oos.flush();
+
+      if (trace) { log.trace(this + " created and returned " + oos); }
+
+      return oos;
    }
 
-   // Private -------------------------------------------------------
+   // Private --------------------------------------------------------------------------------------
 
-   // Inner classes -------------------------------------------------
+   // Inner classes --------------------------------------------------------------------------------
 
 }

Modified: branches/Branch_1_0_1_SP/tests/bin/runtest
===================================================================
--- branches/Branch_1_0_1_SP/tests/bin/runtest	2007-01-15 18:08:00 UTC (rev 1967)
+++ branches/Branch_1_0_1_SP/tests/bin/runtest	2007-01-16 07:31:34 UTC (rev 1968)
@@ -43,7 +43,7 @@
 # it from there.
 #
 
-ant -Dtest.execution.classpath.file=bin/.test.execution.classpath -f $reldir/../build.xml compile get-test-execution-classpath
+ant -Dtest.execution.classpath.file=bin/.test.execution.classpath -f $reldir/../build.xml get-test-execution-classpath
 CLASSPATH=`cat $reldir/.test.execution.classpath`
 
 outputdir="$reldir/../output"

Modified: branches/Branch_1_0_1_SP/tests/etc/log4j.info.xml
===================================================================
--- branches/Branch_1_0_1_SP/tests/etc/log4j.info.xml	2007-01-15 18:08:00 UTC (rev 1967)
+++ branches/Branch_1_0_1_SP/tests/etc/log4j.info.xml	2007-01-16 07:31:34 UTC (rev 1968)
@@ -19,7 +19,7 @@
       <param name="Append" value="true"/>
 
       <layout class="org.apache.log4j.PatternLayout">
-         <param name="ConversionPattern" value="%d %-5r %-5p [%c] @%t %m%n"/>
+         <param name="ConversionPattern" value="%d %-5p @%t [%c{1}] %m%n"/>
       </layout>
    </appender>
 

Modified: branches/Branch_1_0_1_SP/tests/etc/log4j.trace.xml
===================================================================
--- branches/Branch_1_0_1_SP/tests/etc/log4j.trace.xml	2007-01-15 18:08:00 UTC (rev 1967)
+++ branches/Branch_1_0_1_SP/tests/etc/log4j.trace.xml	2007-01-16 07:31:34 UTC (rev 1968)
@@ -19,7 +19,7 @@
       <param name="Append" value="true"/>
 
       <layout class="org.apache.log4j.PatternLayout">
-         <param name="ConversionPattern" value="%d %-5r %-5p [%c] @%t %m%n"/>
+         <param name="ConversionPattern" value="%d %-5p @%t [%c] %m%n"/>
       </layout>
    </appender>
 

Modified: branches/Branch_1_0_1_SP/tests/etc/log4j.xml
===================================================================
--- branches/Branch_1_0_1_SP/tests/etc/log4j.xml	2007-01-15 18:08:00 UTC (rev 1967)
+++ branches/Branch_1_0_1_SP/tests/etc/log4j.xml	2007-01-16 07:31:34 UTC (rev 1968)
@@ -19,7 +19,7 @@
       <param name="Append" value="true"/>
 
       <layout class="org.apache.log4j.PatternLayout">
-         <param name="ConversionPattern" value="%d %-5r %-5p [%c] @%t %m%n"/>
+         <param name="ConversionPattern" value="%d %-5p @%t [%c] %m%n"/>
       </layout>
    </appender>
 
@@ -70,6 +70,10 @@
       <priority value="DEBUG"/>
    </category>
 
+   <category name="org.jboss.remoting">
+      <priority value="TRACE" class="org.jboss.logging.XLevel"/>
+   </category>
+
    <root>
       <appender-ref ref="CONSOLE"/>
       <appender-ref ref="FILE"/>

Modified: branches/Branch_1_0_1_SP/tests/src/org/jboss/test/messaging/jms/QueueTest.java
===================================================================
--- branches/Branch_1_0_1_SP/tests/src/org/jboss/test/messaging/jms/QueueTest.java	2007-01-15 18:08:00 UTC (rev 1967)
+++ branches/Branch_1_0_1_SP/tests/src/org/jboss/test/messaging/jms/QueueTest.java	2007-01-16 07:31:34 UTC (rev 1968)
@@ -31,7 +31,6 @@
 import javax.naming.InitialContext;
 
 import org.jboss.jms.client.JBossConnectionFactory;
-import org.jboss.jms.message.JBossMessage;
 import org.jboss.test.messaging.MessagingTestCase;
 import org.jboss.test.messaging.tools.ServerManagement;
 

Modified: branches/Branch_1_0_1_SP/tests/src/org/jboss/test/messaging/util/RemotingTest.java
===================================================================
--- branches/Branch_1_0_1_SP/tests/src/org/jboss/test/messaging/util/RemotingTest.java	2007-01-15 18:08:00 UTC (rev 1967)
+++ branches/Branch_1_0_1_SP/tests/src/org/jboss/test/messaging/util/RemotingTest.java	2007-01-16 07:31:34 UTC (rev 1968)
@@ -44,6 +44,7 @@
 import org.jboss.remoting.transport.Connector;
 import org.jboss.test.messaging.MessagingTestCase;
 import org.jboss.test.messaging.tools.ServerManagement;
+import org.jboss.test.messaging.tools.jmx.ServiceContainer;
 
 import EDU.oswego.cs.dl.util.concurrent.Slot;
 
@@ -248,8 +249,95 @@
       conn2.close();
    }
 
+   /**
+    * See http://jira.jboss.org/jira/browse/JBMESSAGING-748
+    */
+   public void testServerLockup() throws Throwable
+   {
+      // this test only makes sense in a remote configuration
+      if (!isRemote())
+      {
+         return;
+      }
 
+      // get the remote server locator
 
+      String s = (String)ServerManagement.
+         getAttribute(ServiceContainer.REMOTING_OBJECT_NAME, "InvokerLocator");
+
+      final InvokerLocator serverInvokerLocator = new InvokerLocator(s);
+
+      // open a socket but don't do anything else. This locks the server with a pre
+      // http://jira.jboss.org/jira/browse/JBMESSAGING-748 code base
+
+      new Thread(new Runnable()
+      {
+         public void run()
+         {
+            try
+            {
+               log.debug("rogue connection into the server");
+
+               TestClientInvoker rogueInvoker = new TestClientInvoker(serverInvokerLocator);
+
+               rogueInvoker.connect();
+               rogueInvoker.openConnectionButDontSendAnything();
+
+
+               log.debug("sleeping for 30 secs");
+
+               Thread.sleep(30000);
+
+               log.debug("woke up and exiting");
+            }
+            catch(Throwable t)
+            {
+               log.error("Failed to establish rogue connection", t);
+            }
+
+         }
+      }, "Rogue thread").start();
+
+
+      final Slot rendezVous = new Slot();
+
+      // create a second "real" connection and send an invocation from a different thread,
+      // simulating a real client trying to connect. This will block forever.
+
+      new Thread(new Runnable()
+      {
+         public void run()
+         {
+            try
+            {
+
+               Thread.sleep(5000);
+
+               log.debug("trying to connect to the server");
+
+               TestClientInvoker honestInvoker = new TestClientInvoker(serverInvokerLocator);
+
+               honestInvoker.connect();
+               honestInvoker.openConnectionAndSendJunk();
+
+               log.debug("sent junk");
+
+               rendezVous.put(Boolean.TRUE);
+            }
+            catch(Throwable t)
+            {
+               log.error("Failed to connect to server", t);
+            }
+
+         }
+      }, "Honest thread").start();
+
+
+      // wait for the honest invoker to finish its invocation
+      Boolean b = (Boolean)rendezVous.poll(15000);
+      assertNotNull(b);
+   }
+
    // Package protected ---------------------------------------------
 
    // Protected -----------------------------------------------------

Added: branches/Branch_1_0_1_SP/tests/src/org/jboss/test/messaging/util/TestClientInvoker.java
===================================================================
--- branches/Branch_1_0_1_SP/tests/src/org/jboss/test/messaging/util/TestClientInvoker.java	2007-01-15 18:08:00 UTC (rev 1967)
+++ branches/Branch_1_0_1_SP/tests/src/org/jboss/test/messaging/util/TestClientInvoker.java	2007-01-16 07:31:34 UTC (rev 1968)
@@ -0,0 +1,80 @@
+/**
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.test.messaging.util;
+
+import org.jboss.remoting.transport.socket.MicroSocketClientInvoker;
+import org.jboss.remoting.InvokerLocator;
+import org.jboss.logging.Logger;
+
+import java.net.Socket;
+import java.io.OutputStream;
+
+/**
+ * @author <a href="mailto:ovidiu at jboss.org">Ovidiu Feodorov</a>
+ * @version <tt>$Revision: 1.1.2.1 $</tt>
+ *
+ * $Id: TestClientInvoker.java,v 1.1.2.1 2007/01/16 00:29:29 ovidiu Exp $
+ */
+class TestClientInvoker extends MicroSocketClientInvoker
+{
+   // Constants ------------------------------------------------------------------------------------
+
+   private static final Logger log = Logger.getLogger(TestClientInvoker.class);
+
+   // Static ---------------------------------------------------------------------------------------
+
+   // Attributes -----------------------------------------------------------------------------------
+
+   // Constructors ---------------------------------------------------------------------------------
+
+   public TestClientInvoker(InvokerLocator locator)
+   {
+      super(locator);
+   }
+
+   // Public ---------------------------------------------------------------------------------------
+
+   public String toString()
+   {
+      return "TestClientInvoker[" + Integer.toHexString(hashCode()) + "]";
+   }
+
+   // Package protected ----------------------------------------------------------------------------
+
+   Socket openConnectionButDontSendAnything() throws Exception
+   {
+      log.debug(this + " creating simple socket");
+
+      Socket socket = new Socket(locator.getHost(), locator.getPort());
+
+      log.debug(this + " created socket " + socket);
+
+      return socket;
+   }
+
+   void openConnectionAndSendJunk() throws Exception
+   {
+      Socket socket = openConnectionButDontSendAnything();
+
+      OutputStream os = socket.getOutputStream();
+
+      os.write((byte)-1);
+
+      log.debug(this + " wrote junk on socket");
+
+//      os.flush();
+//
+//      log.debug(this + " flushed the stream");
+   }
+
+
+   // Protected ------------------------------------------------------------------------------------
+
+   // Private --------------------------------------------------------------------------------------
+
+   // Inner classes --------------------------------------------------------------------------------
+}


Property changes on: branches/Branch_1_0_1_SP/tests/src/org/jboss/test/messaging/util/TestClientInvoker.java
___________________________________________________________________
Name: svn:keywords
   + "Id LastChangedDate Author Revision"




More information about the jboss-cvs-commits mailing list