Ahh ok, sorry for that! I run all the tests of a module at once. That leads to confusing results. Now I would also structure the tests in maven to run the derby tests per default. All other test must be invoked through different profiles.
Tobias On Mon, Jul 18, 2011 at 3:58 PM, Karl Wright <daddy...@gmail.com> wrote: > run-tests-framework only invokes the Derby tests. That's why you are > not seeing any others. > > Karl > > On Mon, Jul 18, 2011 at 9:50 AM, Tobias Rübner <d...@tobr.eu> wrote: > > Maybe I'm on the wrong track, but there are currently 2 modules (agents | > > pull-agent) containing 3 individual test cases (Derby, HSQLDB, > postgresql). > > In maven I run the test for the agents module and I thought I would end > up > > with 3 "Configuration file successfully read" messages, because each Test > > would like to create its own properties files. > > So, for building the framework with ant I supposed ending up with 6 > > "Configuration file successfully read" messages. > > > > Let's take as example the > > org.apache.manifoldcf.agents.tests.SanityPostgresqlTest of the agents > > module. > > On the localSetUp method of the parent class > > (org.apache.manifoldcf.core.tests.BasePostgresql) is > > org.apache.manifoldcf.core.database.DBInterfacePostgreSQL as database > > implementation class defined. > > I supposed to see this class name as implementationClass output in my > > previous message. > > > > Tobias > > > > > > > > On Mon, Jul 18, 2011 at 3:22 PM, Karl Wright <daddy...@gmail.com> wrote: > > > >> Each time you see "Configuration file successfully read" it indicates > >> that isInitialized must have been false. Since there is more than one > >> of these it is clear that in ant you are getting two process > >> initializations. This makes perfect sense in that two tests are being > >> invoked. So the process model is working as expected under ant. > >> > >> Do you mind telling us what "side effects" are you seeing? > >> > >> Karl > >> > >> > >> On Mon, Jul 18, 2011 at 9:12 AM, Tobias Rübner <d...@tobr.eu> wrote: > >> > 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 <daddy...@gmail.com> > 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 <daddy...@gmail.com> > >> 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 <daddy...@gmail.com> > >> 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 <d...@tobr.eu> > 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. > >> >> >>> > >> >> >> > >> >> > > >> >> > >> > > >> > > >