[ 
https://issues.apache.org/jira/browse/DIRSERVER-1575?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Emmanuel Lecharny updated DIRSERVER-1575:
-----------------------------------------

    Fix Version/s: 2.0.0-RC1

> AbstractLdapTestUnit fails with more than one @Test when partition located 
> within service's working directory
> -------------------------------------------------------------------------------------------------------------
>
>                 Key: DIRSERVER-1575
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-1575
>             Project: Directory ApacheDS
>          Issue Type: Bug
>    Affects Versions: 1.5.7
>         Environment: Windows 7
> JDK 1.5.0_22, also happens with 1.6.0_21
>            Reporter: Andrew Swan
>            Priority: Minor
>             Fix For: 2.0.0-RC1
>
>
> Problem
> ~~~~~~~
> In my subclass of AbstractLdapTestUnit, I'm creating a custom Partition for 
> my test LDAP entries. However if I locate this partition within the 
> DirectoryService's working directory, and my test case has more than one 
> @Test method, then after the test methods run (successfully), the test case 
> fails with this error:
> java.io.IOException: Unable to delete file: 
> E:\Temp\server-work-default02f53ef4-636e-4edf-a812-0a76ce27e399\myPartition\objectClass.lg
>       at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:1390)
>       at org.apache.commons.io.FileUtils.cleanDirectory(FileUtils.java:1044)
>       at org.apache.commons.io.FileUtils.deleteDirectory(FileUtils.java:977)
>       at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:1381)
>       at org.apache.commons.io.FileUtils.cleanDirectory(FileUtils.java:1044)
>       at org.apache.commons.io.FileUtils.deleteDirectory(FileUtils.java:977)
>       at 
> org.apache.directory.server.core.integ.FrameworkRunner.run(FrameworkRunner.java:259)
>       at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
>       at 
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
> Failing Test
> ~~~~~~~~~
> package au.com.bisinfo.ldap;
> import java.io.File;
> import org.apache.directory.server.annotations.CreateLdapServer;
> import org.apache.directory.server.annotations.CreateTransport;
> import org.apache.directory.server.core.integ.AbstractLdapTestUnit;
> import org.apache.directory.server.core.integ.FrameworkRunner;
> import 
> org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmPartition;
> import org.junit.Before;
> import org.junit.Test;
> import org.junit.runner.RunWith;
> @RunWith(FrameworkRunner.class)
> @CreateLdapServer(transports = @CreateTransport(protocol = "ldap"))
> public class ApacheBugTest extends AbstractLdapTestUnit {
>     @Before
>     public void setUp() throws Exception {
>         final File partitionDirectory =
>             new File(service.getWorkingDirectory(), "myPartition");
>         
>         final JdbmPartition partition = new JdbmPartition();
>         partition.setId("anything");
>         partition.setPartitionDir(partitionDirectory);
>         partition.setSchemaManager(service.getSchemaManager());
>         partition.setSuffix("dc=example,dc=com");   // anything
>         service.addPartition(partition);
>     }
>     
>     @Test public void test() { System.out.println("Dummy test"); }
>     
>     @Test public void test2() { System.out.println("Dummy test 2"); }
> }
> Maven 2 Dependencies
> ~~~~~~~~~~~~~~~~~~~
>               <dependency>
>                       <groupId>org.apache.directory.server</groupId>
>                       <artifactId>apacheds-test-framework</artifactId>
>                       <version>1.5.7</version>
>               </dependency>
>               <dependency>
>                       <groupId>org.apache.directory.server</groupId>
>                       <artifactId>apacheds-server-integ</artifactId>
>                       <version>1.5.7</version>
>               </dependency>
> Workarounds
> ~~~~~~~~~~~
> I can make this test pass by either:
> * Only having one test method per test case (not very convenient), or
> * Locating the partition somewhere outside the working directory of the 
> DirectoryService. But even in this case, I still get the "Unable to delete 
> file" error if I try to clean up the partition directory from an @After or 
> @AfterClass method.
> Ideas
> ~~~~
> From looking at the source for jdbm.recman.TransactionManager, objectClass.lg 
> is a JDBM log file. Is this bug simply a case of that file not being closed 
> when it should be (e.g. when the DirectoryService shuts down)? Is this bug 
> related to DIRSERVER-1348 in some way?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to