Skip to content

test(grails-data-hibernate7): re-enable Oracle in the RLikeHibernate7Spec dialect matrix - #16027

Open
borinquenkid wants to merge 1 commit into
8.0.xfrom
feat/reenable-oracle-testcontainers
Open

test(grails-data-hibernate7): re-enable Oracle in the RLikeHibernate7Spec dialect matrix#16027
borinquenkid wants to merge 1 commit into
8.0.xfrom
feat/reenable-oracle-testcontainers

Conversation

@borinquenkid

Copy link
Copy Markdown
Member

Summary

Aspirational/experimental: re-enables the Oracle row in RLikeHibernate7Spec's Testcontainers-backed dialect matrix, which was previously disabled due to known flakiness in Oracle's Testcontainers image.

No production code changes - this is test-config only:

  • gvenzl/oracle-free:slim-faststart now ships native ARM64 + x86_64 images (no more x86-under-emulation startup penalty), and reported DATABASE IS READY TO USE! in ~13s across repeated local runs (Docker Desktop, Apple Silicon).
  • Added an explicit withStartupTimeout(Duration.ofMinutes(3)) as a safety margin against the known too-tight 60s default ([Bug]: Timed out waiting for log output matching '.*DATABASE IS READY TO USE!.*\s' testcontainers/testcontainers-java#9057), which has caused flakiness on loaded/slower CI runners historically.
  • Un-commented the "Oracle" | oracle row in the where: table, so it now runs the same functional RLIKE-query assertion the other four dialects already run.

Why this might still not be safe to keep: my local verification is Apple Silicon with Docker Desktop and a warm image cache - it doesn't represent GitHub Actions' ubuntu-latest runners (shared, resource-constrained, where the original flakiness reports concentrated) or Windows runners. This repo's isDockerAvailable() check means the whole Testcontainers matrix already no-ops on Windows/macOS GitHub-hosted runners today, so ubuntu-latest in CI is the real test here, not this PR description.

If Oracle proves flaky again on real CI, the row is a one-line revert.

Test plan

  • Ran RLikeHibernate7Spec locally against real Testcontainers-launched Postgres, MySQL, MariaDB, and Oracle - all 5 dialect rows (H2 included) pass.
  • Repeated the run a second time to check for obvious flakiness - consistent pass, ~13-15s Oracle startup both times.
  • codeStyle (checkstyle + CodeNarc): clean.
  • Real signal on ubuntu-latest CI runners across multiple runs - this is what should determine whether to merge or close this PR.

Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com

…Spec dialect matrix

Oracle Testcontainers has historically been flaky enough in CI that this row was
disabled. Re-evaluating now: gvenzl/oracle-free:slim-faststart ships native
ARM64 + x86_64 images (no more x86-under-emulation startup penalty on Apple
Silicon), and ran to "DATABASE IS READY TO USE!" in ~13s locally on repeated
runs. Adds an explicit 3-minute startup timeout as a safety margin against the
known too-tight default (testcontainers/testcontainers-java#9057) without
slowing down the common case.

This is test-only, no production code changes - if Oracle proves flaky again
in real CI (particularly on shared/loaded runners, which this local run can't
represent), the row can be dropped again.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 20, 2026 17:50

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR re-enables the Oracle row in the Testcontainers-backed dialect matrix for RLikeHibernate7Spec, with an explicit startup timeout to reduce historical Oracle container flakiness on slower CI runners.

Changes:

  • Add an explicit withStartupTimeout(Duration.ofMinutes(3)) to the Oracle Testcontainers configuration.
  • Re-enable the "Oracle" | oracle entry in the where: matrix so the same RLIKE assertion runs against Oracle.
  • Add java.time.Duration import and inline rationale comment documenting the timeout choice.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@codecov

codecov Bot commented Jul 20, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 51.4507%. Comparing base (bfd1789) to head (8d92089).
⚠️ Report is 43 commits behind head on 8.0.x.

Additional details and impacted files

Impacted file tree graph

@@                Coverage Diff                 @@
##                8.0.x     #16027        +/-   ##
==================================================
- Coverage     51.4517%   51.4507%   -0.0010%     
+ Complexity      17733      17731         -2     
==================================================
  Files            2039       2039                
  Lines           95507      95507                
  Branches        16564      16564                
==================================================
- Hits            49140      49139         -1     
  Misses          39067      39067                
- Partials         7300       7301         +1     

see 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@testlens-app

testlens-app Bot commented Jul 20, 2026

Copy link
Copy Markdown

✅ All tests passed ✅

🏷️ Commit: 8d92089
▶️ Tests: 18929 executed
⚪️ Checks: 61/61 completed


Learn more about TestLens at testlens.app.

@borinquenkid
borinquenkid requested a review from jdaugherty July 21, 2026 00:54
@jdaugherty

jdaugherty commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

The oracle images have extreme license restrictions so we need to talk to people on this one. I suspect the weekly is best for this one.

@borinquenkid

Copy link
Copy Markdown
Member Author

The oracle images have extreme license restrictions so we need to talk to people on this one. I suspect the weekly is best for this one.

I copied over:

Your use of this Program is governed by the Free Use Terms and Conditions set forth below, unless you have received this Program (alone or as part of another Oracle product) under an Oracle license agreement (including but not limited to the Oracle Master Agreement), in which case your use of this Program is governed solely by such license agreement with Oracle.

Oracle Free Use Terms and Conditions
Definitions

"Oracle" refers to Oracle America, Inc. "You" and "Your" refers to (a) a company or organization (each an "Entity") accessing the Programs, if use of the Programs will be on behalf of such Entity; or (b) an individual accessing the Programs, if use of the Programs will not be on behalf of an Entity. "Program(s)" refers to Oracle software provided by Oracle pursuant to the following terms and any updates, error corrections, and/or Program Documentation provided by Oracle. "Program Documentation" refers to Program user manuals and Program installation manuals, if any. If available, Program Documentation may be delivered with the Programs and/or may be accessed from [www.oracle.com/documentation](https://www.oracle.com/documentation). "Separate Terms" refers to separate license terms that are specified in the Program Documentation, readmes or notice files and that apply to Separately Licensed Technology. "Separately Licensed Technology" refers to Oracle or third party technology that is licensed under Separate Terms and not under the terms of this license.

Separately Licensed Technology

Oracle may provide certain notices to You in Program Documentation, readmes or notice files in connection with Oracle or third party technology provided as or with the Programs. If specified in the Program Documentation, readmes or notice files, such technology will be licensed to You under Separate Terms. Your rights to use Separately Licensed Technology under Separate Terms are not restricted in any way by the terms herein. For clarity, notwithstanding the existence of a notice, third party technology that is not Separately Licensed Technology shall be deemed part of the Programs licensed to You under the terms of this license.

Source Code for Open Source Software

For software that You receive from Oracle in binary form that is licensed under an open source license that gives You the right to receive the source code for that binary, You can obtain a copy of the applicable source code from https://oss.oracle.com/sources/ or [http://www.oracle.com/goto/opensourcecode](https://www.oracle.com/goto/opensourcecode). If the source code for such software was not provided to You with the binary, You can also receive a copy of the source code on physical media by submitting a written request pursuant to the instructions in the "Written Offer for Source Code" section of the latter website.

-------------------------------------------------------------------------------

The following license terms apply to those Programs that are not provided to You under Separate Terms.

License Rights and Restrictions

Oracle grants to You, as a recipient of this Program, a nonexclusive, nontransferable, limited license to, subject to the conditions stated herein, (a) internally use the unmodified Programs for the purposes of developing, testing, prototyping and demonstrating your applications, and running the Programs for your own internal business operations; and (b) redistribute unmodified Programs and Programs Documentation, under the terms of this License, provided that You do not charge Your end users any additional fees for the use of the Programs. You may make copies of the Programs to the extent reasonably necessary for exercising the license rights granted herein and for backup purposes. You are granted the right to use the Programs to provide third party training in the use of the Programs and associated Separately Licensed Technology only if there is express authorization of such use by Oracle on the Program's download page or in the Program Documentation.

Your license is contingent on Your compliance with the following conditions:

- You include a copy of this license with any distribution by You of the Programs;

- You do not remove markings or notices of either Oracle's or a licensor's proprietary rights from the Programs or Program Documentation;

- You comply with all U.S. and applicable export control and economic sanctions laws and regulations that govern Your use of the Programs (including technical data);

- You do not cause or permit reverse engineering, disassembly or decompilation of the Programs (except as allowed by law) by You nor allow an associated party to do so.

For clarity, any source code that may be included in the distribution with the Programs is provided solely for reference purposes and may not be modified, unless such source code is under Separate Terms permitting modification.

Ownership

Oracle or its licensors retain all ownership and intellectual property rights to the Programs.

Information Collection

The Programs' installation and/or auto-update processes, if any, may transmit a limited amount of data to Oracle or its service provider about those processes to help Oracle understand and optimize them. Oracle does not associate the data with personally identifiable information. Refer to Oracle's Privacy Policy at [www.oracle.com/privacy](https://www.oracle.com/privacy).

Disclaimer of Warranties; Limitation of Liability

THE PROGRAMS ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. ORACLE FURTHER DISCLAIMS ALL WARRANTIES, EXPRESS AND IMPLIED, INCLUDING WITHOUT LIMITATION, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT.

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL ORACLE BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

Last updated: 9 June 2021

@jdaugherty

Copy link
Copy Markdown
Contributor

FYI: this has been previously discussed when distributing the oracle jdbc drivers came up (https://lists.apache.org/thread/806jtj39zfbz07wfmz545mk6lrl2x8wc). It was deemed a category X license at that time. I think this might be ok since we're only using it in test and not distribution though. This is just something we need to make sure there's agreement on in the weekly. We may want to specifically consult with @paulk-asert on this too.

@jdaugherty

Copy link
Copy Markdown
Contributor

I also want to point out that we need to look at this docker image - how often is it patched? etc. We need to ensure it's not a security risk for the project (and thus the build agents / ci)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

4 participants