Author: ron.sigal(a)jboss.com
Date: 2010-08-04 21:28:36 -0400 (Wed, 04 Aug 2010)
New Revision: 6009
Modified:
remoting2/branches/2.2/src/tests/org/jboss/test/remoting/transport/http/EmptyURITestCase.java
remoting2/branches/2.2/src/tests/org/jboss/test/remoting/transport/http/NullInputStreamTestCase.java
Log:
JBREM-1241: Added svn:eol-style subversion property.
Modified:
remoting2/branches/2.2/src/tests/org/jboss/test/remoting/transport/http/EmptyURITestCase.java
===================================================================
---
remoting2/branches/2.2/src/tests/org/jboss/test/remoting/transport/http/EmptyURITestCase.java 2010-08-05
01:27:37 UTC (rev 6008)
+++
remoting2/branches/2.2/src/tests/org/jboss/test/remoting/transport/http/EmptyURITestCase.java 2010-08-05
01:28:36 UTC (rev 6009)
@@ -1,222 +1,222 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2009, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-
-package org.jboss.test.remoting.transport.http;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.management.MBeanServer;
-
-import junit.framework.TestCase;
-
-import org.apache.log4j.ConsoleAppender;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-import org.apache.log4j.PatternLayout;
-import org.jboss.logging.XLevel;
-import org.jboss.remoting.CannotConnectException;
-import org.jboss.remoting.Client;
-import org.jboss.remoting.InvocationRequest;
-import org.jboss.remoting.InvokerLocator;
-import org.jboss.remoting.InvokerRegistry;
-import org.jboss.remoting.ServerInvocationHandler;
-import org.jboss.remoting.ServerInvoker;
-import org.jboss.remoting.callback.InvokerCallbackHandler;
-import org.jboss.remoting.transport.Connector;
-import org.jboss.remoting.transport.PortUtil;
-import org.jboss.remoting.transport.ServerFactory;
-import org.jboss.remoting.transport.coyote.CoyoteInvoker;
-import org.jboss.remoting.transport.http.TransportClientFactory;
-
-
-/**
- * Unit test for JBREM-1168.
- *
- * @author <a href="ron.sigal(a)jboss.com">Ron Sigal</a>
- * @version $Revision: 1.1 $
- * <p>
- * Copyright Dec 13, 2009
- */
-public class EmptyURITestCase extends TestCase
-{
- private static Logger log = Logger.getLogger(EmptyURITestCase.class);
-
- private static boolean firstTime = true;
-
- protected String host;
- protected int port;
- protected String locatorURI;
- protected InvokerLocator serverLocator;
- protected Connector connector;
- protected TestInvocationHandler invocationHandler;
-
-
- public void setUp() throws Exception
- {
- if (firstTime)
- {
- firstTime = false;
- Logger.getLogger("org.jboss.remoting").setLevel(XLevel.INFO);
- Logger.getLogger("org.jboss.test.remoting").setLevel(Level.INFO);
- String pattern = "[%d{ABSOLUTE}] [%t] %5p (%F:%L) - %m%n";
- PatternLayout layout = new PatternLayout(pattern);
- ConsoleAppender consoleAppender = new ConsoleAppender(layout);
- Logger.getRootLogger().addAppender(consoleAppender);
-
- InvokerRegistry.registerInvokerFactories("http",
TransportClientFactory.class, TestCoyoteInvokerFactory.class);
- }
- }
-
-
- public void tearDown()
- {
- }
-
-
- public void testEmptyURI() throws Throwable
- {
- log.info("entering " + getName());
-
- // Start server.
- setupServer();
-
- // Create client.
- InvokerLocator clientLocator = new InvokerLocator(locatorURI);
- HashMap clientConfig = new HashMap();
- clientConfig.put(InvokerLocator.FORCE_REMOTE, "true");
- addExtraClientConfig(clientConfig);
- Client client = new Client(clientLocator, clientConfig);
- client.connect();
- log.info("client is connected");
-
- // Test connections.
- try
- {
- Object response = client.invoke("abc");
- fail("expected CannotConnectException, got: " + response);
- }
- catch (CannotConnectException e)
- {
- String message = e.getMessage();
- assertTrue("expected CannotConnectException message to contain
\"Invalid URI\"", message != null && message.indexOf("Invalid
URI") > 0);
- log.info("got expected CannotConnectException");
- }
- catch (Throwable t)
- {
- fail("expected CannotConnectException, got: " + t);
- }
-
- client.disconnect();
- shutdownServer();
- log.info(getName() + " PASSES");
- }
-
-
- protected String getTransport()
- {
- return "http";
- }
-
-
- protected void addExtraClientConfig(Map config) {}
- protected void addExtraServerConfig(Map config) {}
-
-
- protected void setupServer() throws Exception
- {
- host = InetAddress.getLocalHost().getHostAddress();
- port = PortUtil.findFreePort(host);
- locatorURI = getTransport() + "://" + host + ":" + port;
- String metadata = System.getProperty("remoting.metadata");
- if (metadata != null)
- {
- locatorURI += "/?" + metadata;
- }
- serverLocator = new InvokerLocator(locatorURI);
- log.info("Starting remoting server with locator uri of: " + locatorURI);
- HashMap config = new HashMap();
- config.put(InvokerLocator.FORCE_REMOTE, "true");
- addExtraServerConfig(config);
- connector = new Connector(serverLocator, config);
- connector.create();
- invocationHandler = new TestInvocationHandler();
- connector.addInvocationHandler("test", invocationHandler);
- connector.start();
- }
-
-
- protected void shutdownServer() throws Exception
- {
- if (connector != null)
- connector.stop();
- }
-
-
- static class TestInvocationHandler implements ServerInvocationHandler
- {
- public void addListener(InvokerCallbackHandler callbackHandler) {}
- public Object invoke(final InvocationRequest invocation) throws Throwable
- {
- return invocation.getParameter();
- }
- public void removeListener(InvokerCallbackHandler callbackHandler) {}
- public void setMBeanServer(MBeanServer server) {}
- public void setInvoker(ServerInvoker invoker) {}
- }
-
- static public class TestCoyoteInvokerFactory implements ServerFactory
- {
- public ServerInvoker createServerInvoker(InvokerLocator locator, Map config) throws
IOException
- {
- return new TestCoyoteInvoker(locator, config);
- }
- public boolean supportsSSL()
- {
- return false;
- }
- }
-
-
- static class TestCoyoteInvoker extends CoyoteInvoker
- {
- public TestCoyoteInvoker(InvokerLocator locator)
- {
- super(locator);
- }
-
- public TestCoyoteInvoker(InvokerLocator locator, Map configuration)
- {
- super(locator, configuration);
- }
-
- public void service(org.apache.coyote.Request req, org.apache.coyote.Response res)
throws Exception
- {
- byte[] b = new byte[]{};
- req.requestURI().setBytes(b, 0, 0);
- log.info(this + ".service()");
- super.service(req, res);
- }
- }
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+
+package org.jboss.test.remoting.transport.http;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.management.MBeanServer;
+
+import junit.framework.TestCase;
+
+import org.apache.log4j.ConsoleAppender;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.PatternLayout;
+import org.jboss.logging.XLevel;
+import org.jboss.remoting.CannotConnectException;
+import org.jboss.remoting.Client;
+import org.jboss.remoting.InvocationRequest;
+import org.jboss.remoting.InvokerLocator;
+import org.jboss.remoting.InvokerRegistry;
+import org.jboss.remoting.ServerInvocationHandler;
+import org.jboss.remoting.ServerInvoker;
+import org.jboss.remoting.callback.InvokerCallbackHandler;
+import org.jboss.remoting.transport.Connector;
+import org.jboss.remoting.transport.PortUtil;
+import org.jboss.remoting.transport.ServerFactory;
+import org.jboss.remoting.transport.coyote.CoyoteInvoker;
+import org.jboss.remoting.transport.http.TransportClientFactory;
+
+
+/**
+ * Unit test for JBREM-1168.
+ *
+ * @author <a href="ron.sigal(a)jboss.com">Ron Sigal</a>
+ * @version $Revision: 1.1 $
+ * <p>
+ * Copyright Dec 13, 2009
+ */
+public class EmptyURITestCase extends TestCase
+{
+ private static Logger log = Logger.getLogger(EmptyURITestCase.class);
+
+ private static boolean firstTime = true;
+
+ protected String host;
+ protected int port;
+ protected String locatorURI;
+ protected InvokerLocator serverLocator;
+ protected Connector connector;
+ protected TestInvocationHandler invocationHandler;
+
+
+ public void setUp() throws Exception
+ {
+ if (firstTime)
+ {
+ firstTime = false;
+ Logger.getLogger("org.jboss.remoting").setLevel(XLevel.INFO);
+ Logger.getLogger("org.jboss.test.remoting").setLevel(Level.INFO);
+ String pattern = "[%d{ABSOLUTE}] [%t] %5p (%F:%L) - %m%n";
+ PatternLayout layout = new PatternLayout(pattern);
+ ConsoleAppender consoleAppender = new ConsoleAppender(layout);
+ Logger.getRootLogger().addAppender(consoleAppender);
+
+ InvokerRegistry.registerInvokerFactories("http",
TransportClientFactory.class, TestCoyoteInvokerFactory.class);
+ }
+ }
+
+
+ public void tearDown()
+ {
+ }
+
+
+ public void testEmptyURI() throws Throwable
+ {
+ log.info("entering " + getName());
+
+ // Start server.
+ setupServer();
+
+ // Create client.
+ InvokerLocator clientLocator = new InvokerLocator(locatorURI);
+ HashMap clientConfig = new HashMap();
+ clientConfig.put(InvokerLocator.FORCE_REMOTE, "true");
+ addExtraClientConfig(clientConfig);
+ Client client = new Client(clientLocator, clientConfig);
+ client.connect();
+ log.info("client is connected");
+
+ // Test connections.
+ try
+ {
+ Object response = client.invoke("abc");
+ fail("expected CannotConnectException, got: " + response);
+ }
+ catch (CannotConnectException e)
+ {
+ String message = e.getMessage();
+ assertTrue("expected CannotConnectException message to contain
\"Invalid URI\"", message != null && message.indexOf("Invalid
URI") > 0);
+ log.info("got expected CannotConnectException");
+ }
+ catch (Throwable t)
+ {
+ fail("expected CannotConnectException, got: " + t);
+ }
+
+ client.disconnect();
+ shutdownServer();
+ log.info(getName() + " PASSES");
+ }
+
+
+ protected String getTransport()
+ {
+ return "http";
+ }
+
+
+ protected void addExtraClientConfig(Map config) {}
+ protected void addExtraServerConfig(Map config) {}
+
+
+ protected void setupServer() throws Exception
+ {
+ host = InetAddress.getLocalHost().getHostAddress();
+ port = PortUtil.findFreePort(host);
+ locatorURI = getTransport() + "://" + host + ":" + port;
+ String metadata = System.getProperty("remoting.metadata");
+ if (metadata != null)
+ {
+ locatorURI += "/?" + metadata;
+ }
+ serverLocator = new InvokerLocator(locatorURI);
+ log.info("Starting remoting server with locator uri of: " + locatorURI);
+ HashMap config = new HashMap();
+ config.put(InvokerLocator.FORCE_REMOTE, "true");
+ addExtraServerConfig(config);
+ connector = new Connector(serverLocator, config);
+ connector.create();
+ invocationHandler = new TestInvocationHandler();
+ connector.addInvocationHandler("test", invocationHandler);
+ connector.start();
+ }
+
+
+ protected void shutdownServer() throws Exception
+ {
+ if (connector != null)
+ connector.stop();
+ }
+
+
+ static class TestInvocationHandler implements ServerInvocationHandler
+ {
+ public void addListener(InvokerCallbackHandler callbackHandler) {}
+ public Object invoke(final InvocationRequest invocation) throws Throwable
+ {
+ return invocation.getParameter();
+ }
+ public void removeListener(InvokerCallbackHandler callbackHandler) {}
+ public void setMBeanServer(MBeanServer server) {}
+ public void setInvoker(ServerInvoker invoker) {}
+ }
+
+ static public class TestCoyoteInvokerFactory implements ServerFactory
+ {
+ public ServerInvoker createServerInvoker(InvokerLocator locator, Map config) throws
IOException
+ {
+ return new TestCoyoteInvoker(locator, config);
+ }
+ public boolean supportsSSL()
+ {
+ return false;
+ }
+ }
+
+
+ static class TestCoyoteInvoker extends CoyoteInvoker
+ {
+ public TestCoyoteInvoker(InvokerLocator locator)
+ {
+ super(locator);
+ }
+
+ public TestCoyoteInvoker(InvokerLocator locator, Map configuration)
+ {
+ super(locator, configuration);
+ }
+
+ public void service(org.apache.coyote.Request req, org.apache.coyote.Response res)
throws Exception
+ {
+ byte[] b = new byte[]{};
+ req.requestURI().setBytes(b, 0, 0);
+ log.info(this + ".service()");
+ super.service(req, res);
+ }
+ }
}
\ No newline at end of file
Property changes on:
remoting2/branches/2.2/src/tests/org/jboss/test/remoting/transport/http/EmptyURITestCase.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified:
remoting2/branches/2.2/src/tests/org/jboss/test/remoting/transport/http/NullInputStreamTestCase.java
===================================================================
---
remoting2/branches/2.2/src/tests/org/jboss/test/remoting/transport/http/NullInputStreamTestCase.java 2010-08-05
01:27:37 UTC (rev 6008)
+++
remoting2/branches/2.2/src/tests/org/jboss/test/remoting/transport/http/NullInputStreamTestCase.java 2010-08-05
01:28:36 UTC (rev 6009)
@@ -1,507 +1,507 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2005, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
-*/
-package org.jboss.test.remoting.transport.http;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.management.MBeanServer;
-
-import junit.framework.TestCase;
-
-import org.apache.log4j.ConsoleAppender;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-import org.apache.log4j.PatternLayout;
-import org.jboss.logging.XLevel;
-import org.jboss.remoting.CannotConnectException;
-import org.jboss.remoting.Client;
-import org.jboss.remoting.InvocationRequest;
-import org.jboss.remoting.InvokerLocator;
-import org.jboss.remoting.ServerInvocationHandler;
-import org.jboss.remoting.ServerInvoker;
-import org.jboss.remoting.callback.InvokerCallbackHandler;
-import org.jboss.remoting.marshal.UnMarshaller;
-import org.jboss.remoting.marshal.http.HTTPUnMarshaller;
-import org.jboss.remoting.transport.Connector;
-import org.jboss.remoting.transport.http.HTTPClientInvoker;
-import org.jboss.remoting.transport.http.WebServerError;
-
-
-/**
- * Unit test for JBREM-1052.
- *
- * @author <a href="ron.sigal(a)jboss.com">Ron Sigal</a>
- * @version $Revision: 1.1 $
- * <p>
- * Copyright Oct 27, 2008
- * </p>
- */
-public class NullInputStreamTestCase extends TestCase
-{
- private static Logger log = Logger.getLogger(NullInputStreamTestCase.class);
-
- private static boolean firstTime = true;
-
- protected String host;
- protected int port;
- protected String locatorURI;
- protected InvokerLocator serverLocator;
- protected Connector connector;
- protected Client client;
- protected TestInvocationHandler invocationHandler;
-
-
- public void setUp() throws Exception
- {
- if (firstTime)
- {
- firstTime = false;
- Logger.getLogger("org.jboss.remoting").setLevel(XLevel.INFO);
- Logger.getLogger("org.jboss.test.remoting").setLevel(Level.INFO);
- String pattern = "[%d{ABSOLUTE}] [%t] %5p (%F:%L) - %m%n";
- PatternLayout layout = new PatternLayout(pattern);
- ConsoleAppender consoleAppender = new ConsoleAppender(layout);
- Logger.getRootLogger().addAppender(consoleAppender);
- }
-
- TestUnMarshaller.clear();
- }
-
-
- public void tearDown()
- {
- if (client != null)
- {
- client.disconnect();
- }
- if (connector != null)
- {
- connector.destroy();
- }
- }
-
-
- /**
- * Tests default behavior with POST method.
- */
- public void testDefaultBehaviorPost() throws Throwable
- {
- log.info("entering " + getName());
-
- // Start server.
- setupServer();
- boolean ok = false;
-
-
- HashMap config = new HashMap();
- config.put(InvokerLocator.FORCE_REMOTE, "true");
- HashMap metadata = new HashMap();
- metadata.put(Client.RAW, "true");
- metadata.put("TYPE", "POST");
-
- try
- {
- log.info("response: " + makeInvocation(config, metadata));
- fail("expected WebServerError");
- }
- catch (WebServerError e)
- {
- log.info("received expected WebServerError");
- ok = true;
- }
-
- assertTrue(ok);
- assertTrue(TestUnMarshaller.enteredRead);
- assertTrue(TestUnMarshaller.streamIsNull);
-
- log.info(getName() + " PASSES");
- }
-
-
- /**
- * Tests default behavior with HEAD method.
- */
- public void testDefaultBehaviorHead() throws Throwable
- {
- log.info("entering " + getName());
-
- // Start server.
- setupServer();
- boolean ok = false;
-
-
- HashMap config = new HashMap();
- config.put(InvokerLocator.FORCE_REMOTE, "true");
- HashMap metadata = new HashMap();
- metadata.put(Client.RAW, "true");
- metadata.put("TYPE", "HEAD");
-
- try
- {
- log.info("response: " + makeInvocation(config, metadata));
- fail("expected WebServerError");
- }
- catch (WebServerError e)
- {
- log.info("received expected WebServerError");
- ok = true;
- }
-
- assertTrue(ok);
- assertTrue(TestUnMarshaller.enteredRead);
- assertTrue(TestUnMarshaller.streamIsNull);
-
- log.info(getName() + " PASSES");
- }
-
-
- /**
- * Tests behavior with unmarshallNullStream == true and with POST method.
- */
- public void testUnmarshalNullStreamTruePost() throws Throwable
- {
- log.info("entering " + getName());
-
- // Start server.
- setupServer();
- boolean ok = false;
-
-
- HashMap config = new HashMap();
- config.put(InvokerLocator.FORCE_REMOTE, "true");
- config.put(HTTPClientInvoker.UNMARSHAL_NULL_STREAM, "true");
- HashMap metadata = new HashMap();
- metadata.put(Client.RAW, "true");
- metadata.put("TYPE", "POST");
-
- try
- {
- log.info("response: " + makeInvocation(config, metadata));
- fail("expected WebServerError");
- }
- catch (WebServerError e)
- {
- log.info("received expected WebServerError");
- ok = true;
- }
-
- assertTrue(ok);
- assertTrue(TestUnMarshaller.enteredRead);
- assertTrue(TestUnMarshaller.streamIsNull);
-
- log.info(getName() + " PASSES");
- }
-
-
- /**
- * Tests behavior with unmarshallNullStream == true and with HEAD method.
- */
- public void testUnmarshalNullStreamTrueHead() throws Throwable
- {
- log.info("entering " + getName());
-
- // Start server.
- setupServer();
- boolean ok = false;
-
-
- HashMap config = new HashMap();
- config.put(InvokerLocator.FORCE_REMOTE, "true");
- config.put(HTTPClientInvoker.UNMARSHAL_NULL_STREAM, "true");
- HashMap metadata = new HashMap();
- metadata.put(Client.RAW, "true");
- metadata.put("TYPE", "HEAD");
-
- try
- {
- log.info("response: " + makeInvocation(config, metadata));
- fail("expected WebServerError");
- }
- catch (WebServerError e)
- {
- log.info("received expected WebServerError");
- ok = true;
- }
-
- assertTrue(ok);
- assertTrue(TestUnMarshaller.enteredRead);
- assertTrue(TestUnMarshaller.streamIsNull);
-
- log.info(getName() + " PASSES");
- }
-
-
- /**
- * Tests behavior with unmarshallNullStream == false and with POST method.
- */
- public void testUnmarshalNullStreamFalsePost() throws Throwable
- {
- log.info("entering " + getName());
-
- // Start server.
- setupServer();
- boolean ok = false;
-
-
- HashMap config = new HashMap();
- config.put(InvokerLocator.FORCE_REMOTE, "true");
- config.put(HTTPClientInvoker.UNMARSHAL_NULL_STREAM, "false");
- HashMap metadata = new HashMap();
- metadata.put(Client.RAW, "true");
- metadata.put("TYPE", "POST");
-
- try
- {
- log.info("response: " + makeInvocation(config, metadata));
- fail("expected WebServerError");
- }
- catch (WebServerError e)
- {
- log.info("received expected WebServerError");
- ok = true;
- }
-
- assertTrue(ok);
- assertFalse(TestUnMarshaller.enteredRead);
-
- log.info(getName() + " PASSES");
- }
-
-
-
- /**
- * Tests behavior with unmarshallNullStream == false and with HEAD method.
- */
- public void testUnmarshalNullStreamFalseHead() throws Throwable
- {
- log.info("entering " + getName());
-
- // Start server.
- setupServer();
- boolean ok = false;
-
-
- HashMap config = new HashMap();
- config.put(InvokerLocator.FORCE_REMOTE, "true");
- config.put(HTTPClientInvoker.UNMARSHAL_NULL_STREAM, "false");
- HashMap metadata = new HashMap();
- metadata.put(Client.RAW, "true");
- metadata.put("TYPE", "HEAD");
-
- try
- {
- log.info("response: " + makeInvocation(config, metadata));
- fail("expected WebServerError");
- }
- catch (WebServerError e)
- {
- log.info("received expected WebServerError");
- ok = true;
- }
-
- assertTrue(ok);
- assertFalse(TestUnMarshaller.enteredRead);
-
- log.info(getName() + " PASSES");
- }
-
-
- protected Object makeInvocation(HashMap config, HashMap metadata) throws Throwable
- {
- // Create client.
- locatorURI = "http://" + host + ":" + port;
- locatorURI += "/?unmarshaller=" + TestUnMarshaller.class.getName();
- log.info("connecting to " + locatorURI);
- InvokerLocator clientLocator = new InvokerLocator(locatorURI);
- Client client = new Client(clientLocator, config);
- client.connect();
- log.info("client is connected");
-
- Object response = null;
- for (int i = 0; i < 3; i++)
- {
- try
- {
- response = client.invoke("abc", metadata);
- break;
- }
- catch (CannotConnectException e)
- {
- log.info("cannot connect", e);
-
- }
- }
-
- return response;
- }
-
-
- protected void setupServer() throws Exception
- {
- log.info("setupServer()");
- InetAddress localHost = InetAddress.getLocalHost();
- final ServerSocket ss = new ServerSocket(0, 100, localHost);
- ss.setSoTimeout(5000);
- host = localHost.getHostAddress();
- port = ss.getLocalPort();
- new AcceptThread(ss).start();
- log.info("started server");
- }
-
-
- protected void shutdownServer() throws Exception
- {
- if (connector != null)
- connector.stop();
- }
-
-
- static class TestInvocationHandler implements ServerInvocationHandler
- {
- public void addListener(InvokerCallbackHandler callbackHandler) {}
- public Object invoke(final InvocationRequest invocation) throws Throwable
- {
- return invocation.getParameter();
- }
- public void removeListener(InvokerCallbackHandler callbackHandler) {}
- public void setMBeanServer(MBeanServer server) {}
- public void setInvoker(ServerInvoker invoker) {}
- }
-
- public static class TestUnMarshaller extends HTTPUnMarshaller
- {
- /** The serialVersionUID */
- private static final long serialVersionUID = 1L;
-
- public static boolean enteredRead;
- public static boolean streamIsNull;
-
- public Object read(InputStream inputStream, Map metadata, int version) throws
IOException, ClassNotFoundException
- {
- enteredRead = true;
- streamIsNull = (inputStream == null);
- log.info("entered TestUnMarshaller.read()");
- if (inputStream != null)
- {
- return super.read(inputStream, metadata, version);
- }
- else
- {
- return null;
- }
- }
-
- public UnMarshaller cloneUnMarshaller() throws CloneNotSupportedException
- {
- HTTPUnMarshaller unmarshaller = new TestUnMarshaller();
- unmarshaller.setClassLoader(customClassLoader);
- return unmarshaller;
- }
-
- public static void clear()
- {
- enteredRead = false;
- streamIsNull = false;
- }
- }
-
-
- public static class AcceptThread extends Thread
- {
- ServerSocket ss;
-
- public AcceptThread(ServerSocket ss)
- {
- this.ss = ss;
- setDaemon(true);
- }
-
- public void run()
- {
- log.info("starting AcceptThread");
- while (true)
- {
- try
- {
- new WorkerThread(ss.accept()).start();
- }
- catch (Exception e)
- {
- log.error("AcceptThread erroe", e);
- }
- }
- }
- }
-
-
- public static class WorkerThread extends Thread
- {
- Socket s;
-
- public WorkerThread(Socket s)
- {
- this.s = s;
- setDaemon(true);
- }
-
- public void run()
- {
- try
- {
- log.info("starting WorkerThread");
- InputStreamReader ir = new InputStreamReader(s.getInputStream());
- char[] cbuf = new char[1024];
- int len = ir.read(cbuf);
- log.info("available: " + s.getInputStream().available());
- log.info("len: " + len);
- log.info("Request:");
- System.out.println();
- System.out.println(String.copyValueOf(cbuf, 0, len));
- System.out.println();
-
- DataOutputStream dos = new DataOutputStream(s.getOutputStream());
- dos.writeBytes("HTTP/1.1 500 error" + "\r\n");
- dos.writeBytes("Server: testServer");
- dos.writeBytes("Content-Type: text/html" + "\r\n");
- dos.writeBytes("Content-Length: 0\r\n");
- dos.writeBytes("Connection: close\r\n");
- dos.writeBytes("\r\n");
-
- ir.close();
- dos.close();
- s.close();
- }
- catch (Exception e)
- {
- log.error("WorkerThread error", e);
- }
- }
- }
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+*/
+package org.jboss.test.remoting.transport.http;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.InetAddress;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.management.MBeanServer;
+
+import junit.framework.TestCase;
+
+import org.apache.log4j.ConsoleAppender;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.PatternLayout;
+import org.jboss.logging.XLevel;
+import org.jboss.remoting.CannotConnectException;
+import org.jboss.remoting.Client;
+import org.jboss.remoting.InvocationRequest;
+import org.jboss.remoting.InvokerLocator;
+import org.jboss.remoting.ServerInvocationHandler;
+import org.jboss.remoting.ServerInvoker;
+import org.jboss.remoting.callback.InvokerCallbackHandler;
+import org.jboss.remoting.marshal.UnMarshaller;
+import org.jboss.remoting.marshal.http.HTTPUnMarshaller;
+import org.jboss.remoting.transport.Connector;
+import org.jboss.remoting.transport.http.HTTPClientInvoker;
+import org.jboss.remoting.transport.http.WebServerError;
+
+
+/**
+ * Unit test for JBREM-1052.
+ *
+ * @author <a href="ron.sigal(a)jboss.com">Ron Sigal</a>
+ * @version $Revision: 1.1 $
+ * <p>
+ * Copyright Oct 27, 2008
+ * </p>
+ */
+public class NullInputStreamTestCase extends TestCase
+{
+ private static Logger log = Logger.getLogger(NullInputStreamTestCase.class);
+
+ private static boolean firstTime = true;
+
+ protected String host;
+ protected int port;
+ protected String locatorURI;
+ protected InvokerLocator serverLocator;
+ protected Connector connector;
+ protected Client client;
+ protected TestInvocationHandler invocationHandler;
+
+
+ public void setUp() throws Exception
+ {
+ if (firstTime)
+ {
+ firstTime = false;
+ Logger.getLogger("org.jboss.remoting").setLevel(XLevel.INFO);
+ Logger.getLogger("org.jboss.test.remoting").setLevel(Level.INFO);
+ String pattern = "[%d{ABSOLUTE}] [%t] %5p (%F:%L) - %m%n";
+ PatternLayout layout = new PatternLayout(pattern);
+ ConsoleAppender consoleAppender = new ConsoleAppender(layout);
+ Logger.getRootLogger().addAppender(consoleAppender);
+ }
+
+ TestUnMarshaller.clear();
+ }
+
+
+ public void tearDown()
+ {
+ if (client != null)
+ {
+ client.disconnect();
+ }
+ if (connector != null)
+ {
+ connector.destroy();
+ }
+ }
+
+
+ /**
+ * Tests default behavior with POST method.
+ */
+ public void testDefaultBehaviorPost() throws Throwable
+ {
+ log.info("entering " + getName());
+
+ // Start server.
+ setupServer();
+ boolean ok = false;
+
+
+ HashMap config = new HashMap();
+ config.put(InvokerLocator.FORCE_REMOTE, "true");
+ HashMap metadata = new HashMap();
+ metadata.put(Client.RAW, "true");
+ metadata.put("TYPE", "POST");
+
+ try
+ {
+ log.info("response: " + makeInvocation(config, metadata));
+ fail("expected WebServerError");
+ }
+ catch (WebServerError e)
+ {
+ log.info("received expected WebServerError");
+ ok = true;
+ }
+
+ assertTrue(ok);
+ assertTrue(TestUnMarshaller.enteredRead);
+ assertTrue(TestUnMarshaller.streamIsNull);
+
+ log.info(getName() + " PASSES");
+ }
+
+
+ /**
+ * Tests default behavior with HEAD method.
+ */
+ public void testDefaultBehaviorHead() throws Throwable
+ {
+ log.info("entering " + getName());
+
+ // Start server.
+ setupServer();
+ boolean ok = false;
+
+
+ HashMap config = new HashMap();
+ config.put(InvokerLocator.FORCE_REMOTE, "true");
+ HashMap metadata = new HashMap();
+ metadata.put(Client.RAW, "true");
+ metadata.put("TYPE", "HEAD");
+
+ try
+ {
+ log.info("response: " + makeInvocation(config, metadata));
+ fail("expected WebServerError");
+ }
+ catch (WebServerError e)
+ {
+ log.info("received expected WebServerError");
+ ok = true;
+ }
+
+ assertTrue(ok);
+ assertTrue(TestUnMarshaller.enteredRead);
+ assertTrue(TestUnMarshaller.streamIsNull);
+
+ log.info(getName() + " PASSES");
+ }
+
+
+ /**
+ * Tests behavior with unmarshallNullStream == true and with POST method.
+ */
+ public void testUnmarshalNullStreamTruePost() throws Throwable
+ {
+ log.info("entering " + getName());
+
+ // Start server.
+ setupServer();
+ boolean ok = false;
+
+
+ HashMap config = new HashMap();
+ config.put(InvokerLocator.FORCE_REMOTE, "true");
+ config.put(HTTPClientInvoker.UNMARSHAL_NULL_STREAM, "true");
+ HashMap metadata = new HashMap();
+ metadata.put(Client.RAW, "true");
+ metadata.put("TYPE", "POST");
+
+ try
+ {
+ log.info("response: " + makeInvocation(config, metadata));
+ fail("expected WebServerError");
+ }
+ catch (WebServerError e)
+ {
+ log.info("received expected WebServerError");
+ ok = true;
+ }
+
+ assertTrue(ok);
+ assertTrue(TestUnMarshaller.enteredRead);
+ assertTrue(TestUnMarshaller.streamIsNull);
+
+ log.info(getName() + " PASSES");
+ }
+
+
+ /**
+ * Tests behavior with unmarshallNullStream == true and with HEAD method.
+ */
+ public void testUnmarshalNullStreamTrueHead() throws Throwable
+ {
+ log.info("entering " + getName());
+
+ // Start server.
+ setupServer();
+ boolean ok = false;
+
+
+ HashMap config = new HashMap();
+ config.put(InvokerLocator.FORCE_REMOTE, "true");
+ config.put(HTTPClientInvoker.UNMARSHAL_NULL_STREAM, "true");
+ HashMap metadata = new HashMap();
+ metadata.put(Client.RAW, "true");
+ metadata.put("TYPE", "HEAD");
+
+ try
+ {
+ log.info("response: " + makeInvocation(config, metadata));
+ fail("expected WebServerError");
+ }
+ catch (WebServerError e)
+ {
+ log.info("received expected WebServerError");
+ ok = true;
+ }
+
+ assertTrue(ok);
+ assertTrue(TestUnMarshaller.enteredRead);
+ assertTrue(TestUnMarshaller.streamIsNull);
+
+ log.info(getName() + " PASSES");
+ }
+
+
+ /**
+ * Tests behavior with unmarshallNullStream == false and with POST method.
+ */
+ public void testUnmarshalNullStreamFalsePost() throws Throwable
+ {
+ log.info("entering " + getName());
+
+ // Start server.
+ setupServer();
+ boolean ok = false;
+
+
+ HashMap config = new HashMap();
+ config.put(InvokerLocator.FORCE_REMOTE, "true");
+ config.put(HTTPClientInvoker.UNMARSHAL_NULL_STREAM, "false");
+ HashMap metadata = new HashMap();
+ metadata.put(Client.RAW, "true");
+ metadata.put("TYPE", "POST");
+
+ try
+ {
+ log.info("response: " + makeInvocation(config, metadata));
+ fail("expected WebServerError");
+ }
+ catch (WebServerError e)
+ {
+ log.info("received expected WebServerError");
+ ok = true;
+ }
+
+ assertTrue(ok);
+ assertFalse(TestUnMarshaller.enteredRead);
+
+ log.info(getName() + " PASSES");
+ }
+
+
+
+ /**
+ * Tests behavior with unmarshallNullStream == false and with HEAD method.
+ */
+ public void testUnmarshalNullStreamFalseHead() throws Throwable
+ {
+ log.info("entering " + getName());
+
+ // Start server.
+ setupServer();
+ boolean ok = false;
+
+
+ HashMap config = new HashMap();
+ config.put(InvokerLocator.FORCE_REMOTE, "true");
+ config.put(HTTPClientInvoker.UNMARSHAL_NULL_STREAM, "false");
+ HashMap metadata = new HashMap();
+ metadata.put(Client.RAW, "true");
+ metadata.put("TYPE", "HEAD");
+
+ try
+ {
+ log.info("response: " + makeInvocation(config, metadata));
+ fail("expected WebServerError");
+ }
+ catch (WebServerError e)
+ {
+ log.info("received expected WebServerError");
+ ok = true;
+ }
+
+ assertTrue(ok);
+ assertFalse(TestUnMarshaller.enteredRead);
+
+ log.info(getName() + " PASSES");
+ }
+
+
+ protected Object makeInvocation(HashMap config, HashMap metadata) throws Throwable
+ {
+ // Create client.
+ locatorURI = "http://" + host + ":" + port;
+ locatorURI += "/?unmarshaller=" + TestUnMarshaller.class.getName();
+ log.info("connecting to " + locatorURI);
+ InvokerLocator clientLocator = new InvokerLocator(locatorURI);
+ Client client = new Client(clientLocator, config);
+ client.connect();
+ log.info("client is connected");
+
+ Object response = null;
+ for (int i = 0; i < 3; i++)
+ {
+ try
+ {
+ response = client.invoke("abc", metadata);
+ break;
+ }
+ catch (CannotConnectException e)
+ {
+ log.info("cannot connect", e);
+
+ }
+ }
+
+ return response;
+ }
+
+
+ protected void setupServer() throws Exception
+ {
+ log.info("setupServer()");
+ InetAddress localHost = InetAddress.getLocalHost();
+ final ServerSocket ss = new ServerSocket(0, 100, localHost);
+ ss.setSoTimeout(5000);
+ host = localHost.getHostAddress();
+ port = ss.getLocalPort();
+ new AcceptThread(ss).start();
+ log.info("started server");
+ }
+
+
+ protected void shutdownServer() throws Exception
+ {
+ if (connector != null)
+ connector.stop();
+ }
+
+
+ static class TestInvocationHandler implements ServerInvocationHandler
+ {
+ public void addListener(InvokerCallbackHandler callbackHandler) {}
+ public Object invoke(final InvocationRequest invocation) throws Throwable
+ {
+ return invocation.getParameter();
+ }
+ public void removeListener(InvokerCallbackHandler callbackHandler) {}
+ public void setMBeanServer(MBeanServer server) {}
+ public void setInvoker(ServerInvoker invoker) {}
+ }
+
+ public static class TestUnMarshaller extends HTTPUnMarshaller
+ {
+ /** The serialVersionUID */
+ private static final long serialVersionUID = 1L;
+
+ public static boolean enteredRead;
+ public static boolean streamIsNull;
+
+ public Object read(InputStream inputStream, Map metadata, int version) throws
IOException, ClassNotFoundException
+ {
+ enteredRead = true;
+ streamIsNull = (inputStream == null);
+ log.info("entered TestUnMarshaller.read()");
+ if (inputStream != null)
+ {
+ return super.read(inputStream, metadata, version);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public UnMarshaller cloneUnMarshaller() throws CloneNotSupportedException
+ {
+ HTTPUnMarshaller unmarshaller = new TestUnMarshaller();
+ unmarshaller.setClassLoader(customClassLoader);
+ return unmarshaller;
+ }
+
+ public static void clear()
+ {
+ enteredRead = false;
+ streamIsNull = false;
+ }
+ }
+
+
+ public static class AcceptThread extends Thread
+ {
+ ServerSocket ss;
+
+ public AcceptThread(ServerSocket ss)
+ {
+ this.ss = ss;
+ setDaemon(true);
+ }
+
+ public void run()
+ {
+ log.info("starting AcceptThread");
+ while (true)
+ {
+ try
+ {
+ new WorkerThread(ss.accept()).start();
+ }
+ catch (Exception e)
+ {
+ log.error("AcceptThread erroe", e);
+ }
+ }
+ }
+ }
+
+
+ public static class WorkerThread extends Thread
+ {
+ Socket s;
+
+ public WorkerThread(Socket s)
+ {
+ this.s = s;
+ setDaemon(true);
+ }
+
+ public void run()
+ {
+ try
+ {
+ log.info("starting WorkerThread");
+ InputStreamReader ir = new InputStreamReader(s.getInputStream());
+ char[] cbuf = new char[1024];
+ int len = ir.read(cbuf);
+ log.info("available: " + s.getInputStream().available());
+ log.info("len: " + len);
+ log.info("Request:");
+ System.out.println();
+ System.out.println(String.copyValueOf(cbuf, 0, len));
+ System.out.println();
+
+ DataOutputStream dos = new DataOutputStream(s.getOutputStream());
+ dos.writeBytes("HTTP/1.1 500 error" + "\r\n");
+ dos.writeBytes("Server: testServer");
+ dos.writeBytes("Content-Type: text/html" + "\r\n");
+ dos.writeBytes("Content-Length: 0\r\n");
+ dos.writeBytes("Connection: close\r\n");
+ dos.writeBytes("\r\n");
+
+ ir.close();
+ dos.close();
+ s.close();
+ }
+ catch (Exception e)
+ {
+ log.error("WorkerThread error", e);
+ }
+ }
+ }
}
\ No newline at end of file
Property changes on:
remoting2/branches/2.2/src/tests/org/jboss/test/remoting/transport/http/NullInputStreamTestCase.java
___________________________________________________________________
Name: svn:eol-style
+ native