I rerun the tests with ant and ended up with the same side effects.
I did a svn update and added some logging information to the framework.
Now I'm logging the database implemention class (DBInterfaceFactory -
make()) and the initialization status on the Manifold class
(initializeEnvironment()).
I started the ant build from the mcf root directory with the following
command:
"ant clean build run-tests-framework"


run-tests:
    [mkdir] Created dir:
/home/tobr/dev/workspace/apache-mcf/framework/test-output
    [junit] Configuration file successfully read
    [junit] implementationClass:
org.apache.manifoldcf.core.database.DBInterfaceDerby
    [junit] implementationClass:
org.apache.manifoldcf.core.database.DBInterfaceDerby
    [junit] isInitialized: true
    [junit] implementationClass:
org.apache.manifoldcf.core.database.DBInterfaceDerby
    [junit] implementationClass:
org.apache.manifoldcf.core.database.DBInterfaceDerby
    [junit] isInitialized: true
    [junit] implementationClass:
org.apache.manifoldcf.core.database.DBInterfaceDerby
    [junit] implementationClass:
org.apache.manifoldcf.core.database.DBInterfaceDerby
    [junit] implementationClass:
org.apache.manifoldcf.core.database.DBInterfaceDerby
    [junit] Configuration file successfully read
    [junit] implementationClass:
org.apache.manifoldcf.core.database.DBInterfaceDerby
    [junit] isInitialized: true
    [junit] implementationClass:
org.apache.manifoldcf.core.database.DBInterfaceDerby
    [junit] isInitialized: true
    [junit] implementationClass:
org.apache.manifoldcf.core.database.DBInterfaceDerby
    [junit] implementationClass:
org.apache.manifoldcf.core.database.DBInterfaceDerby
    [junit] implementationClass:
org.apache.manifoldcf.core.database.DBInterfaceDerby
    [junit] isInitialized: true
    [junit] implementationClass:
org.apache.manifoldcf.core.database.DBInterfaceDerby
    [junit] implementationClass:
org.apache.manifoldcf.core.database.DBInterfaceDerby

BUILD SUCCESSFUL




On Mon, Jul 18, 2011 at 2:49 PM, Karl Wright <[email protected]> wrote:

> Looking at this a little more, the proper cleanup of a ManifoldCF
> process requires that the shutdown thread be run.  This thread is
> added as a shutdown hook to the JVM.  The "alreadyClosed" flag is used
> to prevent it from being run more than once if more than one shutdown
> signal is received, since it's also executed during object
> finalization (so that we catch termination within Tomcat and other
> application servers).
>
> So, basically, ManifoldCF.isInitialized and ManifoldCF.alreadyClosed
> perform this coordinated dance on a per-JVM basis.  ManifoldCF system
> initialization is meant to occur once per JVM.  Without starting and
> stopping a JVM, it's therefore not a realistic test.  Is there any way
> for Maven to run each test class in its own JVM, or does it insist on
> running them all within one?
>
> If there is no such possibility, we can look to adding a manual
> shutdown thread invocation in a reset method.  There are lots of
> potential problems with this approach in that dangling temporary
> threads that are waiting forever on sockets etc might be left around
> from previous tests, and other JVM static state such as the cache
> might also not get cleared, but the tests would probably execute
> nonetheless.
>
> Karl
>
>
> On Mon, Jul 18, 2011 at 8:26 AM, Karl Wright <[email protected]> wrote:
> > I think the likely difference is that ant is running each test in its
> > own JVM, and Maven is not.
> >
> > Now, it is straightforward enough to add functionality that resets the
> > ManifoldCF core classes, and tie that into the tests.  However, that
> > is not how ManifoldCF will be used in practice.  The concern I have is
> > that there are other static variables (for instance, the cache
> > manager) which are never "reset", but would be if we need to "start
> > from scratch" again inside the same JVM every time a test is run.
> > Identifying all such cases may take some time.
> >
> > Karl
> >
> >
> > On Mon, Jul 18, 2011 at 8:04 AM, Karl Wright <[email protected]> wrote:
> >> These tests run fine under ant, but the ant build invokes test files
> >> explicitly.  I'm not quite sure what Ant's behavior is here, and how
> >> exactly it differs from Maven's.
> >>
> >> Karl
> >>
> >> On Mon, Jul 18, 2011 at 7:41 AM, Tobias Rübner <[email protected]> wrote:
> >>> The unit tests are currently not working.
> >>> The first test in a module creates the properties and logging files and
> >>> initializes the framework.
> >>> All following tests are also creating those files, but because the
> framework
> >>> is already initialized, they are useless.
> >>>
> >>> This depends on the static behaviour of ManifoldCF.isInitialized.
> >>> After a test is done the ManifoldCF Object should also be reseted.
> >>>
> >>
> >
>

Reply via email to