Java SDK CIs Improvement Tracking Ticket
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
- Issue type
- Refactor
- Clarity
- Needs clarification
- Activity status
- Quiet
- Tech stack
- github-actions, java
- Domain
- build-system, ci-cd, testing-qa
Research direction
Start with the linked GitHub Actions run and review the GAPIC unit-test, GraalVM, Enforcer, and Fmt jobs, including the referenced GraalVM targets. Determine which test suites and build steps account for the runtime and flakiness; done means an agreed CI approach is implemented and the affected jobs are measurably faster and more reliable.
Written by the indexing model from the issue text.
Description
Problems:
- GAPIC Unit Tests Long Duration
On changes that impact all of google-cloud-java, all the GAPIC unit tests are run. These test jobs take well over 30+ min (https://github.com/googleapis/google-cloud-java/actions/runs/26462248492/job/77913201176?pr=13222). One latest log results timed this to be ~38 min.
These GAPIC unit tests are autogenerated within each module and do not vary too much. These look to test happy and sad paths for each RPC method, but generally are the same tests with different inputs and outputs. We have dedicated showcase tests that can test these RPCs functionality once and ensure that the common variations are tested properly.
Question(s):
- Can we stop autogenerating these unit tests and instead rely on showcase unit tests for complete coverage? Additionally, we can rely one showcase ITs to ensure that the functionality is able to work E2E
- GraalVM Tests Duration
The GraalVM jobs (A,B,C) run through test cases (units and ITs) in each module twice (once to investigate all the possible code paths and a second time to run through the tests). This doubles the amount of time needed to ensure GraalVM compatibility. One of the latest runs for GraalVM ran for ~90 min (https://btx.cloud.google.com/invocations/a827908d-a2fb-49f2-8c39-01b51e4baad8/targets).
Is there a way that we can streamline the tests to run faster?
- Remove the GAPIC unit tests so that they do not need to run? Instead, we rely on showcase unit tests and integration tests
- Only run the required tests once?
- Use GraalVM fast build mode?
2.1 GraalVM Tests Flakiness
Additionally, the test suite is already quite flaky and this flakiness compounds into an even more expensive operation when there are long test times.
- Enforcer and Fmt Jobs Duration
Similar to issues above, running these jobs is expensive and take a long time if they require building and compiling all the GAPIC modules.
- Dominant language
- Java
- Stars
- 2.1k
- Forks
- 1.2k
- Avg merge
- 2d 14h
- Merged PRs (30d)
- 192
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from googleapis/google-cloud-java
-
[java-core] Timestamp.of(java.sql.Timestamp) is one second late for a time less than a second before the epochPossibly taken @Vcode2407 claimed this 4 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
googleapis/google-cloud-java#14636 ·
Maintainers usually reply within 1 day
-
[java-firestore] UserDataConverter encodes a pre-epoch Date with negative nanos, so the write is refusedPossibly taken @wu-hui claimed this 23 days ago. Openpriority: p2 type: bug
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
googleapis/google-cloud-java#14635 · 1 assignee ·
Maintainers usually reply within 1 day
-
[java-firestore] UserDataConverter throws IndexOutOfBoundsException on an empty __binary__ valuePossibly taken @wu-hui claimed this 23 days ago. Openpriority: p2 type: bug
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
googleapis/google-cloud-java#14634 · 1 comment · 1 assignee ·
Maintainers usually reply within 1 day
-
[java-firestore] CustomClassMapper.convertBigDecimal calls .abs() on Double, unintentionally flipping negative values to positiveMay be free again @wu-hui claimed this 45 days ago, and no pull request is open. Open
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
googleapis/google-cloud-java#14533 · 1 assignee ·
Maintainers usually reply within 1 day
-
Github CI failing when trying to install xmllintPossibly taken @blakeli0 claimed this 81 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
googleapis/google-cloud-java#14132 · 1 comment ·
Maintainers usually reply within 1 day
All issues in googleapis/google-cloud-java
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
-
Difficulty 2/5 Under an hour Newbie friendliness 84/100
cpp-best-practices/project_validator#251 ·
Maintainers usually reply within 1 day
-
backend enhancement
Difficulty 2/5 Half a day Newbie friendliness 70/100
damodharg6/payledger#16 ·
-
[Bug]: An initiative list with no current entry logs an error on every changePossibly taken @dwizard0 claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 85/100
Maintainers usually reply within 1 day