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/02/20 10:22:13 UTC

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

adammurdoch    2003/02/20 01:22:13

  Modified:    vfs/src/test/org/apache/commons/vfs/test
                        AbstractProviderTestCase.java
                        ProviderTestSuite.java
  Log:
  Create the FileSystemManager once per provider test suite, rather than once per test case.
  Allows connections to be pooled/reused/etc, making the tests heaps faster.
  
  Revision  Changes    Path
  1.10      +15 -63    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.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- AbstractProviderTestCase.java	17 Feb 2003 09:22:16 -0000	1.9
  +++ AbstractProviderTestCase.java	20 Feb 2003 09:22:13 -0000	1.10
  @@ -56,7 +56,6 @@
   package org.apache.commons.vfs.test;
   
   import java.io.ByteArrayOutputStream;
  -import java.io.File;
   import java.io.InputStream;
   import java.lang.reflect.InvocationTargetException;
   import java.lang.reflect.Method;
  @@ -67,11 +66,7 @@
   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;
  -import org.apache.commons.vfs.provider.local.DefaultLocalFileProvider;
   
   /**
    * File system test cases, which verifies the structure and naming
  @@ -90,8 +85,6 @@
       private FileObject readFolder;
       private FileObject writeFolder;
       private DefaultFileSystemManager manager;
  -    private ProviderTestConfig providerConfig;
  -    private File tempDir;
       private Method method;
   
       // Expected contents of "file1.txt"
  @@ -100,12 +93,22 @@
       // Expected contents of test files
       public static final String TEST_FILE_CONTENT = "A test file.";
   
  -    /** Sets the provider test config, if any. */
  -    public void setConfig( final Method method,
  -                           final ProviderTestConfig providerConfig )
  +    /** Sets the test method. */
  +    public void setMethod( final Method method )
       {
           this.method = method;
  -        this.providerConfig = providerConfig;
  +    }
  +
  +    /** Configures this test. */
  +    public void setConfig( final DefaultFileSystemManager manager,
  +                           final FileObject baseFolder,
  +                           final FileObject readFolder,
  +                           final FileObject writeFolder )
  +    {
  +        this.manager = manager;
  +        this.baseFolder = baseFolder;
  +        this.readFolder = readFolder;
  +        this.writeFolder = writeFolder;
       }
   
       /**
  @@ -155,37 +158,6 @@
       }
   
       /**
  -     * Sets up the test
  -     */
  -    protected void setUp() throws Exception
  -    {
  -        // Locate the temp directory, and clean it up
  -        tempDir = getTestDirectory( "temp" );
  -        checkTempDir( "Temp dir not empty before test" );
  -
  -        // Create the file system manager
  -        manager = new DefaultFileSystemManager();
  -        manager.addProvider( "file", new DefaultLocalFileProvider() );
  -
  -        final DefaultFileReplicator replicator = new DefaultFileReplicator( tempDir );
  -        manager.setReplicator( new PrivilegedFileReplicator( replicator ) );
  -        manager.setTemporaryFileStore( replicator );
  -
  -        providerConfig.prepare( manager );
  -
  -        manager.init();
  -
  -        // Locate the base folders
  -        baseFolder = providerConfig.getBaseTestFolder( manager );
  -        readFolder = baseFolder.resolveFile( "read-tests" );
  -        writeFolder = baseFolder.resolveFile( "write-tests" );
  -
  -        // Make some assumptions about the read folder
  -        assertTrue( readFolder.exists() );
  -        assertFalse( readFolder.getName().getPath().equals( FileName.ROOT_PATH ) );
  -    }
  -
  -    /**
        * Runs the test.  This implementation short-circuits the test if the
        * provider being tested does not have the capabilities required by this
        * test.
  @@ -225,26 +197,6 @@
           else
           {
               super.runTest();
  -        }
  -    }
  -
  -    /**
  -     * Cleans-up test.
  -     */
  -    protected void tearDown() throws Exception
  -    {
  -        manager.close();
  -
  -        // Make sure temp directory is empty or gone
  -        checkTempDir( "Temp dir not empty after test" );
  -    }
  -
  -    /** Asserts that the temp dir is empty or gone. */
  -    private void checkTempDir( final String assertMsg )
  -    {
  -        if ( tempDir.exists() )
  -        {
  -            assertTrue( assertMsg, tempDir.isDirectory() && tempDir.list().length == 0 );
           }
       }
   
  
  
  
  1.8       +77 -4     jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/ProviderTestSuite.java
  
  Index: ProviderTestSuite.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/ProviderTestSuite.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ProviderTestSuite.java	12 Feb 2003 07:56:19 -0000	1.7
  +++ ProviderTestSuite.java	20 Feb 2003 09:22:13 -0000	1.8
  @@ -57,8 +57,18 @@
   
   import java.lang.reflect.Method;
   import java.lang.reflect.Modifier;
  +import java.io.File;
  +import java.util.Enumeration;
  +import junit.extensions.TestSetup;
   import junit.framework.TestSuite;
   import org.apache.commons.vfs.impl.test.VfsClassLoaderTests;
  +import org.apache.commons.vfs.impl.DefaultFileSystemManager;
  +import org.apache.commons.vfs.impl.DefaultFileReplicator;
  +import org.apache.commons.vfs.impl.PrivilegedFileReplicator;
  +import org.apache.commons.vfs.provider.local.DefaultLocalFileProvider;
  +import org.apache.commons.vfs.FileName;
  +import org.apache.commons.vfs.FileObject;
  +import org.apache.commons.AbstractVfsTestCase;
   
   /**
    * The suite of tests for a file system.
  @@ -67,10 +77,17 @@
    * @version $Revision$ $Date$
    */
   public class ProviderTestSuite
  -    extends TestSuite
  +    extends TestSetup
   {
       private final ProviderTestConfig providerConfig;
       private final String prefix;
  +    private final TestSuite testSuite;
  +
  +    private FileObject baseFolder;
  +    private FileObject readFolder;
  +    private FileObject writeFolder;
  +    private DefaultFileSystemManager manager;
  +    private File tempDir;
   
       /**
        * Adds the tests for a file system to this suite.
  @@ -85,6 +102,8 @@
                                  final boolean nested )
           throws Exception
       {
  +        super( new TestSuite() );
  +        testSuite = (TestSuite)fTest;
           this.providerConfig = providerConfig;
           this.prefix = prefix;
           addBaseTests();
  @@ -140,9 +159,63 @@
   
               // Create instance
               final AbstractProviderTestCase testCase = (AbstractProviderTestCase)testClass.newInstance();
  -            testCase.setConfig( method, providerConfig );
  +            testCase.setMethod( method );
               testCase.setName( prefix + method.getName() );
  -            addTest( testCase );
  +            testSuite.addTest( testCase );
  +        }
  +    }
  +
  +    protected void setUp() throws Exception
  +    {
  +        // Locate the temp directory, and clean it up
  +        tempDir = AbstractVfsTestCase.getTestDirectory( "temp" );
  +        checkTempDir( "Temp dir not empty before test" );
  +
  +        // Create the file system manager
  +        manager = new DefaultFileSystemManager();
  +        manager.addProvider( "file", new DefaultLocalFileProvider() );
  +
  +        final DefaultFileReplicator replicator = new DefaultFileReplicator( tempDir );
  +        manager.setReplicator( new PrivilegedFileReplicator( replicator ) );
  +        manager.setTemporaryFileStore( replicator );
  +
  +        providerConfig.prepare( manager );
  +
  +        manager.init();
  +
  +        // Locate the base folders
  +        baseFolder = providerConfig.getBaseTestFolder( manager );
  +        readFolder = baseFolder.resolveFile( "read-tests" );
  +        writeFolder = baseFolder.resolveFile( "write-tests" );
  +
  +        // Make some assumptions about the read folder
  +        assertTrue( readFolder.exists() );
  +        assertFalse( readFolder.getName().getPath().equals( FileName.ROOT_PATH ) );
  +
  +        // Configure the tests
  +        final Enumeration tests = testSuite.tests();
  +        while ( tests.hasMoreElements() )
  +        {
  +            final AbstractProviderTestCase test = (AbstractProviderTestCase)tests.nextElement();
  +            test.setConfig( manager, baseFolder, readFolder, writeFolder );
  +        }
  +    }
  +
  +    protected void tearDown() throws Exception
  +    {
  +        manager.close();
  +
  +        // Make sure temp directory is empty or gone
  +        checkTempDir( "Temp dir not empty after test" );
  +    }
  +
  +    /** Asserts that the temp dir is empty or gone. */
  +    private void checkTempDir( final String assertMsg )
  +    {
  +        if ( tempDir.exists() )
  +        {
  +            assertTrue( assertMsg, tempDir.isDirectory() && tempDir.list().length == 0 );
           }
       }
  +
   }
  
  
  

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