Author: ggregory Date: Mon Nov 21 16:40:25 2011 New Revision: 1204584 URL: http://svn.apache.org/viewvc?rev=1204584&view=rev Log: [VFS-391] Build tests URL HTTP file system with an embedded HTTP server (Apache HttpComponent Core). Move NHttpServer to the test util package.
Added: commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/util/NHttpServer.java (contents, props changed) - copied, changed from r1203678, commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/http/test/NHttpServer.java Removed: commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/http/test/NHttpServer.java Modified: commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/http/test/HttpProviderTestCase.java commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/url/test/UrlProviderHttpTestCase.java Modified: commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/http/test/HttpProviderTestCase.java URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/http/test/HttpProviderTestCase.java?rev=1204584&r1=1204583&r2=1204584&view=diff ============================================================================== --- commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/http/test/HttpProviderTestCase.java (original) +++ commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/http/test/HttpProviderTestCase.java Mon Nov 21 16:40:25 2011 @@ -27,6 +27,7 @@ import org.apache.commons.vfs2.provider. import org.apache.commons.vfs2.test.AbstractProviderTestConfig; import org.apache.commons.vfs2.test.ProviderTestSuite; import org.apache.commons.vfs2.util.FreeSocketPortUtil; +import org.apache.commons.vfs2.util.NHttpServer; /** * Test cases for the HTTP provider. Modified: commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/url/test/UrlProviderHttpTestCase.java URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/url/test/UrlProviderHttpTestCase.java?rev=1204584&r1=1204583&r2=1204584&view=diff ============================================================================== --- commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/url/test/UrlProviderHttpTestCase.java (original) +++ commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/url/test/UrlProviderHttpTestCase.java Mon Nov 21 16:40:25 2011 @@ -16,6 +16,8 @@ */ package org.apache.commons.vfs2.provider.url.test; +import java.io.IOException; + import junit.framework.Test; import org.apache.commons.vfs2.FileObject; @@ -24,47 +26,109 @@ import org.apache.commons.vfs2.impl.Defa import org.apache.commons.vfs2.provider.url.UrlFileProvider; import org.apache.commons.vfs2.test.AbstractProviderTestConfig; import org.apache.commons.vfs2.test.ProviderTestSuite; +import org.apache.commons.vfs2.util.FreeSocketPortUtil; +import org.apache.commons.vfs2.util.NHttpServer; /** * Test cases for HTTP with the default provider. - * + * * @author <a href="mailto:adammurd...@apache.org">Adam Murdoch</a> */ -public class UrlProviderHttpTestCase - extends AbstractProviderTestConfig +public class UrlProviderHttpTestCase extends AbstractProviderTestConfig { + private static NHttpServer Server; + + private static int SocketPort; + private static final String TEST_URI = "test.http.uri"; - public static Test suite() throws Exception + /** + * Use %40 for @ in URLs + */ + private static String ConnectionUri; + + private static String getSystemTestUriOverride() + { + return System.getProperty(TEST_URI); + } + + /** + * Creates and starts an embedded Apache HTTP Server (). + * + * @throws Exception + */ + private static void setUpClass() throws Exception { - if (System.getProperty(TEST_URI) != null) + Server = new NHttpServer(); + if (!Server.run(SocketPort, getTestDirectory(), 5000)) { - return new ProviderTestSuite(new UrlProviderTestCase()); + throw new IllegalStateException("The embedded HTTP server has not completed startup, increase wait time"); } - else + } + + public static Test suite() throws Exception + { + return new ProviderTestSuite(new UrlProviderHttpTestCase()) { - return notConfigured(UrlProviderHttpTestCase.class); - } + @Override + protected void setUp() throws Exception + { + if (getSystemTestUriOverride() == null) + { + setUpClass(); + } + super.setUp(); + } + + @Override + protected void tearDown() throws Exception + { + tearDownClass(); + super.tearDown(); + } + }; } /** - * Prepares the file system manager. + * Stops the embedded Apache HTTP Server (). + * + * @throws IOException */ - @Override - public void prepare(final DefaultFileSystemManager manager) - throws Exception + private static void tearDownClass() throws IOException { - manager.addProvider("http", new UrlFileProvider()); + if (Server != null) + { + Server.stop(); + } + } + + public UrlProviderHttpTestCase() throws IOException + { + SocketPort = FreeSocketPortUtil.findFreeLocalPort(); + // Use %40 for @ in the a URL a @ + ConnectionUri = "http://localhost:" + SocketPort; } /** * Returns the base folder for tests. */ @Override - public FileObject getBaseTestFolder(final FileSystemManager manager) - throws Exception + public FileObject getBaseTestFolder(final FileSystemManager manager) throws Exception { - final String uri = System.getProperty(TEST_URI); + String uri = getSystemTestUriOverride(); + if (uri == null) + { + uri = ConnectionUri; + } return manager.resolveFile(uri); } + + /** + * Prepares the file system manager. + */ + @Override + public void prepare(final DefaultFileSystemManager manager) throws Exception + { + manager.addProvider("http", new UrlFileProvider()); + } } Copied: commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/util/NHttpServer.java (from r1203678, commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/http/test/NHttpServer.java) URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/util/NHttpServer.java?p2=commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/util/NHttpServer.java&p1=commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/http/test/NHttpServer.java&r1=1203678&r2=1204584&rev=1204584&view=diff ============================================================================== --- commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/provider/http/test/NHttpServer.java (original) +++ commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/util/NHttpServer.java Mon Nov 21 16:40:25 2011 @@ -24,7 +24,7 @@ * <http://www.apache.org/>. * */ -package org.apache.commons.vfs2.provider.http.test; +package org.apache.commons.vfs2.util; import java.io.File; import java.io.IOException; @@ -87,7 +87,7 @@ import org.apache.http.util.EntityUtils; * efficient way of building an HTTP server. * </p> * - * @version $Id: $ + * @version $Id$ * @since 2.1 */ public class NHttpServer @@ -296,6 +296,8 @@ public class NHttpServer } catch (IOException e) { // ignore + // System.out.println("While waiting: " + e); + // e.printStackTrace(); } Thread.sleep(100); } Propchange: commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/util/NHttpServer.java ------------------------------------------------------------------------------ svn:keywords = Id