You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ad...@apache.org on 2003/01/22 00:58:24 UTC

cvs commit: jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test AbstractProviderTestCase.java ProviderReadTests.java ProviderWriteTests.java

adammurdoch    2003/01/21 15:58:24

  Modified:    vfs      maven.xml
               vfs/src/test/org/apache/commons/vfs/impl/test
                        VfsClassLoaderTests.java
               vfs/src/test/org/apache/commons/vfs/provider/test
                        JunctionProviderConfig.java
               vfs/src/test/org/apache/commons/vfs/test
                        AbstractProviderTestCase.java
                        ProviderReadTests.java ProviderWriteTests.java
  Log:
  - Fixed the jar and nested jar provider tests.  Reorganised layout of test files to do this.
  - Added a couple more concurrency tests.
  
  Revision  Changes    Path
  1.9       +50 -46    jakarta-commons-sandbox/vfs/maven.xml
  
  Index: maven.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/vfs/maven.xml,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- maven.xml	25 Nov 2002 05:50:50 -0000	1.8
  +++ maven.xml	21 Jan 2003 23:58:24 -0000	1.9
  @@ -1,51 +1,55 @@
   <project default="java:jar" xmlns:j="jelly:core">
   
  -  <!-- we can customize the Maven build here -->
  +    <!-- we can customize the Maven build here -->
   
  -  <!-- Set up the test files -->
  -  <postGoal name="test:test-resources">
  +    <!-- Set up the test files -->
  +    <postGoal name="test:test-resources">
  +
  +        <copy todir="${test.basedir}/read-tests">
  +            <fileset dir="${test.data.src}/basedir"/>
  +        </copy>
  +
  +        <!-- Compile the code for the class loader test -->
  +        <javac
  +            destdir="${test.basedir}"
  +            debug="${maven.compile.debug}"
  +            deprecation="${maven.compile.deprecation}"
  +            optimize="${maven.compile.optimize}">
  +            <src>
  +                <path>
  +                    <pathelement location="${test.data.src}"/>
  +                </path>
  +            </src>
  +        </javac>
  +
  +        <mkdir dir="${test.basedir}/read-tests/emptydir"/>
  +
  +        <!-- Create a zip file -->
  +        <zip zipfile="${test.basedir}/test.zip">
  +            <zipfileset dir="${test.basedir}">
  +                <include name="read-tests/**"/>
  +                <include name="code/**"/>
  +            </zipfileset>
  +        </zip>
  +        <zip zipfile="${test.basedir}/nested.zip">
  +            <zipfileset dir="${test.basedir}">
  +                <include name="test.zip"/>
  +            </zipfileset>
  +        </zip>
  +
  +        <jar
  +            jarfile="${test.basedir}/test.jar"
  +            manifest="${test.data.src}/test.mf">
  +            <fileset dir="${test.basedir}">
  +                <include name="read-tests/**"/>
  +                <include name="code/**"/>
  +            </fileset>
  +        </jar>
  +
  +        <jar
  +            jarfile="${test.basedir}/nested.jar"
  +            basedir="${test.basedir}"
  +            includes="test.jar"/>
  +    </postGoal>
   
  -    <copy todir="${test.basedir}/read-tests">
  -      <fileset dir="${test.data.src}/basedir"/>
  -    </copy>
  -    
  -    <!-- Compile the code for the class loader test -->
  -    <javac
  -      destdir="${test.basedir}/read-tests"
  -      debug="${maven.compile.debug}"
  -      deprecation="${maven.compile.deprecation}"
  -      optimize="${maven.compile.optimize}">
  -      <src>
  -        <path>
  -          <pathelement location="${test.data.src}"/>
  -        </path>
  -      </src>
  -    </javac>
  -
  -    <mkdir dir="${test.basedir}/read-tests/emptydir"/>
  -
  -    <!-- Create a zip file -->
  -    <zip zipfile="${test.basedir}/test.zip">
  -      <zipfileset dir="${test.basedir}">
  -        <include name="read-tests/**"/>
  -      </zipfileset>
  -    </zip>
  -    <zip zipfile="${test.basedir}/nested.zip">
  -      <zipfileset dir="${test.basedir}">
  -        <include name="test.zip"/>
  -      </zipfileset>
  -    </zip>
  -    
  -    <jar
  -      jarfile="${test.basedir}/test.jar"
  -      basedir="${test.basedir}"
  -      includes="read-tests/**"
  -      manifest="${test.data.src}/test.mf"/>
  -
  -    <jar
  -      jarfile="${test.basedir}/nested.jar"
  -      basedir="${test.basedir}"
  -      includes="test.jar"/>
  -  </postGoal>
  -    
   </project>
  
  
  
  1.4       +8 -11     jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/impl/test/VfsClassLoaderTests.java
  
  Index: VfsClassLoaderTests.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/impl/test/VfsClassLoaderTests.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- VfsClassLoaderTests.java	25 Nov 2002 05:40:59 -0000	1.3
  +++ VfsClassLoaderTests.java	21 Jan 2003 23:58:24 -0000	1.4
  @@ -58,7 +58,6 @@
   import java.net.URL;
   import java.net.URLConnection;
   import org.apache.commons.vfs.Capability;
  -import org.apache.commons.vfs.FileObject;
   import org.apache.commons.vfs.FileSystemException;
   import org.apache.commons.vfs.impl.VFSClassLoader;
   import org.apache.commons.vfs.test.AbstractProviderTestCase;
  @@ -90,7 +89,7 @@
       private VFSClassLoader createClassLoader() throws FileSystemException
       {
           final VFSClassLoader loader =
  -            new VFSClassLoader( getReadFolder(), getManager() );
  +            new VFSClassLoader( getBaseFolder(), getManager() );
           return loader;
       }
   
  @@ -104,7 +103,7 @@
           final Class testClass = loader.loadClass( "code.ClassToLoad" );
           final Package pack = testClass.getPackage();
           assertEquals( "code", pack.getName() );
  -        verifyPackage( getReadFolder(), pack, false );
  +        verifyPackage( pack, false );
   
           final Object testObject = testClass.newInstance();
           assertEquals( "**PRIVATE**", testObject.toString() );
  @@ -117,7 +116,7 @@
       {
           final VFSClassLoader loader = createClassLoader();
   
  -        final URL resource = loader.getResource( "file1.txt" );
  +        final URL resource = loader.getResource( "read-tests/file1.txt" );
   
           assertNotNull( resource );
           final URLConnection urlCon = resource.openConnection();
  @@ -126,7 +125,6 @@
   
       /**
        * Tests package sealing.
  -     * @todo No it doesn't.
        */
       public void testSealing() throws Exception
       {
  @@ -134,18 +132,17 @@
           final Class testClass = loader.loadClass( "code.sealed.AnotherClass" );
           final Package pack = testClass.getPackage();
           assertEquals( "code.sealed", pack.getName() );
  -        verifyPackage( getReadFolder(), pack, true );
  +        verifyPackage( pack, true );
       }
   
       /**
        * Verify the package loaded with class loader.
        */
  -    private void verifyPackage( final FileObject baseFolder,
  -                                final Package pack,
  -                                boolean sealed )
  +    private void verifyPackage( final Package pack,
  +                                final boolean sealed )
           throws FileSystemException
       {
  -        if ( baseFolder.getFileSystem().hasCapability( Capability.MANIFEST_ATTRIBUTES ) )
  +        if ( getBaseFolder().getFileSystem().hasCapability( Capability.MANIFEST_ATTRIBUTES ) )
           {
               assertEquals( "ImplTitle", pack.getImplementationTitle() );
               assertEquals( "ImplVendor", pack.getImplementationVendor() );
  
  
  
  1.3       +3 -3      jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/provider/test/JunctionProviderConfig.java
  
  Index: JunctionProviderConfig.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/provider/test/JunctionProviderConfig.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- JunctionProviderConfig.java	23 Nov 2002 00:41:10 -0000	1.2
  +++ JunctionProviderConfig.java	21 Jan 2003 23:58:24 -0000	1.3
  @@ -93,10 +93,10 @@
       {
           final FileObject baseFolder = config.getBaseTestFolder( manager );
   
  -        // Create an empty file system, then link in read-tests and write-tests
  +        // Create an empty file system, then link in the base folder
           final FileSystem newFs = manager.createFileSystem( "vfs:" ).getFileSystem();
           final String junctionPoint = "/some/dir";
  -        newFs.addJunction( junctionPoint + "/read-tests", baseFolder.resolveFile( "read-tests" ) );
  +        newFs.addJunction( junctionPoint, baseFolder );
           newFs.addJunction( junctionPoint + "/write-tests", baseFolder.resolveFile( "write-tests/subdir" ) );
   
           return newFs.resolveFile( junctionPoint );
  
  
  
  1.6       +16 -6     jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/AbstractProviderTestCase.java
  
  Index: AbstractProviderTestCase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/AbstractProviderTestCase.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- AbstractProviderTestCase.java	21 Jan 2003 02:42:29 -0000	1.5
  +++ AbstractProviderTestCase.java	21 Jan 2003 23:58:24 -0000	1.6
  @@ -64,10 +64,10 @@
   import java.util.Arrays;
   import org.apache.commons.AbstractVfsTestCase;
   import org.apache.commons.vfs.Capability;
  -import org.apache.commons.vfs.FileName;
  -import org.apache.commons.vfs.FileObject;
   import org.apache.commons.vfs.FileContent;
  +import org.apache.commons.vfs.FileObject;
   import org.apache.commons.vfs.FileType;
  +import org.apache.commons.vfs.FileName;
   import org.apache.commons.vfs.impl.DefaultFileReplicator;
   import org.apache.commons.vfs.impl.DefaultFileSystemManager;
   import org.apache.commons.vfs.impl.PrivilegedFileReplicator;
  @@ -86,6 +86,7 @@
   public abstract class AbstractProviderTestCase
       extends AbstractVfsTestCase
   {
  +    private FileObject baseFolder;
       private FileObject readFolder;
       private FileObject writeFolder;
       private DefaultFileSystemManager manager;
  @@ -113,7 +114,16 @@
       }
   
       /**
  -     * Returns the read test folder.  Asserts that the read folder exists.
  +     * Returns the base test folder.  This is the parent of both the read
  +     * test and write test folders.
  +     */
  +    public FileObject getBaseFolder()
  +    {
  +        return baseFolder;
  +    }
  +
  +    /**
  +     * Returns the read test folder.
        */
       protected FileObject getReadFolder()
       {
  @@ -162,8 +172,8 @@
   
           manager.init();
   
  -        // Locate the base folder
  -        final FileObject baseFolder = providerConfig.getBaseTestFolder( manager );
  +        // Locate the base folders
  +        baseFolder = providerConfig.getBaseTestFolder( manager );
           readFolder = baseFolder.resolveFile( "read-tests" );
           writeFolder = baseFolder.resolveFile( "write-tests" );
   
  
  
  
  1.6       +58 -7     jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/ProviderReadTests.java
  
  Index: ProviderReadTests.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/ProviderReadTests.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ProviderReadTests.java	21 Jan 2003 02:42:29 -0000	1.5
  +++ ProviderReadTests.java	21 Jan 2003 23:58:24 -0000	1.6
  @@ -57,6 +57,7 @@
   
   import java.util.ArrayList;
   import java.util.List;
  +import java.io.InputStream;
   import org.apache.commons.vfs.FileContent;
   import org.apache.commons.vfs.FileName;
   import org.apache.commons.vfs.FileObject;
  @@ -526,12 +527,6 @@
           dir.addChild( "file2.txt", FileType.FILE );
           dir.addChild( "file3.txt", FileType.FILE );
   
  -        final FileInfo code = base.addChild( "code", FileType.FOLDER );
  -        code.addChild( "ClassToLoad.class", FileType.FILE );
  -
  -        final FileInfo sealed = code.addChild( "sealed", FileType.FOLDER );
  -        sealed.addChild( "AnotherClass.class", FileType.FILE );
  -        
           return base;
       }
   
  @@ -766,6 +761,62 @@
           catch ( FileSystemException e )
           {
               assertSameMessage( "vfs.provider/get-size-no-exist.error", unknownFile, e );
  +        }
  +    }
  +
  +    /**
  +     * Tests concurrent reads on a file fail.
  +     *
  +     * @todo Change model so that concurrent reads are allowed (maybe optional)
  +     */
  +    public void testConcurrentRead() throws Exception
  +    {
  +        final FileObject file = getReadFolder().resolveFile( "file1.txt" );
  +        assertTrue( file.exists() );
  +
  +        // Start reading from the file
  +        final InputStream instr = file.getContent().getInputStream();
  +        try
  +        {
  +            // Start reading again
  +            file.getContent().getInputStream();
  +            fail();
  +        }
  +        catch ( final Exception e )
  +        {
  +            assertSameMessage( "vfs.provider/read-in-use.error", file, e );
  +        }
  +        finally
  +        {
  +            instr.close();
  +        }
  +    }
  +
  +    /**
  +     * Tests concurrent reads on different files works.
  +     */
  +    public void testConcurrentReadFiles() throws Exception
  +    {
  +        final FileObject file = getReadFolder().resolveFile( "file1.txt" );
  +        assertTrue( file.exists() );
  +        final FileObject emptyFile = getReadFolder().resolveFile( "empty.txt" );
  +        assertTrue( emptyFile.exists() );
  +        final FileObject folder = getReadFolder().resolveFile( "dir1" );
  +        assertTrue( folder.exists() );
  +
  +        // Start reading from the file
  +        final InputStream instr = file.getContent().getInputStream();
  +        try
  +        {
  +            // Try to read from other file
  +            assertSameContent( "", emptyFile );
  +
  +            // Try to list children of other folder
  +            folder.getChildren();
  +        }
  +        finally
  +        {
  +            instr.close();
           }
       }
   
  
  
  
  1.6       +31 -2     jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/ProviderWriteTests.java
  
  Index: ProviderWriteTests.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/ProviderWriteTests.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ProviderWriteTests.java	21 Jan 2003 02:44:57 -0000	1.5
  +++ ProviderWriteTests.java	21 Jan 2003 23:58:24 -0000	1.6
  @@ -56,6 +56,7 @@
   package org.apache.commons.vfs.test;
   
   import java.io.OutputStream;
  +import java.io.InputStream;
   import java.util.ArrayList;
   import java.util.HashSet;
   import java.util.Set;
  @@ -258,10 +259,38 @@
       }
   
       /**
  +     * Tests concurrent read and write on the same file fails.
  +     */
  +    public void testConcurrentReadWrite() throws Exception
  +    {
  +        final FileObject scratchFolder = createScratchFolder();
  +
  +        final FileObject file = scratchFolder.resolveFile( "file1.txt" );
  +        file.createFile();
  +
  +        // Start reading from the file
  +        final InputStream instr = file.getContent().getInputStream();
  +
  +        try
  +        {
  +            // Try to write to the file
  +            file.getContent().getOutputStream();
  +            fail();
  +        }
  +        catch ( final FileSystemException e )
  +        {
  +            // Check error message
  +            assertSameMessage( "vfs.provider/write-in-use.error", file, e );
  +        }
  +        finally
  +        {
  +            instr.close();
  +        }
  +    }
  +    
  +    /**
        * Tests file copy to and from the same filesystem type.  This was a problem
        * w/ FTP.
  -     *
  -     * @see org.apache.commons.vfs.provider.ftp.FtpFileObject#copyFrom
        */
       public void testCopySameFileSystem() throws Exception
       {
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>