| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You 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. |
| --> |
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
| <HTML> |
| <HEAD> |
| <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8"> |
| <TITLE>JDO 3 TCK README</TITLE> |
| </HEAD> |
| <BODY LANG="en-US" DIR="LTR"> |
| <H1>The JDO 3.x Technology Compatibility Kit</H1> |
| <UL> |
| <LI><a href="#overview">Overview</a></LI> |
| <LI><a href="#prereqs">Prerequisites</a> |
| <UL> |
| <LI><a href="#maven">Maven</a></LI> |
| <LI><a href="#jndi">JNDI Implementation (for TCK)</a></LI> |
| </UL> |
| </LI> |
| <LI><a href="#api">Building the API</a></LI> |
| <LI><a href="#tck">Running the TCK</a> |
| <UL> |
| <LI><a href="#goals">Custom Goals</a></LI> |
| <LI><a href="#cli">Command Line Options</a></LI> |
| <LI><a href="#files">Files</a></LI> |
| <LI><a href="#examples">Examples</a></LI> |
| </UL></LI> |
| </UL> |
| <a name="overview"></a> |
| <H2>Overview of the JDO 3.x Technology Compatibility Kit</H2> |
| <p> |
| The JDO 3 project includes the following subprojects: |
| </p> |
| <UL> |
| <LI>api contains source to build jdo-api-3.x.jar, which defines the JDO API version 3.x for Java 1.5 and later.</LI> |
| <LI>copyjdorijars contains source to build jdo-api-3.x.jar, which defines the JDO API version 3.x for Java 1.5 and later.</LI> |
| <LI>exectck contains source to build the maven plugin to run the TCK the Reference Implementation (RI) |
| or an implementation under test (IUT) </LI> |
| <LI>tck contains the JDO 3.x Technology Compatibility Kit for Java 1.5 and later.</LI> |
| <LI>parent-pom contains the maven pom.xml that ties the projects together.</LI> |
| </UL> |
| <p> |
| JDO releases may be downloaded from <a href="http://db.apache.org/jdo/downloads.html">the Apache JDO downloads page</a>. |
| Minor updates of releases are only available as source from the Subversion repository. |
| Follow the instructions <a href="#building">below</a> to build the API from source. |
| <p> |
| For complete rules for certifying a JDO implementation, |
| see RunRules.html in the top level tck project directory. |
| </p> |
| <!-- When creating a new minor release branch, list changes from the major release here |
| |
| <a name="changes"></a> |
| <h2>Changes since the Major Release</h2> |
| <p> |
| </p> |
| |
| --> |
| <a name="prereqs"></a> |
| <h2>Prerequisites</h2> |
| <p> |
| You must install the software listed in the following sections |
| to successfully run the TCK. |
| Other dependencies, such as the reference implementation, DataNucleus, |
| and the Apache Derby database, are downloaded automatically by maven. |
| Note that Apache JDO uses the apache commons logging package for logging. |
| </p> |
| <a name="maven"></a> |
| <h3>Maven</h3> |
| <p> |
| You must have Maven version 2+ to build the projects from source and to execute |
| the TCK. You can download maven from http://maven.apache.org/download.html |
| </p><p> |
| Note that maven uses the user.home system property for the location |
| of the maven local repostitory: ${user.home}/.m2/repository. |
| Under Windows this system property is C:\Documents and Settings\<i>user</i> |
| no matter what the HOME variable is set to. As a workaround you may set the |
| system property by adding -Duser.home=%HOME% to the environment variable |
| MAVEN_OPTS. |
| </p> |
| <a name="jndi"></a> |
| <h3>JNDI Implementation (fscontext.jar and providerutil.jar)</h3> |
| <p> |
| The JNDI test cases in tck need a JNDI implementation. |
| The TCK is configured to use Sun's JNDI implementation. |
| To use your own implementation, put the implementation |
| jar files into <i>lib/ext</i> and update jndi.properties in the TCK directory |
| src/conf. To download Oracle's implementation, go to |
| <a href="http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#7110-jndi-1.2.1-oth-JPR"> |
| http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#7110-jndi-1.2.1-oth-JPR</a>. |
| Aaccept the license agreement and download <b>File System Service Provider, 1.2 Beta 3</b> and then unpack |
| the downloaded zip into <i>lib/ext</i>. It includes the jars fscontext.jar and providerutil.jar. |
| </p> |
| |
| <a name="building"></a> |
| <h2>Building from Top Level TCK Project</h2> |
| For instructions for checking out the JDO source, see the Apache JDO |
| <a href="http://db.apache.org/jdo/svn.html">source code</a> page. |
| |
| To build JDO with all subprojects go to the root directory of the branch you are working in (or trunk) |
| <pre>mvn clean install</pre> |
| This will build the artifacts <i>jdo-api</i> and <i>jdo-exectck</i> and will run the TCK. |
| |
| <a name="api"></a> |
| <h2>Building the API</h2> |
| |
| <p> |
| To build the API, change to the "api" directory of the branch you are working in (or trunk) and run |
| <pre>mvn clean install</pre> |
| This will build the <i>jdo-api</i> artifact and install it in your local Maven2 repository and |
| run the TCK on the Reference Implementation. |
| </p> |
| |
| <a name="tck"></a> |
| <h2>Running the TCK on an Implementation Under Test</h2> |
| <p> |
| First build the from the top level TCK project as described above. |
| To run the JDO TCK on an Implementation Under Test, copy the jars needed by the implementation |
| to the top-level lib/iut directory, as well as log4j.properties and log4j-1.2.13.jar. |
| The log4j jar file may be copied from lib/jdori. |
| </p> |
| <p> |
| Change to the "tck" directory of the branch you are working in (or trunk) and run |
| <pre>mvn -Djdo.tck.impl="iut" clean install</pre> and this will run the TCK |
| (via the "jdo-exectck" plugin) on the Implementation Under Test |
| on all supported databases and identity types. |
| </p> |
| <p> |
| The "jdo-exectck" plugin has various options so you can run other implementations or |
| only run particular tests. |
| </p> |
| <a name="goals"></a> |
| <h3>Custom Goals</h3> |
| mvn jdo-exectck:<goal> |
| <DL> |
| <DT>help</DT> |
| <DD>Displays help text describing custom goals and options</DD> |
| <DT>installSchema</DT> |
| <DD>Installs the database schema</DD> |
| <DT>enhance</DT> |
| <DD>enhances the test classes being used</DD> |
| <DT>runtck</DT> |
| <DD>Runs the TCK</DD> |
| </DL> |
| <a name="cli"></a> |
| <h3>Command Line Options</h3> |
| <DL> |
| <DT>-Djdo.tck.impl=<DD>either jdori (reference implementation) or iut (implementation under test). |
| <DT>-Djdo.tck.cfglist=<i>configuration file list</i><DD>Overrides the definition of jdo.tck.cfglist found in tck/src/conf/configuration.list by supplying one or more comma-separated test configuration files. Test configuration files typically have the .conf extension. To run a single test, create a .conf file (copy an existing file) and put the test into the jdo.tck.classes property. |
| <DT>-Djdo.tck.dblist=<i>database list</i><DD>Overrides the property value in project.properties by supplying one or more comma-separated database names. Currently only derby is supported. |
| <DT>-Djdo.tck.identitytypes=<i>identity type list</i><DD>Overrides the identity types to be run, supplying one or more comma-separated identity types ("applicationidentity" or "datastoreidentity") to use for this run. |
| <DT>-Dproject.lib.iut.directory=<DD>Location of implementation jar files. Default: ${basedir}/../lib/iut |
| <DT>-Djdo.tck.impl.logfile=<DD> Location of implementation log file. Default: ${user.dir}/datanucleus.txt |
| <DT>-Djdo.tck.doInstallSchema=<DD> Setting this parameter to false will bypass schema installation. |
| <DT>-Djdo.tck.doEnhance=<DD> Setting this parameter to false will bypass enhancement. |
| <DT>-Djdo.tck.doRunTCK=<DD> Setting this parameter to false will bypass running the TCK. |
| <DT>-Djdo.tck.runTCKVerbose=<DD> Setting this parameter to true will display test progress and error output while the TCK is running. |
| </DL> |
| <a name="examples"></a> |
| <h3>Examples</h3> |
| <DL> |
| <DT>mvn -Djdo.tck.identitytypes=datastoreidentity jdo-exectck:installSchema |
| <DD>Installs the database schema for datastore identity for all supported databases |
| |
| <DT>mvn -Djdo.tck.cfglist="alltests.conf cfg1.conf" jdo-exectck:runtck |
| <DD>Runs the test configurations specified in alltests.conf and cfg1.conf on the JDORI, using all supported identity types and databases. |
| </DL> |
| |
| <a name="files"></a> |
| <h3>Files</h3> |
| <p>While running the TCK, maven uses the following configuration files in src/conf: |
| <UL> |
| <LI>configurations.list |
| <br>A list of files. Each file listed is a test configuration file.</LI> |
| <LI>test configuration files (*.conf) |
| <br>Each of these files sets values for |
| <DL> |
| <DT>jdo.tck.testdescription</DT> |
| <DD>An optional string describing the purpose of these tests</DD> |
| <DT>jdo.tck.classes</DT> |
| <DD>A list of one or more test classes (required)</DD> |
| <DT>jdo.tck.testdata</DT> |
| <DD>The fully qualified file name of the xml test data file(optional)</DD> |
| <DT>jdo.tck.standarddata </DT> |
| <DD>The fully qualified file name of the xml test data file(optional)</DD> |
| <DT>jdo.tck.mapping </DT> |
| <DD>The file designator that maven.xml uses to build a javax.jdo.option.Mapping value and corresponding schema name (required)</DD> |
| </DL></LI> |
| <LI>exclude.list |
| <br>A list of test classes NOT to execute during a TCK test run</LI> |
| </UL> |
| |
| |
| |
| </BODY> |
| </HTML> |