diff --git a/hbp_nrp_music_interface/hbp_nrp_music_interface/launch/MUSICLauncher.py b/hbp_nrp_music_interface/hbp_nrp_music_interface/launch/MUSICLauncher.py index f5088300247494e028669191fdc4988af55fbaca..bb034aff1f7243434f3ade3c77823b7bb82ffec2 100644 --- a/hbp_nrp_music_interface/hbp_nrp_music_interface/launch/MUSICLauncher.py +++ b/hbp_nrp_music_interface/hbp_nrp_music_interface/launch/MUSICLauncher.py @@ -133,3 +133,6 @@ class MUSICLauncher(object): if self._launcher: self._launcher.shutdown() self._launcher = None + + # finally, cleanup the roscore and any registrations launched by the above + os.system("echo 'y' | timeout -s SIGKILL 10s rosnode cleanup >/dev/null 2>&1") diff --git a/hbp_nrp_music_interface/hbp_nrp_music_interface/tests/launch/test_music_launcher.py b/hbp_nrp_music_interface/hbp_nrp_music_interface/tests/launch/test_music_launcher.py index 6148bfe85ec2f6ce303f516158d53e054904eafb..696944096bc6e4f8851a6d029c14f6932b76c305 100644 --- a/hbp_nrp_music_interface/hbp_nrp_music_interface/tests/launch/test_music_launcher.py +++ b/hbp_nrp_music_interface/hbp_nrp_music_interface/tests/launch/test_music_launcher.py @@ -47,7 +47,8 @@ class TestMUSICLauncher(unittest.TestCase): self.__launcher.cle_server.build.assert_called_once() self.__launcher.cle_server.launch.assert_called_once() - def test_shutdown(self): + @patch('os.system') + def test_shutdown(self, system_mock): # mock the cleserver and launcher mock_cle_server = Mock() @@ -68,5 +69,8 @@ class TestMUSICLauncher(unittest.TestCase): self.assertEqual(self.__launcher.cle_server, None) self.assertEqual(self.__launcher._launcher, None) + # verify the ros cleanup command has been called + system_mock.assert_called_once() + if __name__ == "__main__": unittest.main()