Conversation
…llelization The Core test group (~42 min) is split into: - Modeling (~20 min): ReactionSystem structure, DSL, compositional modeling, network analysis - Simulation (~23 min): ODE/SDE/Jump simulations, solving, MTK problem integration This increases CI jobs from 15 to 18 (3 Julia versions × 6 groups). Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Remove Extensions from Test.yml matrix to avoid cache race condition - Create TestExtensions.yml with pre-instantiation step that: - Instantiates and precompiles test/extensions environment before tests - Gets its own cache scope (separate workflow = separate cache) This should reduce Extensions test time from ~60 min to ~15-20 min on warm cache runs, as heavy dependencies (CairoMakie, HomotopyContinuation, StructuralIdentifiability) will be cached with their compiled artifacts. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Packages compiled without --code-coverage need to be recompiled when run with coverage instrumentation. Add --code-coverage=user to the precompile step so packages are compiled for the same configuration used during tests. Co-Authored-By: Claude Opus 4.5 <[email protected]>
|
Not sure I fully understand 2. You mean taht we can do them in parallel? Making things faster sounds all good to me. |
Change from --code-coverage=user to --code-coverage=@$(pwd) to match the exact format julia-runtest uses. This should allow precompiled packages to be reused during test execution. Co-Authored-By: Claude Opus 4.5 <[email protected]>
ModelingToolkit is not MIT licensed (as of v11) and should not be used. The extension tests don't directly use ModelingToolkit/ModelingToolkitBase - they get needed functionality transitively through Catalyst. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Use matching compilation flags (--code-coverage=user, --check-bounds=yes, --compiled-modules=yes, --inline=yes) between pre-instantiate and test execution steps. This ensures precompilation cache can be reused. Also creates dedicated runtests_extensions.jl that can be run directly by the workflow or included from runtests.jl for local testing. Co-Authored-By: Claude Opus 4.5 <[email protected]>
These packages are needed for runtests_extensions.jl to run directly with --project=test/extensions. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Use @__DIR__ directly in each @safetestset block since the macro runs code in a separate module where outer constants are not visible. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Add Logging, OrdinaryDiffEqVerner, SparseArrays, and StableRNGs which are required by the extension test files when running directly. Co-Authored-By: Claude Opus 4.5 <[email protected]>
|
The extensions tests previously had a workflow where we
This resulted in double compilation in many cases (i.e. the activation of the extension environment caused invalidation of packages installed from the Catalyst environment, so they were then recompiled I believe). Hence we had 40+ minute of stuff compiling before the extension tests even started running. WIth this split that should be avoided, halving the compilation time. And now the extension tests should also cache their compiled libraries (so if you make updates to a PR, hopefully there is no recompilation except of the extension itself). |
|
The main change here is if we add new extension test files they need to be put in the runtests_extensions.jl file. Calling |
CI is getting pretty slow these days for two reasons: