db-jdo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From e...@jpox.org
Subject Re: Steps to running the TCK against jpox & derby
Date Mon, 21 Feb 2005 16:54:18 GMT
> 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:Michelle.Caisse@Sun.COM]
> > Sent: Friday, February 18, 2005 9:52 PM
> > To: jdo-dev@db.apache.org
> > 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		Tech@Spree Engineering GmbH
> mailto:mbo.tech@spree.de	http://www.tech.spree.de/
> Tel.:++49/30/235 520-33		Buelowstr. 66
> Fax.:++49/30/2175 2012		D-10783 Berlin
>




Mime
View raw message