-
Notifications
You must be signed in to change notification settings - Fork 37
Split project tests #426
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
Split project tests #426
Conversation
|
@brownbaerchen is it on purpose, that the tests for monodomain are marked with "monodomain" instead of e.g. "base"? See all test-files in directory. E.g. this one I was surprised and assume, that those tests won't run, because currently only tests for base or other keywords will run. However, we can also "invert" the decision and I run all tests in projects, that are not marked with any of the keywords, that need another environment-file |
|
Ignore question above. I saw, that monodomain needs packages, that are not included in "base" environment. Therefore, I created a separate env and moved the monodomain tests, so that they don't run with the base-env (and fail) |
|
The libpressio and monodomain tests need compiled code. That's why they're treated separately already and are not part of the matrix. You can just leave them as they are. |
and updated paths in test-jobs. Also removed need for tags in testing, as only a specific dir is tested
…(already satisfied by env-base
As order of dimensions in matrix determines which param is varied first
|
@brownbaerchen do you know, why this test on SDC_showdown always fails? I tries to convert a float into a matrix, but I don't see what i changed that triggered this error. |
|
Cool! Can you add a short description of how to add a new project in the contribution guide.
That's it, right? I am wondering if we can forgo the need by the user to add the project name to the pipeline. Can we just run the tests for all directories in pySDC/projects except ones we specifically exclude? |
Hm. I think @pancetta wrote this test and probably knows best. The petsc environment limits the version to |
maybe this fixes the error of the project-tests
Thank you. That fixed it. |
|
One job fails for python 3.12. The issue arises for higher number of Threads (5 and 8) but does not arise for older versions of python <=3.11 (or lower numbers of threads). The issue seems to come from using a different MPI. When comparing the installation logs, in Python 3.11 impi (sometimes listed as impi_rt) is used. In Python 3.12 OpenMPI is installed instead. Maybe these two packages have different default options (maybe for oversubscription or the likes?) Do you @brownbaerchen want to have a look there, or shall I dig in, but that will take more time, as I haven't worked with the pySDC code itself until now. |
|
Looks like a oversubscription issue which is indeed fixed by either specifying a parameter during |
As otherwise, the tests take very long
Yes, adding mpich in the requirements solved it. Thank you @pancetta for the pointer! |
|
Looking good! Testing the past 5 versions is perhaps a bit excessive. Which ones do you want to keep @pancetta? |
|
Looking here, v3.8 to v3.12 would be great to have. I'd be fine dropping the oldest one, though. |
|
So, runtime of the tests went up to 1h.. is that intended? |
|
No it is not. This is only for the project "parallelSDC" and in combination with different versions of matplotlib. When I limit the version, the duration goes down to 10-20 minutes. But fails for Python 3.11 and Python 3.12., because those older versions of matplotlib are not compatible with the later python versions. I am currently at it and try to find where this issue with matplotlib comes from |
|
Ahhh, yes, I recall that I did not pursue 3.12 because Matplotlib was causing trouble... right. |
|
Hm. That's annoying. What about testing projects only up to 3.10 and the rest with everything? Since only the projects do plots (right? Tutorials..?) we don't need to worry about matplotlib for the rest. |
As I could not find and fix the specific reason for the issue
|
I added a statement to skip the combination of parallelSDC and Python 3.11 or Python 3.12. So all other projects are tested with 5 versions of python and the project parallelSDC is tested with "only" 3 versions of python. By this, we can cover as much as possible for the other projects, while keeping the version-limits for matplotlib |
|
By chance, the relative paths for the plots still work out. So the website and coverage report look like before. Time is down to ~30 mins from ~45. More Python versions including the latest 3.12 are tested. To get time down further, we would have to rewrite some tests, mainly in the DAE, resilience and the parallelSDC_reloaded projects. But as they generate some plots, this may be difficult and definitely shouldn't be part of this PR. I am happy now. Any more requests, @pancetta? |
|
Ok, let me try to understand this: each project now has a separate environment file, yes? And then there are environment files for the tutorials (and other stuff?) in the |
|
Yes, you got this right, @pancetta. The environment-file for each project is located in the directory of that project. Furthermore, there are more general environment-files (e.g. for tutorial, the tests outside projects and with testing-dependencies in general) in the |
I am not sure what the best strategy is here. I think we should keep the four environments we had earlier because many (hundreds of thousands) users of pySDC probably don't care about existing projects. I suggest leaving them where they are and leaving the project environment files in the projects to keep them self-contained as Jakob says. |
|
Alright, there is probably no single great solution to this. I really appreciate that the projects are now more self-contained and that the tests are faster/more modular. Any famous last words here, @brownbaerchen @jakob-fritz ? |
Now it uses a Github-URL instead of a relative path
Not last words: Please don't merge yet. I am adding dependencies for the documentation (did not raise errors, but only warnings in the logs, I saw this morning). |
|
Now, the documentation has all needed dependencies installed. Once this is done, I am fine with squash and merge (Not so famous) last words @pancetta : Fire at will |
Splitting tests from base-environment into separate jobs to increase parallelism and speed