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: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>