I added the 3MB file to the test-data directory, so createLargeFile normally 
won't run.

Are there any more changes? I'm ready to try the release again.

Ralph

On Nov 5, 2010, at 12:26 PM, s...@apache.org wrote:

> Author: sebb
> Date: Fri Nov  5 19:26:06 2010
> New Revision: 1031735
> 
> URL: http://svn.apache.org/viewvc?rev=1031735&view=rev
> Log:
> Eliminate 3GB data file by using PipedI/O Streams
> 
> Modified:
>    
> commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs/provider/tar/test/LargeTarTestCase.java
> 
> Modified: 
> commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs/provider/tar/test/LargeTarTestCase.java
> URL: 
> http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs/provider/tar/test/LargeTarTestCase.java?rev=1031735&r1=1031734&r2=1031735&view=diff
> ==============================================================================
> --- 
> commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs/provider/tar/test/LargeTarTestCase.java
>  (original)
> +++ 
> commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs/provider/tar/test/LargeTarTestCase.java
>  Fri Nov  5 19:26:06 2010
> @@ -17,15 +17,16 @@
> package org.apache.commons.vfs.provider.tar.test;
> 
> import java.io.File;
> -import java.io.FileInputStream;
> import java.io.FileOutputStream;
> -import java.io.InputStream;
> import java.io.OutputStream;
> +import java.io.PipedInputStream;
> +import java.io.PipedOutputStream;
> import java.util.Arrays;
> import java.util.Iterator;
> import java.util.List;
> 
> import junit.framework.TestCase;
> +
> import org.apache.commons.compress.archivers.ArchiveStreamFactory;
> import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
> import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
> @@ -58,6 +59,7 @@ public class LargeTarTestCase extends Te
>     manager.addProvider("tgz", new TarFileProvider());
>     manager.addProvider("tar", new TarFileProvider());
> 
> +    new File(baseDir).mkdir(); // if test is run standalone
>     createLargeFile(largeFilePath, largeFileName);
>   }
> 
> @@ -140,61 +142,66 @@ public class LargeTarTestCase extends Te
>   }
> 
>   //@SuppressWarnings("unused")
> -  protected void createLargeFile(String path, String name) throws Exception {
> -    long _1K = 1024;
> -    long _1M = 1024 * _1K;
> -    long _256M = 256 * _1M;
> -    long _512M = 512 * _1M;
> -    long _1G = 1024 * _1M;
> +  protected void createLargeFile(String path, final String name) throws 
> Exception {
> +    final long _1K = 1024;
> +    final long _1M = 1024 * _1K;
> +//    long _256M = 256 * _1M;
> +//    long _512M = 512 * _1M;
> +    final long _1G = 1024 * _1M;
> 
>     // File size of 3 GB
> -    long fileSize = 3 * _1G;
> +    final long fileSize = 3 * _1G;
> 
>     File tarGzFile = new File(path + name + ".tar.gz");
> 
>     if(!tarGzFile.exists()) {
> -      System.out.println("This test is a bit slow. It needs to write a 3GB 
> file to your hard drive");
> -
> -      // Create archive
> -      OutputStream outTarFileStream = new FileOutputStream(path + name + 
> ".tar");
> -
> -      TarArchiveOutputStream outTarStream = (TarArchiveOutputStream)new 
> ArchiveStreamFactory()
> -      .createArchiveOutputStream(ArchiveStreamFactory.TAR, outTarFileStream);
> -
> -      // Create archive contents
> -      TarArchiveEntry tarArchiveEntry = new TarArchiveEntry(name + ".txt");
> -      tarArchiveEntry.setSize(fileSize);
> -
> -      outTarStream.putArchiveEntry(tarArchiveEntry);
> -      for(long i = 0; i < fileSize; i++) {
> -        outTarStream.write('a');
> -      }
> -
> -      outTarStream.closeArchiveEntry();
> -      outTarStream.close();
> -
> -      outTarFileStream.close();
> +      System.out.println("This test is a bit slow. It needs to write 3GB of 
> data as a compressed file (approx. 3MB) to your hard drive");
> 
> +      final PipedOutputStream outTarFileStream = new PipedOutputStream();
> +      PipedInputStream inTarFileStream = new 
> PipedInputStream(outTarFileStream);
> +      
> +      Thread source = new Thread(){
> +
> +        public void run() {
> +            byte ba_1k[] = new byte[(int) _1K];
> +            for(int i=0; i < ba_1k.length; i++){
> +                ba_1k[i]='a';
> +            }
> +            try {
> +                TarArchiveOutputStream outTarStream = 
> +                    (TarArchiveOutputStream)new ArchiveStreamFactory()
> +                    .createArchiveOutputStream(ArchiveStreamFactory.TAR, 
> outTarFileStream);
> +                // Create archive contents
> +                TarArchiveEntry tarArchiveEntry = new TarArchiveEntry(name + 
> ".txt");
> +                tarArchiveEntry.setSize(fileSize);
> +
> +                outTarStream.putArchiveEntry(tarArchiveEntry);
> +                for(long i = 0; i < fileSize; i+= ba_1k.length) {
> +                    outTarStream.write(ba_1k);
> +                }
> +                outTarStream.closeArchiveEntry();
> +                outTarStream.close();
> +                outTarFileStream.close();
> +            } catch (Exception e) {
> +                e.printStackTrace();
> +            }
> +        }
> +          
> +      };
> +      source.start();
> +      
>       // Create compressed archive
>       OutputStream outGzipFileStream = new FileOutputStream(path + name + 
> ".tar.gz");
> 
>       GzipCompressorOutputStream outGzipStream = 
> (GzipCompressorOutputStream)new CompressorStreamFactory()
>       .createCompressorOutputStream(CompressorStreamFactory.GZIP, 
> outGzipFileStream);
> 
> -      // Compress archive
> -      InputStream inTarFileStream = new FileInputStream(path + name + 
> ".tar");
> -      // TODO: Change to a Piped Stream to conserve disk space
>       IOUtils.copy(inTarFileStream, outGzipStream);
>       inTarFileStream.close();
> 
>       outGzipStream.close();
>       outGzipFileStream.close();
> 
> -      // Cleanup original tar
> -      File tarFile = new File(path + name + ".tar");
> -      if(tarFile.exists()) {
> -        tarFile.delete();
> -      }
>     }
>   }
> }
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to