You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2010/06/10 19:22:10 UTC

svn commit: r953402 - in /maven/core-integration-testing/trunk/core-it-suite/src/test: java/org/apache/maven/it/MavenITmng0768OfflineModeTest.java resources/mng-0768/pom.xml resources/mng-0768/repo/ resources/mng-0768/settings-template.xml

Author: bentmann
Date: Thu Jun 10 17:22:10 2010
New Revision: 953402

URL: http://svn.apache.org/viewvc?rev=953402&view=rev
Log:
o Strengthened IT to monitor actual repository access

Removed:
    maven/core-integration-testing/trunk/core-it-suite/src/test/resources/mng-0768/repo/
Modified:
    maven/core-integration-testing/trunk/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0768OfflineModeTest.java
    maven/core-integration-testing/trunk/core-it-suite/src/test/resources/mng-0768/pom.xml
    maven/core-integration-testing/trunk/core-it-suite/src/test/resources/mng-0768/settings-template.xml

Modified: maven/core-integration-testing/trunk/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0768OfflineModeTest.java
URL: http://svn.apache.org/viewvc/maven/core-integration-testing/trunk/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0768OfflineModeTest.java?rev=953402&r1=953401&r2=953402&view=diff
==============================================================================
--- maven/core-integration-testing/trunk/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0768OfflineModeTest.java (original)
+++ maven/core-integration-testing/trunk/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0768OfflineModeTest.java Thu Jun 10 17:22:10 2010
@@ -23,6 +23,21 @@ import org.apache.maven.it.Verifier;
 import org.apache.maven.it.util.ResourceExtractor;
 
 import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Properties;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.mortbay.jetty.Handler;
+import org.mortbay.jetty.Request;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.handler.AbstractHandler;
 
 /**
  * This is a test set for <a href="http://jira.codehaus.org/browse/MNG-768">MNG-768</a>.
@@ -33,6 +48,7 @@ import java.io.File;
 public class MavenITmng0768OfflineModeTest
     extends AbstractMavenIntegrationTestCase
 {
+
     public MavenITmng0768OfflineModeTest()
     {
         super( ALL_MAVEN_VERSIONS );
@@ -46,58 +62,116 @@ public class MavenITmng0768OfflineModeTe
     {
         File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-0768" );
 
-        {
-            // phase 1: run build in online mode to fill local repo
-            Verifier verifier = new Verifier( testDir.getAbsolutePath() );
-            verifier.setAutoclean( false );
-            verifier.deleteDirectory( "target" );
-            verifier.deleteArtifacts( "org.apache.maven.its.it0069" );
-            verifier.setLogFileName( "log1.txt" );
-            verifier.filterFile( "settings-template.xml", "settings.xml", "UTF-8", verifier.newDefaultFilterProperties() );
-            verifier.getCliOptions().add( "--settings" );
-            verifier.getCliOptions().add( "settings.xml" );
-            verifier.executeGoal( "org.apache.maven.its.plugins:maven-it-plugin-dependency-resolution:2.1-SNAPSHOT:compile" );
-            verifier.assertFilePresent( "target/compile.txt" );
-            verifier.verifyErrorFreeLog();
-            verifier.resetStreams();
-        }
+        final List requestedUris = Collections.synchronizedList( new ArrayList() );
 
+        Handler repoHandler = new AbstractHandler()
         {
-            // phase 2: run build in offline mode to check it still passes
-            // NOTE: We don't add the settings here to ensure Maven has no chance to access the required remote repo
-            Verifier verifier = new Verifier( testDir.getAbsolutePath() );
-            verifier.setAutoclean( false );
-            verifier.deleteDirectory( "target" );
-            verifier.getCliOptions().add( "-o" );
-            verifier.setLogFileName( "log2.txt" );
-            verifier.executeGoal( "org.apache.maven.its.plugins:maven-it-plugin-dependency-resolution:2.1-SNAPSHOT:compile" );
-            verifier.assertFilePresent( "target/compile.txt" );
-            verifier.verifyErrorFreeLog();
-            verifier.resetStreams();
-        }
+            public void handle( String target, HttpServletRequest request, HttpServletResponse response, int dispatch )
+                throws IOException, ServletException
+            {
+                System.out.println( "Handling " + request.getMethod() + " " + request.getRequestURL() );
+
+                requestedUris.add( request.getRequestURI() );
+
+                PrintWriter writer = response.getWriter();
+
+                response.setStatus( HttpServletResponse.SC_OK );
+
+                if ( request.getRequestURI().endsWith( ".pom" ) )
+                {
+                    writer.println( "<project>" );
+                    writer.println( "  <modelVersion>4.0.0</modelVersion>" );
+                    writer.println( "  <groupId>org.apache.maven.its.mng0768</groupId>" );
+                    writer.println( "  <artifactId>dep</artifactId>" );
+                    writer.println( "  <version>0.1</version>" );
+                    writer.println( "</project>" );
+                }
+                else if ( request.getRequestURI().endsWith( ".jar" ) )
+                {
+                    writer.println( "empty" );
+                }
+                else if ( request.getRequestURI().endsWith( ".md5" ) || request.getRequestURI().endsWith( ".sha1" ) )
+                {
+                    response.setStatus( HttpServletResponse.SC_NOT_FOUND );
+                }
+
+                ( (Request) request ).setHandled( true );
+            }
+        };
+
+        Server server = new Server( 0 );
+        server.setHandler( repoHandler );
+        server.start();
+        int port = server.getConnectors()[0].getLocalPort();
 
+        try
         {
-            // phase 3: delete test artifact and run build in offline mode to check it fails now
-            // NOTE: We add the settings again to offer Maven the bad choice of using the remote repo
-            Verifier verifier = new Verifier( testDir.getAbsolutePath() );
-            verifier.setAutoclean( false );
-            verifier.deleteDirectory( "target" );
-            verifier.deleteArtifacts( "org.apache.maven.its.it0069" );
-            verifier.getCliOptions().add( "-o" );
-            verifier.getCliOptions().add( "--settings" );
-            verifier.getCliOptions().add( "settings.xml" );
-            verifier.setLogFileName( "log3.txt" );
-            try
             {
+                // phase 1: run build in online mode to fill local repo
+                Verifier verifier = new Verifier( testDir.getAbsolutePath() );
+                verifier.setAutoclean( false );
+                verifier.deleteDirectory( "target" );
+                verifier.deleteArtifacts( "org.apache.maven.its.mng0768" );
+                verifier.setLogFileName( "log1.txt" );
+                Properties props = new Properties();
+                props.put( "@port@", Integer.toString( port ) );
+                verifier.filterFile( "settings-template.xml", "settings.xml", "UTF-8", props );
+                verifier.getCliOptions().add( "--settings" );
+                verifier.getCliOptions().add( "settings.xml" );
                 verifier.executeGoal( "org.apache.maven.its.plugins:maven-it-plugin-dependency-resolution:2.1-SNAPSHOT:compile" );
+                verifier.assertFilePresent( "target/compile.txt" );
                 verifier.verifyErrorFreeLog();
-                fail( "Build did not fail to resolve missing dependency although Maven ought to work offline!" );
+                verifier.resetStreams();
             }
-            catch( VerificationException e )
+
+            requestedUris.clear();
+
             {
-                // expected, should fail
+                // phase 2: run build in offline mode to check it still passes, without network accesses
+                Verifier verifier = new Verifier( testDir.getAbsolutePath() );
+                verifier.setAutoclean( false );
+                verifier.deleteDirectory( "target" );
+                verifier.getCliOptions().add( "-o" );
+                verifier.getCliOptions().add( "--settings" );
+                verifier.getCliOptions().add( "settings.xml" );
+                verifier.setLogFileName( "log2.txt" );
+                verifier.executeGoal( "org.apache.maven.its.plugins:maven-it-plugin-dependency-resolution:2.1-SNAPSHOT:compile" );
+                verifier.assertFilePresent( "target/compile.txt" );
+                verifier.verifyErrorFreeLog();
+                verifier.resetStreams();
             }
-            verifier.resetStreams();
+
+            assertTrue( requestedUris.toString(), requestedUris.isEmpty() );
+
+            {
+                // phase 3: delete test artifact and run build in offline mode to check it fails now
+                // NOTE: Adding the settings again to offer Maven the bad choice of using the remote repo
+                Verifier verifier = new Verifier( testDir.getAbsolutePath() );
+                verifier.setAutoclean( false );
+                verifier.deleteDirectory( "target" );
+                verifier.deleteArtifacts( "org.apache.maven.its.mng0768" );
+                verifier.getCliOptions().add( "-o" );
+                verifier.getCliOptions().add( "--settings" );
+                verifier.getCliOptions().add( "settings.xml" );
+                verifier.setLogFileName( "log3.txt" );
+                try
+                {
+                    verifier.executeGoal( "org.apache.maven.its.plugins:maven-it-plugin-dependency-resolution:2.1-SNAPSHOT:compile" );
+                    verifier.verifyErrorFreeLog();
+                    fail( "Build did not fail to resolve missing dependency although Maven ought to work offline!" );
+                }
+                catch( VerificationException e )
+                {
+                    // expected, should fail
+                }
+                verifier.resetStreams();
+            }
+
+            assertTrue( requestedUris.toString(), requestedUris.isEmpty() );
+        }
+        finally
+        {
+            server.stop();
         }
     }
 

Modified: maven/core-integration-testing/trunk/core-it-suite/src/test/resources/mng-0768/pom.xml
URL: http://svn.apache.org/viewvc/maven/core-integration-testing/trunk/core-it-suite/src/test/resources/mng-0768/pom.xml?rev=953402&r1=953401&r2=953402&view=diff
==============================================================================
--- maven/core-integration-testing/trunk/core-it-suite/src/test/resources/mng-0768/pom.xml (original)
+++ maven/core-integration-testing/trunk/core-it-suite/src/test/resources/mng-0768/pom.xml Thu Jun 10 17:22:10 2010
@@ -31,9 +31,9 @@ under the License.
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.maven.its.it0069</groupId>
-      <artifactId>it</artifactId>
-      <version>1.0.3</version>
+      <groupId>org.apache.maven.its.mng0768</groupId>
+      <artifactId>dep</artifactId>
+      <version>0.1</version>
     </dependency>
   </dependencies>
 

Modified: maven/core-integration-testing/trunk/core-it-suite/src/test/resources/mng-0768/settings-template.xml
URL: http://svn.apache.org/viewvc/maven/core-integration-testing/trunk/core-it-suite/src/test/resources/mng-0768/settings-template.xml?rev=953402&r1=953401&r2=953402&view=diff
==============================================================================
--- maven/core-integration-testing/trunk/core-it-suite/src/test/resources/mng-0768/settings-template.xml (original)
+++ maven/core-integration-testing/trunk/core-it-suite/src/test/resources/mng-0768/settings-template.xml Thu Jun 10 17:22:10 2010
@@ -26,7 +26,7 @@ under the License.
       <repositories>
         <repository>
           <id>maven-core-it</id>
-          <url>@baseurl@/repo</url>
+          <url>http://localhost:@port@/</url>
           <releases>
             <checksumPolicy>ignore</checksumPolicy>
           </releases>