diff --git a/test_launch_ros/package.xml b/test_launch_ros/package.xml
index 45bece3e..7bafbcf6 100644
--- a/test_launch_ros/package.xml
+++ b/test_launch_ros/package.xml
@@ -25,6 +25,7 @@
composition
demo_nodes_py
launch_ros
+ launch_testing_ros
launch_xml
launch_yaml
lifecycle
@@ -34,6 +35,7 @@
python3-yaml
rclcpp_components
rclpy
+ rmw_test_fixture_implementation
rosgraph_msgs
diff --git a/test_launch_ros/test/test_launch_ros/actions/test_composable_node_container.py b/test_launch_ros/test/test_launch_ros/actions/test_composable_node_container.py
index 4314d1d6..154cd23b 100644
--- a/test_launch_ros/test/test_launch_ros/actions/test_composable_node_container.py
+++ b/test_launch_ros/test/test_launch_ros/actions/test_composable_node_container.py
@@ -25,6 +25,8 @@
from launch_ros.descriptions import ComposableNode
from launch_ros.utilities import get_node_name_count
+from launch_testing_ros.actions import EnableRmwIsolation
+
import osrf_pycommon.process_utils
TEST_CONTAINER_NAME = 'test_component_container_node_name'
@@ -34,7 +36,7 @@
def _assert_launch_no_errors(actions, *, timeout_sec=5):
- ld = LaunchDescription(actions)
+ ld = LaunchDescription([EnableRmwIsolation(), *actions])
ls = LaunchService(debug=True)
ls.include_launch_description(ld)
diff --git a/test_launch_ros/test/test_launch_ros/actions/test_load_composable_nodes.py b/test_launch_ros/test/test_launch_ros/actions/test_load_composable_nodes.py
index bee37809..8391f1f2 100644
--- a/test_launch_ros/test/test_launch_ros/actions/test_load_composable_nodes.py
+++ b/test_launch_ros/test/test_launch_ros/actions/test_load_composable_nodes.py
@@ -38,6 +38,8 @@
import rclpy.executors
import rclpy.node
+from rmw_test_fixture_implementation import RMWTestIsolator
+
TEST_CONTAINER_NAME = 'mock_component_container'
TEST_NODE_NAME = 'test_load_composable_nodes_node'
@@ -103,20 +105,21 @@ def _load_composable_node(
@pytest.fixture
def mock_component_container():
- context = rclpy.context.Context()
- with rclpy.init(context=context):
- executor = rclpy.executors.SingleThreadedExecutor(context=context)
-
- container = MockComponentContainer(context)
- executor.add_node(container)
-
- # Start spinning in a thread
- thread = threading.Thread(target=lambda executor: executor.spin(), args=(executor,))
- thread.start()
- yield container
- executor.remove_node(container)
- executor.shutdown()
- thread.join()
+ with RMWTestIsolator():
+ context = rclpy.context.Context()
+ with rclpy.init(context=context):
+ executor = rclpy.executors.SingleThreadedExecutor(context=context)
+
+ container = MockComponentContainer(context)
+ executor.add_node(container)
+
+ # Start spinning in a thread
+ thread = threading.Thread(target=lambda executor: executor.spin(), args=(executor,))
+ thread.start()
+ yield container
+ executor.remove_node(container)
+ executor.shutdown()
+ thread.join()
def test_load_node(mock_component_container):
diff --git a/test_launch_ros/test/test_launch_ros/actions/test_ros_timer.py b/test_launch_ros/test/test_launch_ros/actions/test_ros_timer.py
index 7f1c37e7..482c493b 100644
--- a/test_launch_ros/test/test_launch_ros/actions/test_ros_timer.py
+++ b/test_launch_ros/test/test_launch_ros/actions/test_ros_timer.py
@@ -28,6 +28,7 @@
import pytest
import rclpy
from rclpy.clock import Clock, ClockType
+from rmw_test_fixture_implementation import RMWTestIsolator
from rosgraph_msgs.msg import Clock as ClockMsg
@@ -151,7 +152,7 @@ def test_shutdown_preempts_timers():
@pytest.fixture
def rclpy_node():
- with rclpy.init():
+ with RMWTestIsolator(), rclpy.init():
node = rclpy.create_node('test_ros_timer_action_node')
yield node
diff --git a/test_launch_ros/test/test_launch_ros/frontend/test_component_container.py b/test_launch_ros/test/test_launch_ros/frontend/test_component_container.py
index 53192632..735fa997 100644
--- a/test_launch_ros/test/test_launch_ros/frontend/test_component_container.py
+++ b/test_launch_ros/test/test_launch_ros/frontend/test_component_container.py
@@ -17,10 +17,12 @@
import io
import textwrap
+from launch import LaunchDescription
from launch import LaunchService
from launch.frontend import Parser
from launch.utilities import perform_substitutions
from launch_ros.utilities import evaluate_parameters
+from launch_testing_ros.actions import EnableRmwIsolation
import osrf_pycommon.process_utils
import pytest
@@ -174,6 +176,7 @@ def test_launch_container_executor_modes(file_factory, container_args):
root_entity, parser = Parser.load(f)
ld = parser.parse_description(root_entity)
ls = LaunchService()
+ ls.include_launch_description(LaunchDescription([EnableRmwIsolation()]))
ls.include_launch_description(ld)
loop = osrf_pycommon.process_utils.get_loop()
@@ -196,6 +199,7 @@ def check_launch_component_container(file):
root_entity, parser = Parser.load(file)
ld = parser.parse_description(root_entity)
ls = LaunchService()
+ ls.include_launch_description(LaunchDescription([EnableRmwIsolation()]))
ls.include_launch_description(ld)
loop = osrf_pycommon.process_utils.get_loop()
diff --git a/test_launch_ros/test/test_launch_ros/frontend/test_lifecycle_node_frontend.py b/test_launch_ros/test/test_launch_ros/frontend/test_lifecycle_node_frontend.py
index 0a5e0ce7..8c165773 100644
--- a/test_launch_ros/test/test_launch_ros/frontend/test_lifecycle_node_frontend.py
+++ b/test_launch_ros/test/test_launch_ros/frontend/test_lifecycle_node_frontend.py
@@ -17,11 +17,13 @@
import pathlib
import textwrap
+from launch import LaunchDescription
from launch import LaunchService
from launch.frontend import Parser
from launch.utilities import type_utils
from launch_ros.actions import LifecycleNode
from launch_ros.utilities import evaluate_parameters
+from launch_testing_ros.actions import EnableRmwIsolation
import osrf_pycommon.process_utils
yaml_params = str(pathlib.Path(__file__).parent / 'params.yaml')
@@ -105,6 +107,7 @@ def check_launch_lifecycle_node(file):
root_entity, parser = Parser.load(file)
ld = parser.parse_description(root_entity)
ls = LaunchService()
+ ls.include_launch_description(LaunchDescription([EnableRmwIsolation()]))
ls.include_launch_description(ld)
loop = osrf_pycommon.process_utils.get_loop()
diff --git a/test_launch_ros/test/test_launch_ros/utilities/test_track_node_names.py b/test_launch_ros/test/test_launch_ros/utilities/test_track_node_names.py
index 9fce6b58..732010d1 100644
--- a/test_launch_ros/test/test_launch_ros/utilities/test_track_node_names.py
+++ b/test_launch_ros/test/test_launch_ros/utilities/test_track_node_names.py
@@ -27,6 +27,8 @@
from launch_ros.utilities import add_node_name
from launch_ros.utilities import get_node_name_count
+from launch_testing_ros.actions import EnableRmwIsolation
+
import osrf_pycommon.process_utils
TEST_NODE_NAMESPACE = '/my_namespace'
@@ -46,6 +48,7 @@ def test_node_name_count():
def _launch(launch_description):
loop = osrf_pycommon.process_utils.get_loop()
ls = LaunchService()
+ ls.include_launch_description(LaunchDescription([EnableRmwIsolation()]))
ls.include_launch_description(launch_description)
launch_task = loop.create_task(ls.run_async())
loop.run_until_complete(asyncio.sleep(5))