From 9910de6e93bc7a293f762c1eabc97c536625c57d Mon Sep 17 00:00:00 2001 From: Maxim Solodovnik Date: Sat, 7 Nov 2026 11:36:41 +0700 Subject: [PATCH 1/3] [OPENJPA-3011] hsql, mssql and aracle are added; Hanging tests were excluded for Oracle --- .github/workflows/databases.yml | 105 ++++++++++++++++++ .../kernel/TestPessimisticLockException.java | 3 +- .../query/TestTimeoutException.java | 3 +- 3 files changed, 108 insertions(+), 3 deletions(-) diff --git a/.github/workflows/databases.yml b/.github/workflows/databases.yml index 68241fbf22..45f0f2b440 100644 --- a/.github/workflows/databases.yml +++ b/.github/workflows/databases.yml @@ -200,3 +200,108 @@ jobs: - name: 'Remove snapshots before caching' if: always() run: find ~/.m2 -name '*SNAPSHOT' | xargs rm -Rf + + hsqldb: + needs: check + if: needs.check.outputs.should_run == 'true' + runs-on: ubuntu-latest + strategy: + fail-fast: false + name: build (Java 21, test-hsqldb) + steps: + - uses: actions/checkout@v7.0.1 + - name: Setup Java JDK + uses: actions/setup-java@v6.0.0 + with: + distribution: 'zulu' + java-version: 21 + - name: 'Cache Maven packages' + uses: actions/cache@v6.1.0 + with: + path: ~/.m2 + key: cache-21-test-hsqldb + restore-keys: cache-21-test-hsqldb + - name: 'Build with Maven' + run: mvn -Ptest-hsqldb -B clean install --file pom.xml + - name: 'Remove snapshots before caching' + if: always() + run: find ~/.m2 -name '*SNAPSHOT' | xargs rm -Rf + + mssql: + needs: check + if: needs.check.outputs.should_run == 'true' + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + version: ['2017-latest', 'latest'] + name: build (Java 21, test-mssql-docker, ${{ matrix.version }}) + services: + mssql: + image: mcr.microsoft.com/mssql/server:${{ matrix.version }} + env: + ACCEPT_EULA: Y + SA_PASSWORD: OpenJP8tst + ports: + - 1433:1433 + steps: + - uses: actions/checkout@v7.0.1 + - name: Setup Java JDK + uses: actions/setup-java@v6.0.0 + with: + distribution: 'zulu' + java-version: 21 + - name: 'Cache Maven packages' + uses: actions/cache@v6.1.0 + with: + path: ~/.m2 + key: cache-21-test-mssql-docker + restore-keys: cache-21-test-mssql-docker + - name: 'Build with Maven' + run: mvn -Ptest-mssql-docker -B clean install --file pom.xml + - name: 'Remove snapshots before caching' + if: always() + run: find ~/.m2 -name '*SNAPSHOT' | xargs rm -Rf + + oracle: + needs: check + if: needs.check.outputs.should_run == 'true' + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + version: ['23-slim'] + name: build (Java 21, test-oracle-docker, ${{ matrix.version }}) + services: + oracle: + image: gvenzl/oracle-free:${{ matrix.version }} + env: + ORACLE_PASSWORD: openjpatst + ORACLE_DATABASE: openjpatst + APP_USER: openjpatst + APP_USER_PASSWORD: openjpatst + ports: + - 1521:1521 + options: >- + --health-cmd healthcheck.sh + --health-interval 10s + --health-timeout 5s + --health-retries 10 + steps: + - uses: actions/checkout@v7.0.1 + - name: Setup Java JDK + uses: actions/setup-java@v6.0.0 + with: + distribution: 'zulu' + java-version: 21 + - name: 'Cache Maven packages' + uses: actions/cache@v6.1.0 + with: + path: ~/.m2 + key: cache-21-test-oracle-docker + restore-keys: cache-21-test-oracle-docker + - name: 'Build with Maven' + run: mvn -Ptest-oracle-docker -B clean install --file pom.xml + - name: 'Remove snapshots before caching' + if: always() + run: find ~/.m2 -name '*SNAPSHOT' | xargs rm -Rf diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestPessimisticLockException.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestPessimisticLockException.java index 33d24227f7..cbbdaccd1a 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestPessimisticLockException.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestPessimisticLockException.java @@ -24,7 +24,6 @@ import org.apache.openjpa.jdbc.conf.JDBCConfiguration; import org.apache.openjpa.jdbc.sql.DB2Dictionary; import org.apache.openjpa.jdbc.sql.DBDictionary; -import org.apache.openjpa.jdbc.sql.OracleDictionary; import org.apache.openjpa.persistence.OpenJPAEntityManager; import org.apache.openjpa.persistence.OpenJPAPersistence; import org.apache.openjpa.persistence.PessimisticLockException; @@ -45,7 +44,7 @@ public void setUp() throws Exception { protected boolean skipTest() { if (emf.getConfiguration() instanceof JDBCConfiguration) { DBDictionary inst = ((JDBCConfiguration) emf.getConfiguration()).getDBDictionaryInstance(); - return !((inst instanceof DB2Dictionary) || (inst instanceof OracleDictionary)); + return !((inst instanceof DB2Dictionary)); } return true; } diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestTimeoutException.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestTimeoutException.java index b91ee6a017..ae67737faa 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestTimeoutException.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestTimeoutException.java @@ -27,6 +27,7 @@ import org.apache.openjpa.jdbc.conf.JDBCConfiguration; import org.apache.openjpa.jdbc.sql.DBDictionary; +import org.apache.openjpa.jdbc.sql.OracleDictionary; import org.apache.openjpa.jdbc.sql.SolidDBDictionary; import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI; import org.apache.openjpa.persistence.exception.PObject; @@ -52,7 +53,7 @@ public void setUp() { assertNotNull(tempEMF); DBDictionary dict = ((JDBCConfiguration)tempEMF.getConfiguration()).getDBDictionaryInstance(); assertNotNull(dict); - if (!dict.supportsSelectForUpdate || !dict.supportsQueryTimeout || dict instanceof SolidDBDictionary) + if (!dict.supportsSelectForUpdate || !dict.supportsQueryTimeout || dict instanceof SolidDBDictionary || dict instanceof OracleDictionary) setTestsDisabled(true); if (emf == null) { From 05ead04c74a3f055998ba9ac9b9e506b010b72d9 Mon Sep 17 00:00:00 2001 From: Maxim Solodovnik Date: Sun, 8 Nov 2026 16:19:22 +0700 Subject: [PATCH 2/3] Oracle started via Maven profile --- .github/workflows/databases.yml | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/.github/workflows/databases.yml b/.github/workflows/databases.yml index 45f0f2b440..3b4c9f46bb 100644 --- a/.github/workflows/databases.yml +++ b/.github/workflows/databases.yml @@ -272,21 +272,6 @@ jobs: matrix: version: ['23-slim'] name: build (Java 21, test-oracle-docker, ${{ matrix.version }}) - services: - oracle: - image: gvenzl/oracle-free:${{ matrix.version }} - env: - ORACLE_PASSWORD: openjpatst - ORACLE_DATABASE: openjpatst - APP_USER: openjpatst - APP_USER_PASSWORD: openjpatst - ports: - - 1521:1521 - options: >- - --health-cmd healthcheck.sh - --health-interval 10s - --health-timeout 5s - --health-retries 10 steps: - uses: actions/checkout@v7.0.1 - name: Setup Java JDK @@ -300,8 +285,13 @@ jobs: path: ~/.m2 key: cache-21-test-oracle-docker restore-keys: cache-21-test-oracle-docker + - name: 'Start Oracle DB v${{ matrix.version }}' + run: mvn -N -B -Ptest-oracle-docker -Doracle.server.version=${{ matrix.version }} docker:start - name: 'Build with Maven' run: mvn -Ptest-oracle-docker -B clean install --file pom.xml + - name: 'Stop Oracle DB v${{ matrix.version }}' + if: always() + run: mvn -N -B -Ptest-oracle-docker -Doracle.server.version=${{ matrix.version }} docker:stop - name: 'Remove snapshots before caching' if: always() run: find ~/.m2 -name '*SNAPSHOT' | xargs rm -Rf From 302fafac9abf9ac262ebfebf44b62e04fc3db842 Mon Sep 17 00:00:00 2001 From: Maxim Solodovnik Date: Sun, 8 Nov 2026 17:21:10 +0700 Subject: [PATCH 3/3] TestPessimisticLocks is disabled for Oracle --- .../openjpa/persistence/lockmgr/TestPessimisticLocks.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestPessimisticLocks.java b/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestPessimisticLocks.java index 0486bd5e85..cbbf55c540 100644 --- a/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestPessimisticLocks.java +++ b/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestPessimisticLocks.java @@ -39,6 +39,7 @@ import org.apache.openjpa.jdbc.sql.DBDictionary; import org.apache.openjpa.jdbc.sql.DerbyDictionary; import org.apache.openjpa.jdbc.sql.InformixDictionary; +import org.apache.openjpa.jdbc.sql.OracleDictionary; import org.apache.openjpa.lib.log.Log; import org.apache.openjpa.persistence.LockTimeoutException; import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI; @@ -71,8 +72,9 @@ public void setUp() { assertNotNull(tempEMF); dict = ((JDBCConfiguration)tempEMF.getConfiguration()).getDBDictionaryInstance(); assertNotNull(dict); - if (!dict.supportsQueryTimeout) + if (!dict.supportsQueryTimeout || dict instanceof OracleDictionary) { setTestsDisabled(true); + } if (emf == null) { closeEMF(tempEMF); }