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>