Jump to: navigation, search


Running the foundation LRG

The foundation tests consist of an LRG (long regression), SRG (short regression), and various non-classified tests (non-LRG). If any code was changed in org.eclipse.persistence.core it is recommended to run the LRG. If minimal changes were made, the SRG is sufficient. Depending on what was changed, running some of the non-LRG tests may also be desirable.

There are several ways to run the tests:

  • Ant (1.7 or greater)
  • Eclipse JUnit
  • Testing Browser

Prior to running the tests, a build.properties file must exist in your user home directory with the following properties:

  • junit.lib=<full path of junit 4 jar>;<full path of hamcrest-core jar>
  • jdbc.driver.jar=<full path to your JDBC driver>
  • db.driver=<classname of your JDBC driver>
  • db.url=<JDBC url of your DB>
  • db.user=<db username>
  • db.pwd=<db password>
  • (optional) db.platform=<EclipseLink Database Platform to use> - this is only necessary if EclipseLink does not properly detect your DB platform with the "database detection" feature

Alternative approach is to move database related properties (jdbc.driver.jar, db.*) to an extra file and pass this file to the Ant build using '-Dtest.properties=<path to custom properties file>' option


The tests can be run from two ant build scripts

1. The base antbuild.xml (in repository root)

You can run the following targets:

  • test-core - run the Core LRG
  • test-core-srg - run the Core SRG

2. The antbuild.xml script in foundation/eclipselink.core.test

  • test-lrg - run the Core LRG
  • test-srg - run the Core SRG

Test logging will appear on Standard out and Standard Error. Test results will appear in foundation/eclipselink.core.test/reports

Eclipse JUnit

The eclipselink.core.test Eclipse project contains launch targets to run the LRG or SRG through the Eclipse JUnit integration.

Note that the majority of the foundation tests are built using a legacy test framework which has been migrated to extend JUnit. One issue is that the total number of tests are unknown before the tests are setup, so the progress bar in Eclipse will not be accurate.

Ensure the following (Java | Build Path | Classpath Variables) are set:

  • ECLIPSELINK_HOME variable has been mapped to your local Git clone root folder
  • JDBC_LIB variable has been mapped to your database's JDBC driver (vendor-agnostic driver)

If alternative approach for defining test related properties was taken, make sure to update reference in particular Run Configuration -> Arguments -> VM arguments section to be pointing to this new file. Look for line containing '-Dtest.properties=...'.

Testing Browser

Early in its existence, this product was tested with an in-house testing framework. A large number of tests are still available through this test framework. Testing is gradually being migrated to frameworks such as JUnit, but the GUI tool available in the legacy framework is still quite useful for testing. The code for this test framework is stored in the eclipselink.core.test project.

The eclipselink.core.test Eclipse project contains launch targets in the eclipselink.core.test/run directory to run the Testing Browser. Prior to running that target, you should run the "process-resource" target in the build.xml file in eclipselink.core.test (If you have run a full build, it will have been run already). Launching the browser is a matter of running that build target.

When you run the test target:

  1. Input your DB login information. You can do this by selecting a value from the "Quick Login" drop box and then edit the form on the right side of the GUI with any information that is different from what is already populated
  2. Run either the SRGTestModel or the LRGTestModel listed on the right side of the GUI by selecting it and then clicking the "Run Test" button.
  3. You can run tests individually by navigating to them. You can open folders by double-clicking on them. If they don't immediately open, click the "setup" button and when setup is done, they should open.

You could also configure your own run target:

  1. Run the process.resource target of the build.xml in the base directory of the eclipselink.core.test project as an ant script. This will copy some xml files to your eclipselink.core.test/run directory.
  2. Create a Java Application run target on the eclipselink.core.test project - I'll call it Testing Browser
  3. Use org.eclipse.persistence.testing.framework.ui.TestingBrowserFrame as the main class
  4. Add "-Xmx256m -Djava.security.manager -Djava.security.policy==${workspace_loc:eclipselink.core.test}/resource/java.policy.allpermissions" to the VM arguments section of the Arguments tab
  5. Add the following to the classpath: (note these are listed by category and you may be able to run subsets of the tests without certain categories)
    1. JDBC
      1. your JDBC driver of choice
    2. JPA
      1. jpa.core
      2. jpa.test
    3. Oracle Extensions
      1. eclipselink.extension.oracle (if doing Oracle specific testing)
      2. eclipselink.extension.oracle.test (if doing Oracle specific testing)
      3. jars required to compile eclipselink.extension.oracle - aqapi.jar, sdoapi.jar, dms.jar, xdb.jar, xml.jar, xmlparserv2.jar (if doing Oracle specific testing)
    4. External Extensions
      1. <trunk>/extension.lib.external (user created)
      2. jars required run included (Testing Browser.launch) configuration
      3. Add an empty library project called extension.lib.external (user created) and put any and the following launch required jars into this folder - point the project to this folder and any dependencies in the classpath of the included eclipse launch targets will resolve.
      4. postgresql_jdbc3_82.jar, db2java_9.zip, jconn3.jar, mysql-connector-java-5.0.7-bin.jar
    5. Java
      1. a TOOLS_LIB variable that points to the tools jar in your java installation
    6. Generated classes
      1. Add the run directory of the eclipselink.core.test project. This is where all java output goes. We output some java files and then compile them. They will go there.