You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2008/07/27 18:23:12 UTC

svn commit: r680139 - in /maven/core-integration-testing/trunk/core-integration-tests: pom.xml src/test/java/org/apache/maven/integrationtests/MavenITmng3652UserAgentHeader.java

Author: brett
Date: Sun Jul 27 09:23:09 2008
New Revision: 680139

URL: http://svn.apache.org/viewvc?rev=680139&view=rev
Log:
use Jetty instead to simplify code

Modified:
    maven/core-integration-testing/trunk/core-integration-tests/pom.xml
    maven/core-integration-testing/trunk/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng3652UserAgentHeader.java

Modified: maven/core-integration-testing/trunk/core-integration-tests/pom.xml
URL: http://svn.apache.org/viewvc/maven/core-integration-testing/trunk/core-integration-tests/pom.xml?rev=680139&r1=680138&r2=680139&view=diff
==============================================================================
--- maven/core-integration-testing/trunk/core-integration-tests/pom.xml (original)
+++ maven/core-integration-testing/trunk/core-integration-tests/pom.xml Sun Jul 27 09:23:09 2008
@@ -95,5 +95,17 @@
       <scope>test</scope>
 -->
     </dependency>
+    <!--
+      Should be fine to introduce this here, even if we use the embedder as it should be using an isolated classloader 
+      Used to simplify tests that provide a test HTTP server.
+      -->
+    <dependency>
+      <groupId>org.mortbay.jetty</groupId>
+      <artifactId>jetty</artifactId>
+      <version>6.1.11</version>
+<!-- TODO: not transitive in tests artifact, so must be left in main scope
+      <scope>test</scope>
+-->
+    </dependency>
   </dependencies>
 </project>

Modified: maven/core-integration-testing/trunk/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng3652UserAgentHeader.java
URL: http://svn.apache.org/viewvc/maven/core-integration-testing/trunk/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng3652UserAgentHeader.java?rev=680139&r1=680138&r2=680139&view=diff
==============================================================================
--- maven/core-integration-testing/trunk/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng3652UserAgentHeader.java (original)
+++ maven/core-integration-testing/trunk/core-integration-tests/src/test/java/org/apache/maven/integrationtests/MavenITmng3652UserAgentHeader.java Sun Jul 27 09:23:09 2008
@@ -4,22 +4,32 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStreamReader;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.SocketTimeoutException;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Random;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.it.Verifier;
 import org.apache.maven.it.util.ResourceExtractor;
+import org.mortbay.jetty.Handler;
+import org.mortbay.jetty.Request;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.handler.AbstractHandler;
 
 public class MavenITmng3652UserAgentHeader
     extends AbstractMavenIntegrationTestCase
 {
+    private Server server;
+
+    private int port;
+
+    private String userAgent;
+
     public MavenITmng3652UserAgentHeader()
         throws InvalidVersionSpecificationException
     {
@@ -29,6 +39,40 @@
         super( "(2.0.9,2.1-ALPHA-1-SNAPSHOT)" );
     }
 
+    public void setUp()
+        throws Exception
+    {
+        Handler handler = new AbstractHandler()
+        {   
+            public void handle( String target, HttpServletRequest request, HttpServletResponse response, int dispatch )
+                throws IOException, ServletException
+            {
+                userAgent = request.getHeader( "User-Agent" );
+
+                response.setContentType( "text/plain" );
+                response.setStatus( HttpServletResponse.SC_OK );
+                response.getWriter().println( "some content" );
+                response.getWriter().println();
+                
+                ( (Request) request ).setHandled( true );
+            }
+        };
+
+        server = new Server( 0 );
+        server.setHandler( handler );
+        server.start();
+
+        port = server.getConnectors()[0].getLocalPort();
+    }
+
+    protected void tearDown()
+        throws Exception
+    {
+        super.tearDown();
+
+        server.stop();
+    }
+
     /**
      * Test that the user agent header is configured in the wagon manager.
      */
@@ -44,13 +88,6 @@
         verifier.verifyErrorFreeLog();
         verifier.resetStreams();
 
-        int port = ( Math.abs( new Random().nextInt() ) % 2048 ) + 1024;
-
-        Server s = new Server( port );
-        Thread t = new Thread( s );
-        t.setDaemon( true );
-        t.start();
-        
         verifier = new Verifier( projectDir.getAbsolutePath() );
         
         List cliOptions = new ArrayList();
@@ -61,7 +98,7 @@
         verifier.verifyErrorFreeLog();
         verifier.resetStreams();
         
-        String userAgent = s.userAgent;
+        String userAgent = this.userAgent;
         assertNotNull( userAgent );
         
         File touchFile = new File( projectDir, "target/touch.txt" );
@@ -89,7 +126,7 @@
         verifier.verifyErrorFreeLog();
         verifier.resetStreams();
         
-        userAgent = s.userAgent;
+        userAgent = this.userAgent;
         assertNotNull( userAgent );
         assertEquals( "Comparing User-Agent '" + userAgent + "'", "Apache-Maven/" + mavenVersion + " (Java " + javaVersion + "; " + os + ")" + " maven-artifact/" + artifactVersion, userAgent );
 
@@ -105,7 +142,7 @@
         verifier.verifyErrorFreeLog();
         verifier.resetStreams();
         
-        userAgent = s.userAgent;
+        userAgent = this.userAgent;
         assertNotNull( userAgent );
         assertEquals( "Comparing User-Agent '" + userAgent + "'", "Apache-Maven/" + mavenVersion + " (Java " + javaVersion + "; " + os + ")" + " maven-artifact/" + artifactVersion, userAgent );
 
@@ -121,115 +158,8 @@
         verifier.verifyErrorFreeLog();
         verifier.resetStreams();
         
-        userAgent = s.userAgent;
+        userAgent = this.userAgent;
         assertNotNull( userAgent );
         assertEquals( "Maven Fu", userAgent );        
-
-        t.interrupt();
-    }
-
-    private static final class Server
-        implements Runnable
-    {
-        
-        private final int port;
-        
-        private String userAgent;
-
-        private Server( int port )
-        {
-            this.port = port;
-        }
-
-        public void run()
-        {
-            ServerSocket ssock = null;
-            try
-            {
-                try
-                {
-                    ssock = new ServerSocket( port );
-                    ssock.setSoTimeout( 2000 );
-                }
-                catch ( IOException e )
-                {
-                    Logger.getLogger( Server.class.getName() ).log( Level.SEVERE, "", e );
-                    return;
-                }
-
-                while ( !Thread.currentThread().isInterrupted() )
-                {
-                    Socket sock = null;
-                    BufferedReader r = null;
-                    try
-                    {
-                        try
-                        {
-                            sock = ssock.accept();
-                        }
-                        catch ( SocketTimeoutException e )
-                        {
-                            continue;
-                        }
-
-                        r = new BufferedReader( new InputStreamReader( sock.getInputStream() ) );
-
-                        String line = null;
-                        int count = 0;
-                        while ( ( line = r.readLine() ) != null )
-                        {
-                            Logger.getLogger( Server.class.getName() ).fine( line );
-                            if ( line.startsWith( "User-Agent:" ) )
-                            {
-                                userAgent = line.replaceAll( "User-Agent:\\s+", "" );
-                                
-                                break;
-                            }
-                            count++;
-                        }
-                    }
-                    catch ( IOException e )
-                    {
-                        Logger.getLogger( Server.class.getName() ).log( Level.SEVERE, "", e );
-                    }
-                    finally
-                    {
-                        if ( r != null )
-                        {
-                            try
-                            {
-                                r.close();
-                            }
-                            catch ( IOException e )
-                            {
-                            }
-                        }
-                        if ( sock != null )
-                        {
-                            try
-                            {
-                                sock.close();
-                            }
-                            catch ( IOException e )
-                            {
-                            }
-                        }
-                    }
-                }
-            }
-            finally
-            {
-                if ( ssock != null )
-                {
-                    try
-                    {
-                        ssock.close();
-                    }
-                    catch ( IOException e )
-                    {
-                    }
-                }
-            }
-        }
     }
 }