-
Notifications
You must be signed in to change notification settings - Fork 1k
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
Consolidate and clean mesh-modifer/generator tests #20845
Conversation
Job Documentation on 96a28d0 wanted to post the following: View the site here This comment will be updated on new commits. |
Job Coverage on 96a28d0 wanted to post the following: Framework coverage
Modules coverageCoverage did not change Full coverage reportsReports
This comment will be updated on new commits. |
97866cd
to
2c97fc7
Compare
should we expect the coverage change? |
(not that it is much) |
no we shouldnt. Seems the exception checking was more thorough for mesh modifiers than for mesh generators |
I ll go grab these tests |
2c97fc7
to
748138a
Compare
let s see if that fixed it |
435f48b
to
bcf2a25
Compare
ok there's actual differences in the tests, despite the matching test & file names and descriptions. I ll try to find out what they are. I m thinking 3 tests are involved based on the diff |
Huh? It looks like all tests are passing to me |
well other than the doc |
I m talking about the diff in coverage. |
ah, got ya |
…enerators corresponding folder refs idaholab#13814
…daholab#11640 Note: from Nathaniel's PR
So what are we doing about this vs. #22267? It seems like you think this one is superior ... and I definitely agree that feature coverage is more important than line coverage |
I'm fixing this one to get the coverage right. The missing lines might tell us something about differences in the tests. The other one has modified tests, a muddled commit history, deleted tests we do not want to delete, checks in the repository a duplicate of a picture of a kitten, pick your reason but imo it's not mergeable as is. |
8048940
to
78a6914
Compare
so the final word on the missing lines is that you needed to run at least 3 processes in distributed mode (on several of the tests in that folder) to hit the missing lines. however, while this configuration is part of our test suite (we sweep from 1-16 at least with distributed), it is not part of the recipes used to compute coverage The test that previously hit this was the force_prepare test, which got deleted as this option no longer exists. The new test will force this |
…er sideset communication in parallel, refs idaholab#13814
wouhou (reported) coverage increased now @lindsayad any other concerns? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice. It would almost be nice to create #ifdef MOOSE_ENABLE_DEPRECATED
guards like we have for libMesh that could be used to remove deprecated code from coverage testing for example. What would you think about that @loganharbour ? Probably would make the code more ugly than it's worth to make coverage appear (a little bit) better
thanks! |
I think I'm on board with this. I think it would make maintenance easier as well by just doing a quick grep for that guard |
We would probably need to add functionality for what to do with deprecated parameters, though |
On the doc side,
|
I do not believe this PR was ready to be merged. First, there are a couple outright issues (duplicate tests, etc) that are present in this PR that shouldn't have gone through, and second, there are more directional and abstract issues that needed to be discussed and addressed as well. It is clear that the comment I wrote explaining my reasoning on the previous PR: #22268 (comment) was not read, as none of the points I brought up are mentioned at all in the comments above. Dismissing my post on hand for minor errors (and easily fixed errors, mind you) has led to absence of real discussion over certain topics that deserved it, and allowed a bad merge due to unilateral decision-making. I'll start with going over the outright issues with this PR:
Moving on, however, we need to get into the bigger argument of why we should include or remove tests in MOOSE in the first place. After going over what is a valid requirement with Cody and Casey over the course of several hours, I'll go over the more high-level problems that I believe are still valid. Some of this will be a reprisal of my earlier post on my PR, so apologies in advance. Let me start by stating two things about what constitutes a unique test requirement by our standards. First, plainly, is that tests should be unique, i.e. they should be testing a unique feature, function, error pathway, etc. It's important to remember that our requirement testing is not a substitute for unit testing. If there are no unique features being tested, the tests shouldn't be there. The second would be the concept of, for lack of a better term, encapsulated or implied requirements. Let's use an example to look at this: say that I'm developing a new baseball bat and it needs to not break under 4000 N of force. If that's already a requirement, then something like "the left side of the bat should not break under 4000 N of force" is superfluous. The system already specifies that it shouldn't break under 4000 N, ergo the component pieces of the system would inherently not break as well. The "left side should not break" is a completely implied requirement already, and doesn't pass the barrier for a unique test. The same can be said for tests here in MOOSE. Take for example, a test spec for a FoobarGenerator. The first test in the spec has a requirement along the lines of "the foobar generator should generate foobars." Under this scenario, a test such as "FoobarGenerator should work on a 2D mesh" is not a unique test, as it is implied by the requirements of MOOSE itself. The notable exception to this is if the code in question does have to do unique things to satisfy that requirement, or in other words, if it has specific unique requirements for the test. Now, bear in mind, both of these should be taken with the understanding that they are standards applied "in general." There are always exceptions, and always will be. However, it's important that the tests overcome the uniqueness barrier, and I don't believe everything here is, and I don't believe I'm the only one who believes this either.
The rest of my complaints would be complete retreads of things in my PR's comment, so I won't go over them here. However I would really like these problems to be addressed by @GiudGiud Regardless, a discussion should have been had on this before merging, and should still be had, and this dismissive behavior benefits no one, and actively hurts the project. |
Locking this until we have time to have a proper meeting about testing so we can have a better discussion. |
refs #13814
Here's what happened to each test folder. Duplicates are exact save for object names and at times comments in input files.
Files renamed with this convention:
TestBreakMesh_3D_Polycristal -> break_mesh_3D_polycrystal.i
TestBreakMesh_3D_3Block_Auto.i -> break_mesh_3D_auto.i
More tests in mesh generator folder
All 4 inputs for all 4 tests are in the new MG folder
convention roughly for renaming: around_multi_created_subdomain.i <- sidesets_around_subdomain/around_multi_created_subdomain.i
all input files and tests are in the new MG folder. same names
tests are duplicates of tests in meshgenerators/sidesets_bounding_box_generator
The new tests are testing name/id input of sidesets. The old test were about first/second order meshes. The mesh modifier tests were moved to the mesh generators
duplicate of smooth_mesh_generator
same mesh is used, the only difference is 2 less smoothing runs (out of 5) in the new test, and the old test was diffusion. The new test is mesh-only. Testing is equivalent overall
moved to MG folder
all duplicates except the tri test which was only in mesh modifier folder and got moved over to the mesh generator folder
duplicate of subdomain_bounding_box_generator Tests
the only difference is the 2-level refine in the mesh modifier test. This doesnt really affect anything, it just made the original test more expensive.
duplicate of subdomain_id_generator
original test was a diffusion solve, replaced by mesh-only
Total duplicate of mesh_side_set_generator test
total duplicate of transform_mesh_generator
The mesh modifier tests covered 12 different cases. The new mesh generator tests covered the 1st one then a 13th and 14th additional case. While input
files (and gold files) were checked in for the 12 cases in the mesh_generator folder, the test specs were not written. The mesh modifier folder was deleted
and the mesh generator test specs are now written for those 11 cases.
The depend_with_force_prepare test is testing a parameter that no longer exists (force_prepare), so it's not really doing much. It's removed now
The other test tests ordering of mesh generators. It has no direct equivalent in the new tests but it does overall gets tested a lot.
I moved the folder over to meshgenerators/order_of_generation
duplicate of boundingbox_nodeset_generator folder. The mesh modifier tests were diffusion solves, mesh generator tests are --mesh-only. Same testing power
test is part of the parsed_generate_sideset suite (which includes more)
The mesh modifier tests were testing stacks of images and 3D images, while the tests in image_mesh_generator/ only had a single image test. The mesh_modifier folder tests were moved to the mesh generator corresponding folder