It may be time to set up a JDO 2 repository. There JPOX will be the RI, not an iut. Is there anything stopping us from doing this now, Michael? I think everything would be simpler if we had a real Apache repository now.

-- Michelle

[EMAIL PROTECTED] wrote:

thanks for the maven.xml file with the JPOX enhancer update. The JPOX
enhancer takes .jdo files as arguments and not the .class files of the
pc classes, correct?



Correct.



My idea is to use the JDORI enhancer during build.



In the JPOX Enhancer for JDO 2 we implement the Detachable interface in enhanced files. That's ok to use the JDORI enhancer if there are no detach/attach tests, but I can recall from the latest times we tried the JDORI enhancer, there were still some bugs there. Don't ask me what are they, I can't describe.

Running the TCK for a


particular JDO implementation is a separate step having special goals:
(1) Call 'maven useapplicationidentity' or 'maven usedatastoreidentity'
to copy the corresponding JDO metadata files.
(2) Run the enhancer.
(3) Call 'maven runtck' to start the TCK.
The project.properties files allows to specify an enhancer different
from the JDORI enhancer to be called in step (2). I think in your case
this would be the JPOX enhancer. Today there are only two properties:
enhancer.main and enhancer.options. So the maven enhancer goal assumes
the JDO implementation enhancer takes the class files as arguments. The
maven.xml you sent show that this was a wrong assumption. I will change
this and add a property enhancer.args to specify class files or metadata
files.

I know the current documentation is poor, so I need to improve there :-).

Regards Michael



Hi,

Here is the tck11/maven.xml file updated to use the JPOX enhancer.

I still can't run the tck because JPOX has a strictly validation of the
metadata, and one of these checks needs removal as it was clarified some
time ago by the EG that it's not needed.

Erik Bengtson

-----Original Message-----
From: Michelle Caisse [mailto:[EMAIL PROTECTED]
Sent: Friday, February 18, 2005 9:52 PM
To: [email protected]
Subject: Re: Steps to running the TCK against jpox & derby

Michelle Caisse wrote:




Hi, Michael and others,

Here's what I've done to get jpox and derby to run against the TCK, to




the point where they need to find tables in the database.

1. Put jpox-1.1.0-beta-1.jar in tck11/iut_jars.


and put derby.jar and derbytools.jar in tck11/iut_jars




2. Put log4j-1.2.9.jar in tck11/iut_jars. (jpox needed this.)
3 Edit tck11/project.properties:
# iut
iut.properties = ${basedir}/jpox.properties
4. Create jpox.properties:



javax.jdo.PersistenceManagerFactoryClass=org.jpox.PersistenceManagerFact
oryImpl



#javax.jdo.PersistenceManagerFactoryClass=org.apache.jdo.impl.fostore.FO
StorePMF



org.apache.jdo.ConnectionCreate=true



javax.jdo.option.ConnectionDriverName=org.apache.derby.jdbc.EmbeddedDriv
er



javax.jdo.option.ConnectionURL=jdbc:derby:jdotckdb
#javax.jdo.option.ConnectionURL=fostore:database/fostore
javax.jdo.option.ConnectionUserName=tckuser
javax.jdo.option.ConnectionPassword=tckuser
javax.jdo.option.Optimistic=false
javax.jdo.option.RetainValues=false
javax.jdo.option.RestoreValues=false
5. In the classpath section of tck11/maven.xml, place these lines
BEFORE the JDO jar file lines:
     <!-- Jar files for the implementation to be tested -->
     <path refid="test_iut_jars" />
else  [java] 1)



testGetObjectId(org.apache.jdo.tck.api.jdohelper.GetObjectId)javax.jdo.J
DOFatalUserException:



JDO 2.0 capabilities cannot be accessed! Please make sure that you do
not have a JDO 1.0 jar in front of the JDO 2 classes in your


CLASSPATH.



 [java]      at



org.jpox.AbstractPersistenceManagerFactory.<init>(AbstractPersistenceMan
agerFactory.java:113)



6. Manually create a derby database.  I'm using iut_jars as the derby
system directory, meaning that it looks there for databases and
derby.properties. I wrote some scripts to create the db.  The
procedure for deleting a derby database is an OS delete operation on
the directory and files.
7. Add the following line to maven.xml in the <goal
name="runtck.single" ...> section:
         <sysproperty key="derby.system.home"
value="${basedir}/iut_jars"/>

-- Michelle




------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<!--

   Copyright 2005 The Apache Software Foundation

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or


implied.


   See the License for the specific language governing permissions and
   limitations under the License.
-->

<project default="default"
   xmlns:j="jelly:core"
   xmlns:ant="jelly:ant"
   xmlns:maven="jelly:maven"
   >

   <!-- ==================== -->
   <!-- Default Global Goals -->
   <!-- ==================== -->

   <goal name="default">
       <attainGoal name="jar:install"/>
   </goal>

   <goal name="build">
       <attainGoal name="default"/>
   </goal>

   <goal name="rebuild">
       <attainGoal name="clean"/>
       <attainGoal name="build"/>
   </goal>

   <postGoal name="test:prepare-filesystem">
       <mkdir dir="${jdo.testdir}"/>
   </postGoal>

   <postGoal name="test:compile">
       <attainGoal name="copytestmetadata"/>
       <attainGoal name="jpoxenhance"/>
       <attainGoal name="database"/>
   </postGoal>

   <goal name="clobber" prereqs="clean">
       <delete>
           <fileset dir="." defaultexcludes="no" includes="**/*~"/>
       </delete>
   </goal>

   <!-- ================== -->
   <!-- Running test cases -->
   <!-- ================== -->

<goal name="runtck" prereqs="testrunner.set, database,


copyloggingprops">


<echo>Run all tck tests from testlist ${jdo.testlist}</echo>
<java fork="yes" dir="${jdo.testdir}"
classname="${jdo.testrunnerclass}">
<classpath refid="project.class.path"/>
<sysproperty key="testlist" value="${jdo.testlist}"/>
<sysproperty key="ResultPrinterClass"


value="${jdo.resultprinterclass}"/>


<sysproperty key="verbose" value="${verbose}"/>
<sysproperty key="PMFProperties" value="${iut.properties}"/>
<sysproperty key="PMF2Properties"


value="${basedir}/jdori2.properties"/>


       </java>
   </goal>

<!-- Run a single tck test. The property testcase defines the name of


-->


<!-- the tck test class w/o the prefix org.apache.jdo.tck, e.g.


-->


<!-- maven -Dtest=api.jdohelper.GetObjectId runtck.single -->
<goal name="runtck.single" prereqs="testrunner.set, database,


copyloggingprops">


<echo>Run tck test org.apache.jdo.tck.${test}</echo>
<java fork="yes" dir="${jdo.testdir}"
classname="org.apache.jdo.tck.${test}">
<classpath refid="project.class.path"/>
<sysproperty key="ResultPrinterClass"


value="${jdo.resultprinterclass}"/>


<sysproperty key="verbose" value="${verbose}"/>
<sysproperty key="PMFProperties" value="${iut.properties}"/>
<sysproperty key="PMF2Properties"


value="${basedir}/jdori2.properties"/>


       </java>
   </goal>

   <!-- ================ -->
   <!-- Enhancer support -->
   <!-- ================ -->

<preGoal name="enhance">
<available property="metadata.exists" file="${jdo.metadata.dir}"/>
<fail unless="metadata.exists"
message="Metadata directory does not exists, please use goals


useapplicationdirectory or usedatastoredirectory to setup the metadata."/>


<delete>
<fileset dir="${jdo.testclasses.dir}"
includes="${jdo.pcclasses.files}


${jdo.paclasses.files}"/>


           <fileset dir="${jdo.testclasses.dir}"
                    includes="**/*.jdo **/*jdoTest.properties"/>
       </delete>
       <attainGoal name="test:compile"/>
       <delete dir="${enhanced.dir}"/>
       <mkdir dir="${enhanced.dir}"/>
   </preGoal>

   <goal name="enhance">
       <echo>Run enhancer</echo>
       <java fork="yes" failonerror="yes" dir="${jdo.testclasses.dir}"
             classname="${enhancer.main}"
             classpathref="project.class.path">
            <arg line="${enhancer.options}"/>
            <arg line="${jdo.pcclasses.files}"/>
            <arg line="${jdo.paclasses.files}"/>
       </java>
   </goal>

   <goal name="jdorienhance">
       <echo>Run JDORI enhancer</echo>
       <java fork="yes" failonerror="yes" dir="${jdo.testclasses.dir}"
             classname="${jdo.enhancer.main}"
             classpath="${jdo.enhancer.classpath}">
            <arg line="${jdo.enhancer.options}"/>
            <arg line="${jdo.pcclasses.files}"/>
            <arg line="${jdo.paclasses.files}"/>
       </java>
   </goal>

<goal name="jpoxenhance">
<!-- Construct FileSet of JDO meta-data files -->
<fileset dir="${jdo.testclasses.dir}" id="jdo.files"


includes="**/*.jd*"/>


<pathconvert pathsep=" " property="jdoMetaDataFiles"


refid="jdo.files"/>


       <!-- Run enhancer on JDO files -->
       <java classname="org.jpox.enhancer.JPOXEnhancer"
           failonerror="true"
           fork="true">
           <classpath refid="project.class.path"/>

           <arg line="${jdoMetaDataFiles}"/>
       </java>

<echo>Classes are now JDO-enhanced for JPOX test scenario


"${maven.jpoxtest.name}"</echo>


   </goal>

   <!-- ================ -->
   <!-- Metadata support -->
   <!-- ================ -->

<goal name="usedatastoreidentity">
<mkdir dir="${jdo.metadata.dir}"/>
<delete>
<fileset dir="${jdo.metadata.dir}"
includes="**/*.jdo, **/*jdoTest.properties"/>
</delete>
<copy todir="${jdo.metadata.dir}">
<fileset dir="${basedir}/test"
includes="**/*jdoTest.properties.d"/>
<mapper type="glob" from="*jdoTest.properties.d"


to="*jdoTest.properties" />


       </copy>
       <copy todir="${jdo.metadata.dir}">
           <fileset dir="${basedir}/test" includes="**/*.jdo.d"/>
           <mapper type="glob" from="*.jdo.d" to="*.jdo" />
       </copy>
   </goal>

<goal name="useapplicationidentity">
<mkdir dir="${jdo.metadata.dir}"/>
<delete>
<fileset dir="${jdo.metadata.dir}"
includes="**/*.jdo, **/*jdoTest.properties"/>
</delete>
<copy todir="${jdo.metadata.dir}">
<fileset dir="${basedir}/test"
includes="**/*jdoTest.properties.a"/>
<mapper type="glob" from="*jdoTest.properties.a"


to="*jdoTest.properties"/>


       </copy>
       <copy todir="${jdo.metadata.dir}">
           <fileset dir="${basedir}/test" includes="**/*.jdo.a"/>
           <mapper type="glob" from="*.jdo.a" to="*.jdo" />
       </copy>
   </goal>

<goal name="copytestmetadata">
<delete>
<fileset dir="${jdo.testclasses.dir}"
includes="**/*.jdo, **/*jdoTest.properties"/>
</delete>
<copy todir="${jdo.testclasses.dir}">
<fileset dir="${basedir}/test"
includes="**/*jdoTest.properties.d"/>
<mapper type="glob" from="*jdoTest.properties.d"


to="*jdoTest.properties" />


       </copy>
       <copy todir="${jdo.testclasses.dir}">
           <fileset dir="${basedir}/test" includes="**/*.jdo.d"/>
           <mapper type="glob" from="*.jdo.d" to="*.jdo" />
       </copy>
   </goal>

   <!-- ========= -->
   <!-- Classpath -->
   <!-- ========= -->

   <path id="test_iut_jars" >
       <fileset dir="iut_jars" includes="*.jar"/>
   </path>

   <path id="project.class.path">
       <!-- Directory where enhanced class files are located  -->
       <pathelement location="${enhanced.dir}"/>
       <!-- Directory where .jdo files are located  -->
       <pathelement location="${jdo.metadata.dir}"/>
       <!-- Directory where JDOTCK class files are located  -->
       <pathelement location="${jdo.testclasses.dir}"/>
       <!-- JDO jar file  -->
       <pathelement location="${jdo.jdoapi.jarfile}"/>
       <!-- Jar files for the implementation to be tested -->
       <path refid="test_iut_jars" />
       <!-- JUnit jar file -->
       <pathelement location="${junit.jarfile}"/>
       <!-- Spring jar files -->
       <pathelement location="${spring.jarfile}"/>
       <pathelement location="${logging.jarfile}"/>
       <!-- Jar files for the reference implementation -->
       <pathelement location="${jdo.jdori.jarfile}" />
       <pathelement location="${jdo.jdobtree.jarfile}" />
       <pathelement location="${antlr.jarfile}" />
       <pathelement location="${jta.jarfile}" />
       <pathelement location="${xmlparser}" />
   </path>

   <!-- ==== -->
   <!-- Misc -->
   <!-- ==== -->

   <goal name="database">
       <mkdir dir="${jdo.testdir}/database" />
   </goal>

   <goal name="testrunner.set">
      <condition property="jdo.testrunnerclass"
                 value="org.apache.jdo.tck.util.SwingTestRunner">
          <istrue value="${gui}"/>
      </condition>
      <condition property="jdo.testrunnerclass"
                 value="org.apache.jdo.tck.util.BatchTestRunner">
          <isfalse value="${gui}"/>
      </condition>
   </goal>

   <goal name="copyloggingprops">
       <copy todir="${jdo.testclasses.dir}" >
           <fileset dir="${basedir}">
              <include name="commons-logging.properties"/>
              <include name="simplelog.properties"/>
              <include name="logging.properties"/>
           </fileset>
       </copy>
   </goal>

</project>


--
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