Uploaded image for project: 'OpenJPA'
  1. OpenJPA
  2. OPENJPA-1153

Test suite speed-up outside SingleEMFTestCase


    • Type: Test
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 1.1.0, 1.2.1
    • Fix Version/s: 1.3.0, 2.0.0-beta
    • Component/s: None
    • Labels:


      From the developer list [1]:

      We have groups of tests which do not inherit from SingleEMFTestCase and use common persistence.xml files to do their setUp()s. Each persistence.xml contains all entities used by the group. An individual test uses its group's persistence.xml to set itself up although the test usually uses one or two entities. Not surprisingly getting database metadata and issuing DELETE TABLE statements often takes much more time than the actual test itself.

      The most notable example is a group of tests located in openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/. Their openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/kernel/common/apps/META-INF/persistence.xml contains almost 100 entities. I measured how long does it take to run TestDateQueries which uses only one entity but sets itself up with that persistence xml. I ran the test suite with -Dtest=TestDateQueries and the necessary tables were already in the database:

      • Derby: 20 secs
      • MySQL: 12 secs
      • PostgreSQL: 46 secs

      Then I modified the persistence.xml to include only the entity used by the test. The timings for all databases dropped to around 4 seconds.

      My idea is to modify these tests (at least the ones taking the most time) and their superclass(-es) to not use persistence.xml but specify used entities as setUp() parameters, similarly to what SingleEMFTestCase. It looks like we would save at least a few minutes on a test suite run.

      [1] http://n2.nabble.com/Test-suite-speed-up-outside-SingleEMFTestCase-td3169383.html




            • Assignee:
              milosz Milosz Tylenda
              milosz Milosz Tylenda
            • Votes:
              0 Vote for this issue
              0 Start watching this issue


              • Created: