Skip to content

🧑‍🌾 rmw_connextdds support message making ROS2 CLI tests fail #1054

@Crola1702

Description

@Crola1702

Generated by Generative AI

Not completely generated by AI, but I used Claude Sonet 4.0 to get extra insights

Operating System:

Ubuntu noble

ROS version or commit hash:

Rolling, Kilted

RMW implementation (if applicable):

rmw_connextdds

RMW Configuration (if applicable):

No response

Client library (if applicable):

No response

'ros2 doctor --report' output

Steps to reproduce issue

  1. Run a build in any of the reference jobs
  2. See test regression fail

Expected behavior

Tests should not fail

Actual behavior

Tests are failing

Additional information

Reference builds:

Multiple ROS2 CLI tests are failing when using RTI Connext DDS middleware (rmw_connextdds) because RTI is printing an unwanted support message at the beginning of command output:

Please contact support@rti.com with any questions or comments.

It seems this extra line causes launch_testing.tools.expect_output() to fail when using strict=True mode, as the actual output no longer matches the expected output exactly. The issue affects multiple ROS2 CLI commands including ros2 param, ros2 action, and ros2 service.

Affected Commands

  • ros2 param list
  • ros2 param dump
  • ros2 param load
  • ros2 action send_goal
  • ros2 service list
  • ros2 service echo
Log Output

ros2 param list Test Failure

FAIL: test_verb_list.TestVerbList.test_verb_list[rmw_connextdds]
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/ws/install_isolated/launch_testing/lib/python3.12/site-packages/launch_testing/markers.py", line 61, in _wrapper
    return func(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/ws/src/ros2/ros2cli/ros2param/test/test_verb_list.py", line 176, in test_verb_list
    assert launch_testing.tools.expect_output(
AssertionError: assert False
 +  where False = <function expect_output at 0x7db597a80860>(expected_lines=['  bool_array_param', '  bool_param', '  double_array_param', '  double_param', '  foo.bar.str_param', '  foo.str_param', ...], text='Please contact support@rti.com with any questions or comments.\n  bool_array_param\n  bool_param\n  double_array_para...am\n  int_array_param\n  int_param\n  start_type_description_service\n  str_array_param\n  str_param\n  use_sim_time\n', strict=True)

ros2 param dump Test Failure

FAIL: test_verb_dump.TestVerbDump.test_verb_dump[rmw_connextdds]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/ws/src/ros2/ros2cli/ros2param/test/test_verb_dump.py", line 207, in test_verb_dump
    assert launch_testing.tools.expect_output(
AssertionError: assert False
 +  where False = <function expect_output at 0x7db597a80860>(expected_text=('/foo/test_node:\n  ros__parameters:\n    bool_array_param:\n    - false\n    - false\n    - true\n    bool_param: tru...ce: true\n    str_array_param:\n    - foo\n    - bar\n    - baz\n    str_param: Hello World\n    use_sim_time: false\n' + '\n'), text='Please contact support@rti.com with any questions or comments.\n/foo/test_node:\n  ros__parameters:\n    bool_array_p...: true\n    str_array_param:\n    - foo\n    - bar\n    - baz\n    str_param: Hello World\n    use_sim_time: false\n\n', strict=True)

ros2 param load Test Failure with YAML Parsing Error

FAIL: test_verb_load.TestVerbLoad.test_verb_load_wildcard[rmw_connextdds]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/ws/src/ros2/ros2cli/ros2param/test/test_verb_load.py", line 350, in test_verb_load_wildcard
    loaded_params = yaml.safe_load(param_dump_command.output)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/__init__.py", line 125, in safe_load
    return load(stream, SafeLoader)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/__init__.py", line 81, in load
    return loader.get_single_data()
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/constructor.py", line 49, in get_single_data
    node = self.get_single_node()
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/composer.py", line 36, in get_single_node
    document = self.compose_document()
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/composer.py", line 58, in compose_document
    self.get_event()
  File "/usr/lib/python3/dist-packages/yaml/parser.py", line 118, in get_event
    self.current_event = self.state()
                         ^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/parser.py", line 193, in parse_document_end
    token = self.peek_token()
            ^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/scanner.py", line 129, in peek_token
    self.fetch_more_tokens()
  File "/usr/lib/python3/dist-packages/yaml/scanner.py", line 223, in fetch_more_tokens
    return self.fetch_value()
           ^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/yaml/scanner.py", line 577, in fetch_value
    raise ScannerError(None, None,
yaml.scanner.ScannerError: mapping values are not allowed here
  in "<unicode string>", line 2, column 15:
    /foo/test_node:
                  ^

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/tmp/ws/src/ros2/ros2cli/ros2param/test/test_verb_load.py", line 355, in test_verb_load_wildcard
    self.fail(f'Failed to parse YAML output: {e}')
AssertionError: Failed to parse YAML output: mapping values are not allowed here
  in "<unicode string>", line 2, column 15:
    /foo/test_node:
                  ^

ros2 action send_goal Test Failure

FAIL: test_cli.TestROS2ActionCLI.test_send_fibonacci_goal[rmw_connextdds]
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/ws/src/ros2/ros2cli/ros2action/test/test_cli.py", line 271, in test_send_fibonacci_goal
    assert launch_testing.tools.expect_output(
AssertionError: assert False
 +  where False = <function expect_output at 0x7cfd42164360>(expected_lines=['Waiting for an action server to become available...', 'Sending goal:', '     order: 5', '', re.compile('Goal accepted with ID: [a-f0-9]+'), '', ...], text='Please contact support@rti.com with any questions or comments.\nWaiting for an action server to become available...\n...48058c37bcef0c829ebb\n\nResult:\n    sequence:\n- 0\n- 1\n- 1\n- 2\n- 3\n- 5\n\nGoal finished with status: SUCCEEDED\n', strict=True)

ros2 service echo Test Failure

FAIL: test_echo.TestROS2ServiceEcho.test_echo_no_arr[rmw_connextdds]
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/ws/src/ros2/ros2cli/ros2service/test/test_echo.py", line 160, in test_echo_no_arr
    assert service_command.wait_for_output(
AssertionError: assert <BoolWithText(False): "Please contact support@rti.com with any questions or comments.\nNo publishers on topic '/test_i...sicTypes_Request[1], length: 0>'\nresponse: '<sequence type: test_msgs/srv/BasicTypes_Response[1], length: 1>'\n---\n">

The issue also affects some tests with other middleware implementations (rmw_fastrtps_cpp, rmw_zenoh_cpp), suggesting this might be a broader configuration or environment issue.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions