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

Parallel WL Tests on CI #578

Merged
merged 7 commits into from
Dec 18, 2020
Merged

Parallel WL Tests on CI #578

merged 7 commits into from
Dec 18, 2020

Conversation

aokellermann
Copy link
Collaborator

@aokellermann aokellermann commented Dec 17, 2020

Changes

Comments

Currently, we do not have WL test metadata compatible with CircleCI. Therefore, we can't use CircleCI's built-in split-by timing to distribute tests efficiently. This PR simply runs matching and WolframModel (which take the most time by far) each in separate executors, and splits the rest among the last two.

In order to optimize this further, we could:

  1. Distribute tests from matching and WolframModel into separate files.
  2. Implement JUnit XML or Cucumber JSON test result reports for WL and enable split-by timing.

Examples

Parallel executors:
image

Test time is reduced by ~10 minutes (over ~2x reduction):
image

compared to master:
image


This change is Reviewable

@aokellermann aokellermann added optimization Does not change functionality but makes code faster infrastructure Has to do with changes to the development process, e.g., build scripts, CI, testing utilities labels Dec 17, 2020
@aokellermann aokellermann requested a review from maxitg December 17, 2020 22:43
Copy link
Owner

@maxitg maxitg left a comment

Choose a reason for hiding this comment

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

This is incredible! Thanks!

Reviewed 2 of 2 files at r1.
Reviewable status: all files reviewed, 3 unresolved discussions (waiting on @aokellermann)


.circleci/config.yml, line 9 at r1 (raw file):

  wolfram-language-paclet-test:
    docker:
      - image: maxitg/set-replace-wl-ci:12.1.1

It seems redundant that we are downloading the image 4 times separately. There is definitely a way around it, but we might have to download WL outside of the Docker image and put it into the workspace (not in this PR, obviously).


.circleci/config.yml, line 23 at r1 (raw file):

      - store_artifacts:
          path: ./LibraryResources/

Similarly, we don't need to store artifacts from every parallel run. The way to fix that would be to build in a separate job, however, doing that will cost us ~60 secs for another WL download, so it will need to be done after the previous comment.


.circleci/config.yml, line 65 at r1 (raw file):

      - run:
          name: Performance Test
          command: ./performanceTest.wls master @HEAD 2

If we only run this on the zeroth or the first node, we will save another ~30 secs.

Copy link
Collaborator Author

@aokellermann aokellermann left a comment

Choose a reason for hiding this comment

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

Reviewable status: 1 of 2 files reviewed, 1 unresolved discussion (waiting on @maxitg)


.circleci/config.yml, line 65 at r1 (raw file):

Previously, maxitg (Max Piskunov) wrote…

If we only run this on the zeroth or the first node, we will save another ~30 secs.

Done.

Copy link
Owner

@maxitg maxitg left a comment

Choose a reason for hiding this comment

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

Reviewed 1 of 1 files at r2.
Reviewable status: :shipit: complete! all files reviewed, all discussions resolved

@aokellermann aokellermann merged commit 2a95d9e into master Dec 18, 2020
@aokellermann aokellermann deleted the WLTestParallelCI branch December 18, 2020 00:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bash Requires bash implementation infrastructure Has to do with changes to the development process, e.g., build scripts, CI, testing utilities optimization Does not change functionality but makes code faster
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Parallelize Circle CI jobs
2 participants