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 2006/08/13 04:51:40 UTC
svn commit: r431137 - in
/maven/repository-manager/trunk/maven-repository-proxy/src:
main/java/org/apache/maven/repository/proxy/DefaultProxyRequestHandler.java
test/java/org/apache/maven/repository/proxy/ProxyRequestHandlerTest.java
Author: brett
Date: Sat Aug 12 19:51:39 2006
New Revision: 431137
URL: http://svn.apache.org/viewvc?rev=431137&view=rev
Log:
[MRM-138] add more proxy tests, and fix a bug where a cached failure would not trigger a hard failure on a repository configured to
Modified:
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyRequestHandler.java
maven/repository-manager/trunk/maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/ProxyRequestHandlerTest.java
Modified: maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyRequestHandler.java
URL: http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyRequestHandler.java?rev=431137&r1=431136&r2=431137&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyRequestHandler.java (original)
+++ maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyRequestHandler.java Sat Aug 12 19:51:39 2006
@@ -110,7 +110,7 @@
if ( repository.isCachedFailure( path ) )
{
- getLogger().debug( "Skipping repository " + repository.getName() + " for a cached path failure." );
+ processRepositoryFailure( repository, "Cached failure found" );
}
else
{
@@ -249,8 +249,8 @@
if ( tries > 1 && !success )
{
- //noinspection ThrowCaughtLocally
- throw new TransferFailedException( "Checksum failures occurred while downloading " + path );
+ processRepositoryFailure( repository, "Checksum failures occurred while downloading " + path );
+ return;
}
// temp won't exist if we called getIfNewer and it was older, but its still a successful return
@@ -265,13 +265,11 @@
}
catch ( TransferFailedException e )
{
- String message = "Skipping repository " + repository.getName() + ": " + e.getMessage();
- processRepositoryFailure( repository, message, e );
+ processRepositoryFailure( repository, e );
}
catch ( AuthorizationException e )
{
- String message = "Skipping repository " + repository.getName() + ": " + e.getMessage();
- processRepositoryFailure( repository, message, e );
+ processRepositoryFailure( repository, e );
}
catch ( ResourceDoesNotExistException e )
{
@@ -483,26 +481,33 @@
}
}
- /**
- * Queries the configuration on how to handle a repository download failure
- *
- * @param repository the repository object where the failure occurred
- * @param message the message/reason for the failure
- * @param t the cause for the exception
- * @throws ProxyException if hard failure is enabled on the repository causing the failure
- */
- private void processRepositoryFailure( ProxiedArtifactRepository repository, String message, Throwable t )
+ private void processRepositoryFailure( ProxiedArtifactRepository repository, Throwable t )
+ throws ProxyException
+ {
+ if ( repository.isHardFail() )
+ {
+ throw new ProxyException(
+ "An error occurred in hardfailing repository " + repository.getName() + "...\n " + t.getMessage(),
+ t );
+ }
+ else
+ {
+ getLogger().warn( "Skipping repository " + repository.getName() + ": " + t.getMessage() );
+ getLogger().debug( "Cause", t );
+ }
+ }
+
+ private void processRepositoryFailure( ProxiedArtifactRepository repository, String message )
throws ProxyException
{
if ( repository.isHardFail() )
{
throw new ProxyException(
- "An error occurred in hardfailing repository " + repository.getName() + "...\n " + message, t );
+ "An error occurred in hardfailing repository " + repository.getName() + "...\n " + message );
}
else
{
- getLogger().warn( message );
- getLogger().debug( message, t );
+ getLogger().warn( "Skipping repository " + repository.getName() + ": " + message );
}
}
Modified: maven/repository-manager/trunk/maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/ProxyRequestHandlerTest.java
URL: http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/ProxyRequestHandlerTest.java?rev=431137&r1=431136&r2=431137&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/ProxyRequestHandlerTest.java (original)
+++ maven/repository-manager/trunk/maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/ProxyRequestHandlerTest.java Sat Aug 12 19:51:39 2006
@@ -36,8 +36,6 @@
/**
* @author Brett Porter
* @todo! tests to do vvv
- * @todo test when failure is cached
- * @todo test when failure is cached and repo is hard fail
* @todo test when failure should be cached but caching is disabled
* @todo test snapshots - general
* @todo test snapshots - newer version on repo2 is pulled down
@@ -58,6 +56,7 @@
* @todo test remote checksum present and correct
* @todo test remote checksum present and incorrect
* @todo test remote checksum transfer failed
+ * @todo test when failure is cached but cache period is over (and check failure is cleared)
*/
public class ProxyRequestHandlerTest
extends PlexusTestCase
@@ -320,6 +319,64 @@
wagonMockControl.verify();
assertEquals( "Check cause", failedException, e.getCause() );
+ assertTrue( "Check failure", proxiedArtifactRepository.isCachedFailure( path ) );
+ }
+ }
+
+ public void testGetInSecondProxiedRepoFirstFailsFromCache()
+ throws ResourceDoesNotExistException, ProxyException, IOException, TransferFailedException,
+ AuthorizationException
+ {
+ // fail from the cache, even though it is in the first repo now
+
+ String path = "org/apache/maven/test/get-in-both-proxies/1.0/get-in-both-proxies-1.0.jar";
+ File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
+
+ assertFalse( expectedFile.exists() );
+
+ proxiedRepositories.clear();
+ ProxiedArtifactRepository proxiedArtifactRepository = createProxiedRepository( proxiedRepository1 );
+ proxiedArtifactRepository.addFailure( path );
+ proxiedRepositories.add( proxiedArtifactRepository );
+ proxiedRepositories.add( createProxiedRepository( proxiedRepository2 ) );
+ File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
+
+ assertEquals( "Check file matches", expectedFile, file );
+ assertTrue( "Check file created", file.exists() );
+
+ File proxiedFile = new File( proxiedRepository2.getBasedir(), path );
+ String expectedContents = FileUtils.fileRead( proxiedFile );
+ assertEquals( "Check file contents", expectedContents, FileUtils.fileRead( file ) );
+
+ proxiedFile = new File( proxiedRepository1.getBasedir(), path );
+ String unexpectedContents = FileUtils.fileRead( proxiedFile );
+ assertFalse( "Check file contents", unexpectedContents.equals( FileUtils.fileRead( file ) ) );
+ }
+
+ public void testGetInSecondProxiedRepoFirstHardFailsFromCache()
+ throws ResourceDoesNotExistException, ProxyException, IOException, TransferFailedException,
+ AuthorizationException
+ {
+ // fail from the cache, even though it is in the first repo now
+
+ String path = "org/apache/maven/test/get-in-both-proxies/1.0/get-in-both-proxies-1.0.jar";
+ File expectedFile = new File( defaultManagedRepository.getBasedir(), path );
+
+ assertFalse( expectedFile.exists() );
+
+ proxiedRepositories.clear();
+ ProxiedArtifactRepository proxiedArtifactRepository = createHardFailProxiedRepository( proxiedRepository1 );
+ proxiedArtifactRepository.addFailure( path );
+ proxiedRepositories.add( proxiedArtifactRepository );
+ proxiedRepositories.add( createProxiedRepository( proxiedRepository2 ) );
+ try
+ {
+ File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository );
+ fail( "Found file: " + file + "; but was expecting a failure" );
+ }
+ catch ( ProxyException e )
+ {
+ // expect a failure
assertTrue( "Check failure", proxiedArtifactRepository.isCachedFailure( path ) );
}
}