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>