From jboss-remoting-commits at lists.jboss.org Wed Aug 4 21:28:36 2010 Content-Type: multipart/mixed; boundary="===============8588355531455843722==" MIME-Version: 1.0 From: jboss-remoting-commits at lists.jboss.org To: jboss-remoting-commits at lists.jboss.org Subject: [jboss-remoting-commits] JBoss Remoting SVN: r6009 - remoting2/branches/2.2/src/tests/org/jboss/test/remoting/transport/http. Date: Wed, 04 Aug 2010 21:28:36 -0400 Message-ID: <201008050128.o751SaKJ009187@svn01.web.mwc.hst.phx2.redhat.com> --===============8588355531455843722== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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/transpor= t/http/EmptyURITestCase.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- 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 Ron Sigal - * @version $Revision: 1.1 $ - *

- * Copyright Dec 13, 2009 - */ -public class EmptyURITestCase extends TestCase -{ - private static Logger log =3D Logger.getLogger(EmptyURITestCase.class); - = - private static boolean firstTime =3D 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 =3D false; - Logger.getLogger("org.jboss.remoting").setLevel(XLevel.INFO); - Logger.getLogger("org.jboss.test.remoting").setLevel(Level.INFO); - String pattern =3D "[%d{ABSOLUTE}] [%t] %5p (%F:%L) - %m%n"; - PatternLayout layout =3D new PatternLayout(pattern); - ConsoleAppender consoleAppender =3D new ConsoleAppender(layout); - Logger.getRootLogger().addAppender(consoleAppender); - = - InvokerRegistry.registerInvokerFactories("http", TransportClientF= actory.class, TestCoyoteInvokerFactory.class); - } - } - - = - public void tearDown() - { - } - = - = - public void testEmptyURI() throws Throwable - { - log.info("entering " + getName()); - = - // Start server. - setupServer(); - = - // Create client. - InvokerLocator clientLocator =3D new InvokerLocator(locatorURI); - HashMap clientConfig =3D new HashMap(); - clientConfig.put(InvokerLocator.FORCE_REMOTE, "true"); - addExtraClientConfig(clientConfig); - Client client =3D new Client(clientLocator, clientConfig); - client.connect(); - log.info("client is connected"); - = - // Test connections. - try - { - Object response =3D client.invoke("abc"); - fail("expected CannotConnectException, got: " + response); - } - catch (CannotConnectException e) - { - String message =3D e.getMessage(); - assertTrue("expected CannotConnectException message to contain \"= Invalid URI\"", message !=3D 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 =3D InetAddress.getLocalHost().getHostAddress(); - port =3D PortUtil.findFreePort(host); - locatorURI =3D getTransport() + "://" + host + ":" + port; - String metadata =3D System.getProperty("remoting.metadata"); - if (metadata !=3D null) - { - locatorURI +=3D "/?" + metadata; - } - serverLocator =3D new InvokerLocator(locatorURI); - log.info("Starting remoting server with locator uri of: " + locatorU= RI); - HashMap config =3D new HashMap(); - config.put(InvokerLocator.FORCE_REMOTE, "true"); - addExtraServerConfig(config); - connector =3D new Connector(serverLocator, config); - connector.create(); - invocationHandler =3D new TestInvocationHandler(); - connector.addInvocationHandler("test", invocationHandler); - connector.start(); - } - = - = - protected void shutdownServer() throws Exception - { - if (connector !=3D null) - connector.stop(); - } - = - = - static class TestInvocationHandler implements ServerInvocationHandler - { - public void addListener(InvokerCallbackHandler callbackHandler) {} - public Object invoke(final InvocationRequest invocation) throws Thro= wable - { - 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 =3D 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 Ron Sigal + * @version $Revision: 1.1 $ + *

+ * Copyright Dec 13, 2009 + */ +public class EmptyURITestCase extends TestCase +{ + private static Logger log =3D Logger.getLogger(EmptyURITestCase.class); + = + private static boolean firstTime =3D 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 =3D false; + Logger.getLogger("org.jboss.remoting").setLevel(XLevel.INFO); + Logger.getLogger("org.jboss.test.remoting").setLevel(Level.INFO); + String pattern =3D "[%d{ABSOLUTE}] [%t] %5p (%F:%L) - %m%n"; + PatternLayout layout =3D new PatternLayout(pattern); + ConsoleAppender consoleAppender =3D new ConsoleAppender(layout); + Logger.getRootLogger().addAppender(consoleAppender); + = + InvokerRegistry.registerInvokerFactories("http", TransportClientF= actory.class, TestCoyoteInvokerFactory.class); + } + } + + = + public void tearDown() + { + } + = + = + public void testEmptyURI() throws Throwable + { + log.info("entering " + getName()); + = + // Start server. + setupServer(); + = + // Create client. + InvokerLocator clientLocator =3D new InvokerLocator(locatorURI); + HashMap clientConfig =3D new HashMap(); + clientConfig.put(InvokerLocator.FORCE_REMOTE, "true"); + addExtraClientConfig(clientConfig); + Client client =3D new Client(clientLocator, clientConfig); + client.connect(); + log.info("client is connected"); + = + // Test connections. + try + { + Object response =3D client.invoke("abc"); + fail("expected CannotConnectException, got: " + response); + } + catch (CannotConnectException e) + { + String message =3D e.getMessage(); + assertTrue("expected CannotConnectException message to contain \"= Invalid URI\"", message !=3D 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 =3D InetAddress.getLocalHost().getHostAddress(); + port =3D PortUtil.findFreePort(host); + locatorURI =3D getTransport() + "://" + host + ":" + port; + String metadata =3D System.getProperty("remoting.metadata"); + if (metadata !=3D null) + { + locatorURI +=3D "/?" + metadata; + } + serverLocator =3D new InvokerLocator(locatorURI); + log.info("Starting remoting server with locator uri of: " + locatorU= RI); + HashMap config =3D new HashMap(); + config.put(InvokerLocator.FORCE_REMOTE, "true"); + addExtraServerConfig(config); + connector =3D new Connector(serverLocator, config); + connector.create(); + invocationHandler =3D new TestInvocationHandler(); + connector.addInvocationHandler("test", invocationHandler); + connector.start(); + } + = + = + protected void shutdownServer() throws Exception + { + if (connector !=3D null) + connector.stop(); + } + = + = + static class TestInvocationHandler implements ServerInvocationHandler + { + public void addListener(InvokerCallbackHandler callbackHandler) {} + public Object invoke(final InvocationRequest invocation) throws Thro= wable + { + 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 =3D 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/remoti= ng/transport/http/EmptyURITestCase.java ___________________________________________________________________ Name: svn:eol-style + native Modified: remoting2/branches/2.2/src/tests/org/jboss/test/remoting/transpor= t/http/NullInputStreamTestCase.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- 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 Ron Sigal - * @version $Revision: 1.1 $ - *

- * Copyright Oct 27, 2008 - *

- */ -public class NullInputStreamTestCase extends TestCase -{ - private static Logger log =3D Logger.getLogger(NullInputStreamTestCase.= class); - = - private static boolean firstTime =3D 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 =3D false; - Logger.getLogger("org.jboss.remoting").setLevel(XLevel.INFO); - Logger.getLogger("org.jboss.test.remoting").setLevel(Level.INFO); - String pattern =3D "[%d{ABSOLUTE}] [%t] %5p (%F:%L) - %m%n"; - PatternLayout layout =3D new PatternLayout(pattern); - ConsoleAppender consoleAppender =3D new ConsoleAppender(layout); - Logger.getRootLogger().addAppender(consoleAppender); = - } - = - TestUnMarshaller.clear(); - } - - = - public void tearDown() - { - if (client !=3D null) - { - client.disconnect(); - } - if (connector !=3D null) - { - connector.destroy(); - } - } - = - = - /** - * Tests default behavior with POST method. - */ - public void testDefaultBehaviorPost() throws Throwable - { - log.info("entering " + getName()); - = - // Start server. - setupServer(); - boolean ok =3D false; = - - - HashMap config =3D new HashMap(); - config.put(InvokerLocator.FORCE_REMOTE, "true"); - HashMap metadata =3D 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 =3D 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 =3D false; = - - - HashMap config =3D new HashMap(); - config.put(InvokerLocator.FORCE_REMOTE, "true"); - HashMap metadata =3D 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 =3D true; - } - = - assertTrue(ok); - assertTrue(TestUnMarshaller.enteredRead); - assertTrue(TestUnMarshaller.streamIsNull); - - log.info(getName() + " PASSES"); - } - = - = - /** - * Tests behavior with unmarshallNullStream =3D=3D true and with POST m= ethod. - */ - public void testUnmarshalNullStreamTruePost() throws Throwable - { - log.info("entering " + getName()); - = - // Start server. - setupServer(); - boolean ok =3D false; = - - - HashMap config =3D new HashMap(); - config.put(InvokerLocator.FORCE_REMOTE, "true"); - config.put(HTTPClientInvoker.UNMARSHAL_NULL_STREAM, "true"); - HashMap metadata =3D 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 =3D true; - } - = - assertTrue(ok); - assertTrue(TestUnMarshaller.enteredRead); - assertTrue(TestUnMarshaller.streamIsNull); - - log.info(getName() + " PASSES"); - } - = - = - /** - * Tests behavior with unmarshallNullStream =3D=3D true and with HEAD m= ethod. - */ - public void testUnmarshalNullStreamTrueHead() throws Throwable - { - log.info("entering " + getName()); - = - // Start server. - setupServer(); - boolean ok =3D false; = - - - HashMap config =3D new HashMap(); - config.put(InvokerLocator.FORCE_REMOTE, "true"); - config.put(HTTPClientInvoker.UNMARSHAL_NULL_STREAM, "true"); - HashMap metadata =3D 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 =3D true; - } - = - assertTrue(ok); - assertTrue(TestUnMarshaller.enteredRead); - assertTrue(TestUnMarshaller.streamIsNull); - - log.info(getName() + " PASSES"); - } - = - = - /** - * Tests behavior with unmarshallNullStream =3D=3D false and with POST = method. - */ - public void testUnmarshalNullStreamFalsePost() throws Throwable - { - log.info("entering " + getName()); - = - // Start server. - setupServer(); - boolean ok =3D false; = - - - HashMap config =3D new HashMap(); - config.put(InvokerLocator.FORCE_REMOTE, "true"); - config.put(HTTPClientInvoker.UNMARSHAL_NULL_STREAM, "false"); - HashMap metadata =3D 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 =3D true; - } - = - assertTrue(ok); - assertFalse(TestUnMarshaller.enteredRead); - - log.info(getName() + " PASSES"); - } - = - = - = - /** - * Tests behavior with unmarshallNullStream =3D=3D false and with HEAD = method. - */ - public void testUnmarshalNullStreamFalseHead() throws Throwable - { - log.info("entering " + getName()); - = - // Start server. - setupServer(); - boolean ok =3D false; = - - - HashMap config =3D new HashMap(); - config.put(InvokerLocator.FORCE_REMOTE, "true"); - config.put(HTTPClientInvoker.UNMARSHAL_NULL_STREAM, "false"); - HashMap metadata =3D 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 =3D true; - } - = - assertTrue(ok); - assertFalse(TestUnMarshaller.enteredRead); - - log.info(getName() + " PASSES"); - } - = - = - protected Object makeInvocation(HashMap config, HashMap metadata) throw= s Throwable - { - // Create client. - locatorURI =3D "http://" + host + ":" + port; - locatorURI +=3D "/?unmarshaller=3D" + TestUnMarshaller.class.getName= (); - log.info("connecting to " + locatorURI); - InvokerLocator clientLocator =3D new InvokerLocator(locatorURI); - Client client =3D new Client(clientLocator, config); - client.connect(); - log.info("client is connected"); - - Object response =3D null; - for (int i =3D 0; i < 3; i++) - { - try - { - response =3D 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 =3D InetAddress.getLocalHost(); - final ServerSocket ss =3D new ServerSocket(0, 100, localHost); - ss.setSoTimeout(5000); - host =3D localHost.getHostAddress(); - port =3D ss.getLocalPort(); - new AcceptThread(ss).start(); - log.info("started server"); - } - = - = - protected void shutdownServer() throws Exception - { - if (connector !=3D null) - connector.stop(); - } - = - = - static class TestInvocationHandler implements ServerInvocationHandler - { - public void addListener(InvokerCallbackHandler callbackHandler) {} - public Object invoke(final InvocationRequest invocation) throws Thro= wable - { - 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 =3D 1L; - - public static boolean enteredRead; - public static boolean streamIsNull; - = - public Object read(InputStream inputStream, Map metadata, int versio= n) throws IOException, ClassNotFoundException - { - enteredRead =3D true; - streamIsNull =3D (inputStream =3D=3D null); - log.info("entered TestUnMarshaller.read()"); - if (inputStream !=3D null) - { - return super.read(inputStream, metadata, version); - } - else - { - return null; - } - } - = - public UnMarshaller cloneUnMarshaller() throws CloneNotSupportedExce= ption - { - HTTPUnMarshaller unmarshaller =3D new TestUnMarshaller(); - unmarshaller.setClassLoader(customClassLoader); - return unmarshaller; - } - = - public static void clear() - { - enteredRead =3D false; - streamIsNull =3D false; - } - } - - = - public static class AcceptThread extends Thread - { - ServerSocket ss; - = - public AcceptThread(ServerSocket ss) - { - this.ss =3D 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 =3D s; - setDaemon(true); - } - - public void run() - { - try - { - log.info("starting WorkerThread"); - InputStreamReader ir =3D new InputStreamReader(s.getInputStrea= m()); - char[] cbuf =3D new char[1024]; - int len =3D 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 =3D new DataOutputStream(s.getOutputStrea= m()); - 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 Ron Sigal + * @version $Revision: 1.1 $ + *

+ * Copyright Oct 27, 2008 + *

+ */ +public class NullInputStreamTestCase extends TestCase +{ + private static Logger log =3D Logger.getLogger(NullInputStreamTestCase.= class); + = + private static boolean firstTime =3D 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 =3D false; + Logger.getLogger("org.jboss.remoting").setLevel(XLevel.INFO); + Logger.getLogger("org.jboss.test.remoting").setLevel(Level.INFO); + String pattern =3D "[%d{ABSOLUTE}] [%t] %5p (%F:%L) - %m%n"; + PatternLayout layout =3D new PatternLayout(pattern); + ConsoleAppender consoleAppender =3D new ConsoleAppender(layout); + Logger.getRootLogger().addAppender(consoleAppender); = + } + = + TestUnMarshaller.clear(); + } + + = + public void tearDown() + { + if (client !=3D null) + { + client.disconnect(); + } + if (connector !=3D null) + { + connector.destroy(); + } + } + = + = + /** + * Tests default behavior with POST method. + */ + public void testDefaultBehaviorPost() throws Throwable + { + log.info("entering " + getName()); + = + // Start server. + setupServer(); + boolean ok =3D false; = + + + HashMap config =3D new HashMap(); + config.put(InvokerLocator.FORCE_REMOTE, "true"); + HashMap metadata =3D 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 =3D 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 =3D false; = + + + HashMap config =3D new HashMap(); + config.put(InvokerLocator.FORCE_REMOTE, "true"); + HashMap metadata =3D 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 =3D true; + } + = + assertTrue(ok); + assertTrue(TestUnMarshaller.enteredRead); + assertTrue(TestUnMarshaller.streamIsNull); + + log.info(getName() + " PASSES"); + } + = + = + /** + * Tests behavior with unmarshallNullStream =3D=3D true and with POST m= ethod. + */ + public void testUnmarshalNullStreamTruePost() throws Throwable + { + log.info("entering " + getName()); + = + // Start server. + setupServer(); + boolean ok =3D false; = + + + HashMap config =3D new HashMap(); + config.put(InvokerLocator.FORCE_REMOTE, "true"); + config.put(HTTPClientInvoker.UNMARSHAL_NULL_STREAM, "true"); + HashMap metadata =3D 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 =3D true; + } + = + assertTrue(ok); + assertTrue(TestUnMarshaller.enteredRead); + assertTrue(TestUnMarshaller.streamIsNull); + + log.info(getName() + " PASSES"); + } + = + = + /** + * Tests behavior with unmarshallNullStream =3D=3D true and with HEAD m= ethod. + */ + public void testUnmarshalNullStreamTrueHead() throws Throwable + { + log.info("entering " + getName()); + = + // Start server. + setupServer(); + boolean ok =3D false; = + + + HashMap config =3D new HashMap(); + config.put(InvokerLocator.FORCE_REMOTE, "true"); + config.put(HTTPClientInvoker.UNMARSHAL_NULL_STREAM, "true"); + HashMap metadata =3D 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 =3D true; + } + = + assertTrue(ok); + assertTrue(TestUnMarshaller.enteredRead); + assertTrue(TestUnMarshaller.streamIsNull); + + log.info(getName() + " PASSES"); + } + = + = + /** + * Tests behavior with unmarshallNullStream =3D=3D false and with POST = method. + */ + public void testUnmarshalNullStreamFalsePost() throws Throwable + { + log.info("entering " + getName()); + = + // Start server. + setupServer(); + boolean ok =3D false; = + + + HashMap config =3D new HashMap(); + config.put(InvokerLocator.FORCE_REMOTE, "true"); + config.put(HTTPClientInvoker.UNMARSHAL_NULL_STREAM, "false"); + HashMap metadata =3D 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 =3D true; + } + = + assertTrue(ok); + assertFalse(TestUnMarshaller.enteredRead); + + log.info(getName() + " PASSES"); + } + = + = + = + /** + * Tests behavior with unmarshallNullStream =3D=3D false and with HEAD = method. + */ + public void testUnmarshalNullStreamFalseHead() throws Throwable + { + log.info("entering " + getName()); + = + // Start server. + setupServer(); + boolean ok =3D false; = + + + HashMap config =3D new HashMap(); + config.put(InvokerLocator.FORCE_REMOTE, "true"); + config.put(HTTPClientInvoker.UNMARSHAL_NULL_STREAM, "false"); + HashMap metadata =3D 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 =3D true; + } + = + assertTrue(ok); + assertFalse(TestUnMarshaller.enteredRead); + + log.info(getName() + " PASSES"); + } + = + = + protected Object makeInvocation(HashMap config, HashMap metadata) throw= s Throwable + { + // Create client. + locatorURI =3D "http://" + host + ":" + port; + locatorURI +=3D "/?unmarshaller=3D" + TestUnMarshaller.class.getName= (); + log.info("connecting to " + locatorURI); + InvokerLocator clientLocator =3D new InvokerLocator(locatorURI); + Client client =3D new Client(clientLocator, config); + client.connect(); + log.info("client is connected"); + + Object response =3D null; + for (int i =3D 0; i < 3; i++) + { + try + { + response =3D 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 =3D InetAddress.getLocalHost(); + final ServerSocket ss =3D new ServerSocket(0, 100, localHost); + ss.setSoTimeout(5000); + host =3D localHost.getHostAddress(); + port =3D ss.getLocalPort(); + new AcceptThread(ss).start(); + log.info("started server"); + } + = + = + protected void shutdownServer() throws Exception + { + if (connector !=3D null) + connector.stop(); + } + = + = + static class TestInvocationHandler implements ServerInvocationHandler + { + public void addListener(InvokerCallbackHandler callbackHandler) {} + public Object invoke(final InvocationRequest invocation) throws Thro= wable + { + 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 =3D 1L; + + public static boolean enteredRead; + public static boolean streamIsNull; + = + public Object read(InputStream inputStream, Map metadata, int versio= n) throws IOException, ClassNotFoundException + { + enteredRead =3D true; + streamIsNull =3D (inputStream =3D=3D null); + log.info("entered TestUnMarshaller.read()"); + if (inputStream !=3D null) + { + return super.read(inputStream, metadata, version); + } + else + { + return null; + } + } + = + public UnMarshaller cloneUnMarshaller() throws CloneNotSupportedExce= ption + { + HTTPUnMarshaller unmarshaller =3D new TestUnMarshaller(); + unmarshaller.setClassLoader(customClassLoader); + return unmarshaller; + } + = + public static void clear() + { + enteredRead =3D false; + streamIsNull =3D false; + } + } + + = + public static class AcceptThread extends Thread + { + ServerSocket ss; + = + public AcceptThread(ServerSocket ss) + { + this.ss =3D 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 =3D s; + setDaemon(true); + } + + public void run() + { + try + { + log.info("starting WorkerThread"); + InputStreamReader ir =3D new InputStreamReader(s.getInputStrea= m()); + char[] cbuf =3D new char[1024]; + int len =3D 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 =3D new DataOutputStream(s.getOutputStrea= m()); + 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/remoti= ng/transport/http/NullInputStreamTestCase.java ___________________________________________________________________ Name: svn:eol-style + native --===============8588355531455843722==--