Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[build] Split the publish workflow preparation to parallelize slow tests #145

Merged
merged 10 commits into from
Aug 11, 2021

Conversation

simonbasle
Copy link
Member

No description provided.

Copy link
Contributor

@OlegDokuka OlegDokuka left a comment

Choose a reason for hiding this comment

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

LGTM

@simonbasle
Copy link
Member Author

in the latest state, splits prepare (which includes shorter tests) vs races tests vs loops tests + jcstress.

the longest is still the races-tagged tests, which run for about 9min on CI.
loops + jcstress run for about 7min.
prepare runs for about 3min.

This PR thus reduces the publish workflow by about 10min (was 19min).

@simonbasle simonbasle added the type/chore A task not related to code (build, formatting, process, ...) label Aug 10, 2021
@simonbasle
Copy link
Member Author

@OlegDokuka thanks for the review. Can you double check everything is fine and no testing-related changes are left?

Copy link
Contributor

@OlegDokuka OlegDokuka left a comment

Choose a reason for hiding this comment

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

Some changes to make it working

.github/workflows/publish.yml Outdated Show resolved Hide resolved
.github/workflows/publish.yml Outdated Show resolved Hide resolved
java-version: 8
- name: run loop and stress tests
id: loopsTests
run: ./gradlew test -Pjunit-tags=loops jcstress
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
run: ./gradlew test -Pjunit-tags=loops jcstress
run: ./gradlew test -Pjunit-tags=loops,slow jcstress

build.gradle Show resolved Hide resolved
@simonbasle
Copy link
Member Author

ok so let me rework this a bit actually. since prepare + base tests + jcstress + loop tests take up about 10min, and race tests take about 9min (on CI), I think we can limit the number of parallel jobs to 2.

Copy link
Contributor

@OlegDokuka OlegDokuka left a comment

Choose a reason for hiding this comment

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

LGTM

@simonbasle
Copy link
Member Author

ok, in the last execution we had:

  • prepare (preparation + base tests including loops + jcstress): 8min
  • slowChecks (raceXxx tests in CommonPoolTest, tagged "slow"): 10min

I have verified that the test logs show the same number of passed tests (445) by combining the logs of the 2 jobs and comparing to the release's log, filtering on > for test name lines and sorting the result and comparing it just to spot any difference. There is one additional line in the new logs because it outputs 1 STANDARD_OUTPUT line displaying the activated logger in the extra job.

@simonbasle simonbasle merged commit 515dc62 into main Aug 11, 2021
@simonbasle simonbasle deleted the splitSlowTestCi branch August 11, 2021 12:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type/chore A task not related to code (build, formatting, process, ...)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants