You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2013/06/18 15:32:14 UTC

[2/2] git commit: [WAGON-381] Both Maven 2 and 3 fail to retrieve a that is larger than Integer.MAX_VALUE add unit test which looks to pass.

[WAGON-381] Both Maven 2 and 3 fail to retrieve a <dependency> that is larger than Integer.MAX_VALUE
add unit test which looks to pass.


Project: http://git-wip-us.apache.org/repos/asf/maven-wagon/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-wagon/commit/05098b3f
Tree: http://git-wip-us.apache.org/repos/asf/maven-wagon/tree/05098b3f
Diff: http://git-wip-us.apache.org/repos/asf/maven-wagon/diff/05098b3f

Branch: refs/heads/master
Commit: 05098b3f0f0378a7272f0d9491ef356889bfc67f
Parents: b7b9f62
Author: Olivier Lamy <ol...@apache.org>
Authored: Tue Jun 18 23:30:46 2013 +1000
Committer: Olivier Lamy <ol...@apache.org>
Committed: Tue Jun 18 23:30:46 2013 +1000

----------------------------------------------------------------------
 .../providers/http/HugeFileDownloadTest.java    | 156 +++++++++++++++++++
 .../wagon-http/src/test/resources/log4j.xml     |   8 +-
 2 files changed, 163 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/05098b3f/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HugeFileDownloadTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HugeFileDownloadTest.java b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HugeFileDownloadTest.java
new file mode 100644
index 0000000..c11ea21
--- /dev/null
+++ b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HugeFileDownloadTest.java
@@ -0,0 +1,156 @@
+package org.apache.maven.wagon.providers.http;
+
+import junit.framework.Assert;
+import org.apache.maven.wagon.FileTestUtils;
+import org.apache.maven.wagon.Wagon;
+import org.apache.maven.wagon.observers.Debug;
+import org.apache.maven.wagon.repository.Repository;
+import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.StringOutputStream;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.servlet.Context;
+import org.mortbay.jetty.servlet.DefaultServlet;
+import org.mortbay.jetty.servlet.ServletHolder;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.RandomAccessFile;
+import java.math.BigInteger;
+
+/**
+ * @author Olivier Lamy
+ */
+public class HugeFileDownloadTest
+    extends PlexusTestCase
+{
+
+    private static long HUGE_FILE_SIZE =
+        Integer.valueOf( Integer.MAX_VALUE ).longValue() + Integer.valueOf( Integer.MAX_VALUE ).longValue();
+
+    private Server server;
+
+    public void testDownloadHugeFileWithContentLength()
+        throws Exception
+    {
+        File hugeFile = new File( getBasedir(), "/target/hugefile.txt" );
+        if ( !hugeFile.exists() || hugeFile.length() < HUGE_FILE_SIZE )
+        {
+            makeHugeFile( hugeFile );
+        }
+
+        server = new Server( 0 );
+
+        Context root = new Context( server, "/", Context.SESSIONS );
+        root.setResourceBase( new File( getBasedir(), "/target" ).getAbsolutePath() );
+        ServletHolder servletHolder = new ServletHolder( new DefaultServlet() );
+        root.addServlet( servletHolder, "/*" );
+
+        server.start();
+
+        try
+        {
+            Wagon wagon = getWagon();
+            wagon.connect( new Repository( "id", "http://localhost:" + server.getConnectors()[0].getLocalPort() ) );
+
+            File dest = File.createTempFile( "huge", "txt" );
+
+            wagon.get( "hugefile.txt", dest );
+
+            Assert.assertTrue( dest.length() >= HUGE_FILE_SIZE );
+
+            wagon.disconnect();
+        }
+        finally
+        {
+            server.start();
+        }
+
+
+    }
+
+    public void testDownloadHugeFileWithChunked()
+        throws Exception
+    {
+        final File hugeFile = new File( getBasedir(), "/target/hugefile.txt" );
+        if ( !hugeFile.exists() || hugeFile.length() < HUGE_FILE_SIZE )
+        {
+            makeHugeFile( hugeFile );
+        }
+
+        server = new Server( 0 );
+
+        Context root = new Context( server, "/", Context.SESSIONS );
+        root.setResourceBase( new File( getBasedir(), "/target" ).getAbsolutePath() );
+        ServletHolder servletHolder = new ServletHolder( new HttpServlet()
+        {
+            @Override
+            protected void doGet( HttpServletRequest req, HttpServletResponse resp )
+                throws ServletException, IOException
+            {
+                FileInputStream fis = new FileInputStream( hugeFile );
+
+                byte[] buffer = new byte[8192];
+                int len = 0;
+                while ( ( len = fis.read( buffer ) ) != -1 )
+                {
+                    resp.getOutputStream().write( buffer, 0, len );
+                }
+                fis.close();
+            }
+        } );
+        root.addServlet( servletHolder, "/*" );
+
+        server.start();
+
+        try
+        {
+            Wagon wagon = getWagon();
+            wagon.connect( new Repository( "id", "http://localhost:" + server.getConnectors()[0].getLocalPort() ) );
+
+            File dest = File.createTempFile( "huge", "txt" );
+
+            wagon.get( "hugefile.txt", dest );
+
+            Assert.assertTrue( dest.length() >= HUGE_FILE_SIZE );
+
+            wagon.disconnect();
+        }
+        finally
+        {
+            server.start();
+        }
+
+
+    }
+
+
+    protected Wagon getWagon()
+        throws Exception
+    {
+        Wagon wagon = (Wagon) lookup( Wagon.ROLE, "http" );
+
+        Debug debug = new Debug();
+
+        wagon.addSessionListener( debug );
+
+        return wagon;
+    }
+
+    private void makeHugeFile( File hugeFile )
+        throws Exception
+    {
+        RandomAccessFile ra = new RandomAccessFile( hugeFile.getPath(), "rw" );
+        ra.setLength( HUGE_FILE_SIZE + 1 );
+        ra.seek( HUGE_FILE_SIZE );
+        ra.write( 1 );
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/05098b3f/wagon-providers/wagon-http/src/test/resources/log4j.xml
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/test/resources/log4j.xml b/wagon-providers/wagon-http/src/test/resources/log4j.xml
index aaabcde..dd6eb4f 100644
--- a/wagon-providers/wagon-http/src/test/resources/log4j.xml
+++ b/wagon-providers/wagon-http/src/test/resources/log4j.xml
@@ -27,11 +27,17 @@
     </layout>
   </appender>
 
-  <logger name="org.apache.http.wire">
+  <logger name="org.apache.http.headers">
     <level value="debug"/>
   </logger>
 
+  <logger name="org.apache.http">
+    <level value="info"/>
+  </logger>
 
+  <logger name="org.apache.http.wire">
+    <level value="info"/>
+  </logger>
 
   <root>
     <priority value ="info" />