コード例 #1
0
import launch_testing.asserts
import launch_testing.markers
import launch_testing.tools

import pytest

from rclpy.utilities import get_available_rmw_implementations

sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from utilities.sros2_cli_test_case import generate_sros2_cli_test_description  # noqa: E402
from utilities.sros2_cli_test_case import SROS2CLITestCase  # noqa: E402


@pytest.mark.rostest
@launch_testing.parametrize('rmw_implementation,use_daemon', itertools.product(
    get_available_rmw_implementations(), (True, False)
))
@launch_testing.markers.keep_alive
def generate_test_description(rmw_implementation, use_daemon):
    return generate_sros2_cli_test_description(
        fixture_actions=[ReadyToTest()],
        rmw_implementation=rmw_implementation,
        use_daemon=use_daemon
    ), locals()


class TestSROS2GeneratePolicyVerbWithNoNodes(SROS2CLITestCase):

    def test_generate_policy_no_nodes(self):
        with tempfile.TemporaryDirectory() as tmpdir:
            with self.launch_sros2_command(
コード例 #2
0
ファイル: test_cli.py プロジェクト: sunbo57123/ros2cli
import pytest

from rclpy.utilities import get_available_rmw_implementations


# Skip cli tests on Windows while they exhibit pathological behavior
# https://github.com/ros2/build_farmer/issues/248
if sys.platform.startswith('win'):
    pytest.skip(
            'CLI tests can block for a pathological amount of time on Windows.',
            allow_module_level=True)


@pytest.mark.rostest
@launch_testing.parametrize('rmw_implementation', get_available_rmw_implementations())
def generate_test_description(rmw_implementation):
    path_to_fixtures = os.path.join(os.path.dirname(__file__), 'fixtures')
    additional_env = {
        'RMW_IMPLEMENTATION': rmw_implementation, 'PYTHONUNBUFFERED': '1'
    }

    path_to_talker_node_script = os.path.join(path_to_fixtures, 'talker_node.py')
    path_to_listener_node_script = os.path.join(path_to_fixtures, 'listener_node.py')

    hidden_talker_node_action = Node(
        executable=sys.executable,
        arguments=[path_to_talker_node_script],
        remappings=[('chatter', '_hidden_chatter')],
        additional_env=additional_env
    )
コード例 #3
0
def get_echo_call_output(**kwargs):
    request = BasicTypes.Request()
    for field_name, field_value in kwargs.items():
        setattr(request, field_name, field_value)
    response = BasicTypes.Response()
    for field_name, field_value in kwargs.items():
        setattr(response, field_name, field_value)
    return [
        'requester: making request: ' + repr(request), '', 'response:',
        repr(response), ''
    ]


@pytest.mark.rostest
@launch_testing.parametrize('rmw_implementation',
                            get_available_rmw_implementations())
def generate_test_description(rmw_implementation):
    path_to_echo_server_script = os.path.join(os.path.dirname(__file__),
                                              'fixtures', 'echo_server.py')
    additional_env = {'RMW_IMPLEMENTATION': rmw_implementation}
    return LaunchDescription([
        # Always restart daemon to isolate tests.
        ExecuteProcess(
            cmd=['ros2', 'daemon', 'stop'],
            name='daemon-stop',
            on_exit=[
                ExecuteProcess(
                    cmd=['ros2', 'daemon', 'start'],
                    name='daemon-start',
                    on_exit=[
                        # Add test fixture actions.