Hi Michelle,

this looks very good!

I have some minor questions/remarks below ...


TestRunner is a project to automate running the TCK for all databases, identity types, security settings, schemas, mappings, and test cases with a single maven invocation. We discussed doing the hard stuff either in maven or with an extended java/JUnit TestRunner. It seems possible to do it in maven. Below is a working outline of a maven goal that loops through the various parameters and repeatedly executes a test run, followed by the results generated by this goal.

_______________
maven.xml:
_______________

<project default="default"
   xmlns:j="jelly:core"
   xmlns:ant="jelly:ant"
   xmlns:maven="jelly:maven"
   xmlns:u="jelly:util"
   >
...
   <!-- ================== -->
   <!-- Running test cases -->
   <!-- ================== -->

   <preGoal name="runallcfgs.jdori">

       <!-- Install schema for each database -->
       <u:properties file="${basedir}/test/conf/db.list"/>
       <u:tokenize var="jdo.tck.dblist" delim=" ">
           ${jdo.tck.dblist}
       </u:tokenize>

Question: The property jdo.tck.dblist is a string of database names separated by space and the tokenize tag converts this string into a collection of strings (one string per database) such that you can use the forEach tag to iterate it. Am I right?

The forEach tag allows to directly iterate a comma separated String (see
http://jakarta.apache.org/commons/jelly/tags.html#core:forEach). So if we define jdo.tck.dblist as comma separated string we do not need the tokenize:
jdo.tck.dblist=derby, mysql, oracle

       <j:forEach var="jdo.tck.db" items="${jdo.tck.dblist}">
           <attainGoal name="databaseStub"/>
       </j:forEach>

       <!-- Enhance and build jar file for each identity type -->
       <u:properties file="${basedir}/test/conf/identity.list"/>
       <u:tokenize var="jdo.tck.idlist" delim=" ">
           ${jdo.tck.idlist}
       </u:tokenize>
       <j:forEach var="jdo.tck.id" items="${jdo.tck.idlist}">
           <attainGoal name="enhanceStub"/>
       </j:forEach>

   </preGoal>

<goal name="runallcfgs.jdori" prereqs="java:compile, testrunner.set, copyprops">

<!-- Run tests for all databases, identity types, and configurations -->
       <j:forEach var="jdo.tck.db" items="${jdo.tck.dblist}">
           <j:forEach var="jdo.tck.id" items="${jdo.tck.idlist}">
<u:properties file="${basedir}/test/conf/configurations.list"/>

Is there any reason to load the configurations properties here instead of doing this in the preGoal along with the other properties files? I think having the <u:properties> tag as part of the inner loop means the file is loaded multiple times. Or does the file configurations.list refer any properties that are changed in the loops?

Regards Michael

               <u:tokenize var="jdo.tck.cfglist" delim=" ">
                   ${jdo.tck.cfglist}
               </u:tokenize>
               <j:forEach var="jdo.tck.cfg" items="${jdo.tck.cfglist}">
<!-- get jdo.tck.classes (list of testclasses), jdo.tck.testdata, jdo.tck.mapping --> <u:properties file="${basedir}/test/conf/${jdo.tck.cfg}"/>
                   <attainGoal name="runtckStub"/>
               </j:forEach>
           </j:forEach>
       </j:forEach>

   </goal>

   <goal name="databaseStub">
       <echo>Install schema in ${jdo.tck.db}</echo>
   </goal>

   <goal name="enhanceStub">
       <echo>Enhance classes for ${jdo.tck.id}</echo>
   </goal>

   <goal name="runtckStub">
       <echo>Run tck using database ${jdo.tck.db},
                identity type ${jdo.tck.id},
                configuration ${jdo.tck.cfg}
       </echo>
       <echo>Run test classes ${jdo.tck.classes}
               with test data ${jdo.tck.testdata}
               and mapping/schema files ${jdo.tck.mapping}
       </echo>
   </goal>

_______________
Results:
_______________
$ maven -o runallcfgs.jdori
__  __
|  \/  |__ _Apache__ ___
| |\/| / _` \ V / -_) ' \  ~ intelligent projects ~
|_|  |_\__,_|\_/\___|_||_|  v. 1.0.2

You are working offline so the build will continue, but jpox-SNAPSHOT.jar may be out of date! You are working offline so the build will continue, but jdo2-api-SNAPSHOT.jar may be out of date! You are working offline so the build will continue, but jpox-enhancer-SNAPSHOT.jar may be out of date!
build:start:

java:prepare-filesystem:

java:compile:
   [echo] Compiling to c:\svn5\jdo\trunk\tck20/target/classes

testrunner.set:

copyprops:

runallcfgs.jdori:
databaseStub:
   [echo] Install schema in derby

databaseStub:
   [echo] Install schema in mysql

databaseStub:
   [echo] Install schema in oracle

enhanceStub:
   [echo] Enhance classes for application

enhanceStub:
   [echo] Enhance classes for datastore

runtckStub:
   [echo] Run tck using database derby,
                identity type application,
                configuration cfg1.conf

[echo] Run test classes org.apache.jdo.tck.api.jdohelper.GetObjectIdForNull org.apache.jdo.tck.api.jdohelper.GetObjectIdForTransient org.apache.jdo.tck.api.jdohelper.GetObjectIdNotPersistenceCapable org.apache.jdo.tck.api.jdohelper.GetPersistenceManager org.apache.jdo.tck.api.jdohelper.GetPersistenceManagerForNull org.apache.jdo.tck.api.jdohelper.GetPersistenceManagerForTransient org.apache.jdo.tck.api.jdohelper.GetPersistenceManagerNotPersistenceCapable org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectId org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectIdForNull org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectIdForTransient org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectIdNotPersistenceCapable
               with test data
               and mapping/schema files


runtckStub:
   [echo] Run tck using database derby,
                identity type application,
                configuration cfg2.conf

[echo] Run test classes org.apache.jdo.tck.mapping.CompanyModelCompletenessTest
               with test data org.apache.jdo.tck.pc.company.company.xml
and mapping/schema files org.apache.jdo.tck.pc.company.company.orm


runtckStub:
   [echo] Run tck using database derby,
                identity type application,
                configuration cfg3.conf

[echo] Run test classes org.apache.jdo.tck.mapping.CompanyModelCompletenessTest
               with test data org.apache.jdo.tck.pc.company.company2.xml
and mapping/schema files org.apache.jdo.tck.pc.company.company2.orm


runtckStub:
   [echo] Run tck using database derby,
                identity type datastore,
                configuration cfg1.conf

[echo] Run test classes org.apache.jdo.tck.api.jdohelper.GetObjectIdForNull org.apache.jdo.tck.api.jdohelper.GetObjectIdForTransient org.apache.jdo.tck.api.jdohelper.GetObjectIdNotPersistenceCapab le org.apache.jdo.tck.api.jdohelper.GetPersistenceManager org.apache.jdo.tck.api.jdohelper.GetPersistenceManagerForNull org.apache.jdo.tck.api.jdohelper.GetPersistenceManagerForTransient org.apache.jd o.tck.api.jdohelper.GetPersistenceManagerNotPersistenceCapable org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectId org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectIdForNull org.apache.jdo .tck.api.jdohelper.GetTransactionalObjectIdForTransient org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectIdNotPersistenceCapable
               with test data
               and mapping/schema files


runtckStub:
   [echo] Run tck using database derby,
                identity type datastore,
                configuration cfg2.conf

[echo] Run test classes org.apache.jdo.tck.mapping.CompanyModelCompletenessTest
               with test data org.apache.jdo.tck.pc.company.company.xml
and mapping/schema files org.apache.jdo.tck.pc.company.company.orm


runtckStub:
   [echo] Run tck using database derby,
                identity type datastore,
                configuration cfg3.conf

[echo] Run test classes org.apache.jdo.tck.mapping.CompanyModelCompletenessTest
               with test data org.apache.jdo.tck.pc.company.company2.xml
and mapping/schema files org.apache.jdo.tck.pc.company.company2.orm


runtckStub:
   [echo] Run tck using database mysql,
                identity type application,
                configuration cfg1.conf

[echo] Run test classes org.apache.jdo.tck.api.jdohelper.GetObjectIdForNull org.apache.jdo.tck.api.jdohelper.GetObjectIdForTransient org.apache.jdo.tck.api.jdohelper.GetObjectIdNotPersistenceCapab le org.apache.jdo.tck.api.jdohelper.GetPersistenceManager org.apache.jdo.tck.api.jdohelper.GetPersistenceManagerForNull org.apache.jdo.tck.api.jdohelper.GetPersistenceManagerForTransient org.apache.jd o.tck.api.jdohelper.GetPersistenceManagerNotPersistenceCapable org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectId org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectIdForNull org.apache.jdo .tck.api.jdohelper.GetTransactionalObjectIdForTransient org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectIdNotPersistenceCapable
               with test data
               and mapping/schema files


runtckStub:
   [echo] Run tck using database mysql,
                identity type application,
                configuration cfg2.conf

[echo] Run test classes org.apache.jdo.tck.mapping.CompanyModelCompletenessTest
               with test data org.apache.jdo.tck.pc.company.company.xml
and mapping/schema files org.apache.jdo.tck.pc.company.company.orm


runtckStub:
   [echo] Run tck using database mysql,
                identity type application,
                configuration cfg3.conf

[echo] Run test classes org.apache.jdo.tck.mapping.CompanyModelCompletenessTest
               with test data org.apache.jdo.tck.pc.company.company2.xml
and mapping/schema files org.apache.jdo.tck.pc.company.company2.orm


runtckStub:
   [echo] Run tck using database mysql,
                identity type datastore,
                configuration cfg1.conf

[echo] Run test classes org.apache.jdo.tck.api.jdohelper.GetObjectIdForNull org.apache.jdo.tck.api.jdohelper.GetObjectIdForTransient org.apache.jdo.tck.api.jdohelper.GetObjectIdNotPersistenceCapable org.apache.jdo.tck.api.jdohelper.GetPersistenceManager org.apache.jdo.tck.api.jdohelper.GetPersistenceManagerForNull org.apache.jdo.tck.api.jdohelper.GetPersistenceManagerForTransient org.apache.jdo.tck.api.jdohelper.GetPersistenceManagerNotPersistenceCapable org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectId org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectIdForNull org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectIdForTransient org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectIdNotPersistenceCapable
               with test data
               and mapping/schema files


runtckStub:
   [echo] Run tck using database mysql,
                identity type datastore,
                configuration cfg2.conf

[echo] Run test classes org.apache.jdo.tck.mapping.CompanyModelCompletenessTest
               with test data org.apache.jdo.tck.pc.company.company.xml
and mapping/schema files org.apache.jdo.tck.pc.company.company.orm


runtckStub:
   [echo] Run tck using database mysql,
                identity type datastore,
                configuration cfg3.conf

[echo] Run test classes org.apache.jdo.tck.mapping.CompanyModelCompletenessTest
               with test data org.apache.jdo.tck.pc.company.company2.xml
and mapping/schema files org.apache.jdo.tck.pc.company.company2.orm


runtckStub:
   [echo] Run tck using database oracle,
                identity type application,
                configuration cfg1.conf

[echo] Run test classes org.apache.jdo.tck.api.jdohelper.GetObjectIdForNull org.apache.jdo.tck.api.jdohelper.GetObjectIdForTransient org.apache.jdo.tck.api.jdohelper.GetObjectIdNotPersistenceCapable org.apache.jdo.tck.api.jdohelper.GetPersistenceManager org.apache.jdo.tck.api.jdohelper.GetPersistenceManagerForNull org.apache.jdo.tck.api.jdohelper.GetPersistenceManagerForTransient org.apache.jdo.tck.api.jdohelper.GetPersistenceManagerNotPersistenceCapable org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectId org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectIdForNull org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectIdForTransient org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectIdNotPersistenceCapable
               with test data
               and mapping/schema files


runtckStub:
   [echo] Run tck using database oracle,
                identity type application,
                configuration cfg2.conf

[echo] Run test classes org.apache.jdo.tck.mapping.CompanyModelCompletenessTest
               with test data org.apache.jdo.tck.pc.company.company.xml
and mapping/schema files org.apache.jdo.tck.pc.company.company.orm


runtckStub:
   [echo] Run tck using database oracle,
                identity type application,
                configuration cfg3.conf

[echo] Run test classes org.apache.jdo.tck.mapping.CompanyModelCompletenessTest
               with test data org.apache.jdo.tck.pc.company.company2.xml
and mapping/schema files org.apache.jdo.tck.pc.company.company2.orm


runtckStub:
   [echo] Run tck using database oracle,
                identity type datastore,
                configuration cfg1.conf

[echo] Run test classes org.apache.jdo.tck.api.jdohelper.GetObjectIdForNull org.apache.jdo.tck.api.jdohelper.GetObjectIdForTransient org.apache.jdo.tck.api.jdohelper.GetObjectIdNotPersistenceCapable org.apache.jdo.tck.api.jdohelper.GetPersistenceManager org.apache.jdo.tck.api.jdohelper.GetPersistenceManagerForNull org.apache.jdo.tck.api.jdohelper.GetPersistenceManagerForTransient org.apache.jdo.tck.api.jdohelper.GetPersistenceManagerNotPersistenceCapable org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectId org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectIdForNull org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectIdForTransient org.apache.jdo.tck.api.jdohelper.GetTransactionalObjectIdNotPersistenceCapable
               with test data
               and mapping/schema files


runtckStub:
   [echo] Run tck using database oracle,
                identity type datastore,
                configuration cfg2.conf

[echo] Run test classes org.apache.jdo.tck.mapping.CompanyModelCompletenessTest
               with test data org.apache.jdo.tck.pc.company.company.xml
and mapping/schema files org.apache.jdo.tck.pc.company.company.orm


runtckStub:
   [echo] Run tck using database oracle,
                identity type datastore,
                configuration cfg3.conf

[echo] Run test classes org.apache.jdo.tck.mapping.CompanyModelCompletenessTest
               with test data org.apache.jdo.tck.pc.company.company2.xml
and mapping/schema files org.apache.jdo.tck.pc.company.company2.orm

BUILD SUCCESSFUL

-- Michelle


--
Michael Bouschen                [EMAIL PROTECTED] Engineering GmbH
mailto:[EMAIL PROTECTED]        http://www.tech.spree.de/
Tel.:++49/30/235 520-33         Buelowstr. 66                   
Fax.:++49/30/2175 2012          D-10783 Berlin                  

Reply via email to