-
Notifications
You must be signed in to change notification settings - Fork 299
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
refactor SwitchParams to fix the incosistencies in the spawner tests #1638
refactor SwitchParams to fix the incosistencies in the spawner tests #1638
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #1638 +/- ##
==========================================
+ Coverage 88.03% 88.04% +0.01%
==========================================
Files 108 108
Lines 10006 10024 +18
Branches 891 892 +1
==========================================
+ Hits 8809 8826 +17
- Misses 877 878 +1
Partials 320 320
Flags with carried forward coverage won't be shown. Click here to find out more.
|
0ce923d
to
22e6ca1
Compare
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.
Thanks for addressing these issues!
Changes look fine, but I'm not sufficiently proficient in reviewing the multi-thread stuff.
The CI failures happen back to humble, can we backport this PR?
ABI breaks might not be that critical because this is an internal class only?
This PR reduces coverage because of the untested fallback branches. Could we add any tests there?
I believe yes! This can be backported without any issues as you said it is only an ABI change |
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.
A pretty elegant solution, I'm only questioning the reset()
function part
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.
I find this very good. Just to clarify, I am not sure how this solves multiple calls from the spawner and unspawner. Should't they be already blocked at the service callback level?
Hello @destogl! The problem is not in the spawner per se, the problem in the wall timers that we use inside the tests and other places. The wall timers are sometimes triggering the same callback twice, and hence the |
* [ResourceManager] Make destructor virtual for use in derived classes (#1607) * Fix typos in test_resource_manager.cpp (#1609) * [CM] Remove support for the description parameter and use only `robot_description` topic (#1358) --------- Co-authored-by: Felix Exner <exner@fzi.de> Co-authored-by: Christoph Froehlich <christoph.froehlich@ait.ac.at> * move critical variables to the private context (#1623) * Fix controller starting with later load of robot description test (#1624) * Fix the duplicated restart of the controller_manager services initialization * Scope the ControllerManagerRunner to avoid malloc and other test issues * reorder the tests for consistent log at the end * Remove noqa (#1626) * Unused header cleanup (#1627) * Create debugging.rst (#1625) --------- Co-authored-by: Sai Kishor Kothakota <saisastra3@gmail.com> Co-authored-by: Christoph Froehlich <christoph.froehlich@ait.ac.at> * Update changelogs * 4.14.0 * add missing rclcpp logging include for Humble compatibility build (#1635) * [CM] Remove deprecated spawner args (#1639) * Add a pytest launch file to test ros2_control_node (#1636) * Fix rst markup (#1642) * Fix rqt_cm paragraph * Fix indent * CM: Add missing includes (#1641) * [RM] Add `get_hardware_info` method to the Hardware Components (#1643) * Fix the namespaced controller_manager spawner + added tests (#1640) * Bump version of pre-commit hooks (#1649) Co-authored-by: christophfroehlich <3367244+christophfroehlich@users.noreply.github.com> * Add missing include for executors (#1653) * Update changelogs * 4.15.0 * refactor SwitchParams to fix the incosistencies in the spawner tests (#1638) * Modify test with missing CM to have a timeout * Catch exception when CM services are not found And print the error and exit in the application * Exit with code 1 on unreached CM --------- Co-authored-by: Sai Kishor Kothakota <sai.kishor@pal-robotics.com> Co-authored-by: Parker Drouillard <parker@pepcorp.ca> Co-authored-by: Dr. Denis <denis@stoglrobotics.de> Co-authored-by: Christoph Froehlich <christoph.froehlich@ait.ac.at> Co-authored-by: Christoph Fröhlich <christophfroehlich@users.noreply.github.com> Co-authored-by: Henry Moore <henry.moore@picknik.ai> Co-authored-by: Lennart Nachtigall <firesurfer127@gmail.com> Co-authored-by: Sai Kishor Kothakota <saisastra3@gmail.com> Co-authored-by: Bence Magyar <bence.magyar.robotics@gmail.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: christophfroehlich <3367244+christophfroehlich@users.noreply.github.com>
This PR aims to fix the inconsistencies that are observed with the spawner_unspawner tests and could be reproducible at higher frequencies as well. It seems to be that due to the wall_timer etc the manager_switch was trigger twice and causing the crashes, and upon checking there are missing guards and mutexes to protect this context.
The changes are also tested on the real hardware! :)
The following failures are caused with the current setup and is solved with the changes proposed in this PR:
Fixes: #1637
Fixes: #1368
Fixes: #1647
Fixes: #1657
Fixes: #1644
Fixes: ros-controls/ros2_control_ci#105
Fixes: ros-controls/ros2_control_ci#106
Fixes: ros-controls/ros2_control_ci#107
Fixes: ros-controls/ros2_control_ci#108