jpype icon indicating copy to clipboard operation
jpype copied to clipboard

[ci] add jdks to test matrix

Open marscher opened this issue 2 years ago • 6 comments

Added a mixture of JDK versions to our testing matrix. Version 8, 11, and 17 are being checked.

TODOs:

  • [ ] For some matrix elements the ivy dependencies are not installed (this leads to a failure in the test_sql*.py scripts)
  • [ ] Javadoc in JDK17 does not produce the same output as before.

marscher avatar Apr 29 '23 11:04 marscher

Codecov Report

Attention: Patch coverage is 96.29630% with 1 line in your changes missing coverage. Please review.

Project coverage is 87.22%. Comparing base (d3cc970) to head (69bbe2e). Report is 52 commits behind head on master.

Files Patch % Lines
jpype/_jvmfinder.py 96.29% 1 Missing :warning:
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1131      +/-   ##
==========================================
- Coverage   87.31%   87.22%   -0.09%     
==========================================
  Files         113      113              
  Lines       10281    10281              
  Branches     4065     4065              
==========================================
- Hits         8977     8968       -9     
- Misses        707      718      +11     
+ Partials      597      595       -2     

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

codecov[bot] avatar Apr 29 '23 15:04 codecov[bot]

@Thrameos I could use some help to figure out why the ivy deps are not found for some jobs - thank you :)

marscher avatar Apr 29 '23 17:04 marscher

Sure. Though there may be other ways to skin that cat like calling it once and shipping the artifacts arounf. Been a while since I looked at it.

Thrameos avatar May 04 '23 14:05 Thrameos

I looked through the logs. It is not an ivy failure. The first step of the process is to create the artifact deps which are then used for all builds. Thus if the failure was with ivy it would have failed in the first stage of the build and every build after it would have failed as well. The fact that some worked and some did not indicates that the dependencies are there but they didn't work for every build.

So lets look at the possibilities:

  1. The artifact failed to download and unpack properly. No evidence as the state says it was successful. Best way to debug is to add an "ls" or equivalent to download stage to see if everything was unpacked.
  2. The artifact unpacked but the jars did not work for the version of the JDK tested. This matches the behavior. (Though it took me looking at the patch as the JDK versions were random to the Python versions. We should add the JDK name to the description to make it clear.)

The jars being pulled are too new for 8 so most likely it is JDK 52.0 version conflict (causing one type of fail) and something has changed in 17 that is not allowing the driver to load in 17. The last one is more of a mystery as I rarely get things to fail forward unless they are hitting the ByteBuffer symbol conflict bug.

To diagnose I will have to install the same versions of JDK and the jars and try to get them to manually load in hopes of forcing an error. The JDK silently ignores any jars that fail to load from the classpath, so manual loading is required to get diagnostics. I will need to investigate further.

Safest fix for the JDK 8 is to add an option to skip the dbc tests for those builds. JDK is dead as a doornail at this point and it is hard to ensure that 3rd party jars will work with it going forward. 17 needs investigation.

Thrameos avatar May 04 '23 15:05 Thrameos

thanks for looking into it. I'll be on vacation next week. So I wont be available that time. Do you intend to push the release in the next two weeks?

marscher avatar May 04 '23 15:05 marscher

I was aiming for the end of April but I can push it back. We have a lot of things left to resolve so the time may be needed anyway.

Thrameos avatar May 04 '23 15:05 Thrameos

@Thrameos I would like to bundle the efforts to fix the CI prior the release in this PR.

marscher avatar Aug 20 '24 08:08 marscher

Sounds good. I have another PR that will need to go out shortly and having a working test bench will be required. Apparently, Python broke parts of the object system again in 3.13.

Thrameos avatar Aug 20 '24 16:08 Thrameos

Right, I'm gonna finish this one soon.

marscher avatar Aug 21 '24 10:08 marscher