Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,10 @@ add_blackbox_executable(

# Set flaky tests as xfail
add_xfail_label(${CMAKE_CURRENT_SOURCE_DIR}/TEST_XFAIL.list)

# Set as TSAN errors due to Fast DDS
# TODO: use a cmake_utils macro
file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/TEST_XTSAN.list TEST_LIST)
foreach(XTSAN_TEST ${TEST_LIST})
set_property(TEST ${XTSAN_TEST} PROPERTY LABELS xtsan)
endforeach()
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
DDSTestWAN.end_to_end_discovery_server_WAN_communication_UDPv4
DDSTestWAN.end_to_end_discovery_server_WAN_communication_UDPv6
DDSTestWAN.end_to_end_initial_peers_WAN_communication_UDPv6
DDSTestWAN.end_to_end_discovery_server_WAN_communication_high_throughput
8 changes: 6 additions & 2 deletions docs/rst/notes/forthcoming_version.rst
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@

.. add orphan tag when new info added to this file

:orphan:
.. :orphan:

###################
Forthcoming Version
###################

Next release will include the following **features**:

* New :ref:`user_manual_user_interface_log_verbosity_argument` and :ref:`user_manual_user_interface_log_filter_argument`
arguments to configure *DDS Router* and *Fast DDS* logs shown in application.
4 changes: 2 additions & 2 deletions docs/rst/notes/notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
.. _release_notes:

.. comment the include of forthcoming when new info is added
..
.. include:: forthcoming_version.rst

.. include:: forthcoming_version.rst

##############
Version v1.0.0
Expand Down
129 changes: 100 additions & 29 deletions docs/rst/user_manual/user_interface.rst
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ The |ddsrouter| application supports several input arguments:
-
-

* - :ref:`user_manual_user_interface_version_argument`
- ``-v``
- ``--version``
-
-

* - :ref:`user_manual_user_interface_configuration_file_argument`
- ``-c``
- ``--config-path``
Expand All @@ -60,14 +66,25 @@ The |ddsrouter| application supports several input arguments:
- ``-r``
- ``--reload-time``
- Unsigned Integer
- 0
- ``0``

* - :ref:`user_manual_user_interface_debug_argument`
- ``-d``
- ``--debug``
-
-

* - :ref:`user_manual_user_interface_log_verbosity_argument`
-
- ``--log-verbosity``
- ``info`` ``warning`` ``error``
- ``warning``

* - :ref:`user_manual_user_interface_log_filter_argument`
-
- ``--log-filter``
- String
- ``"DDSROUTER"``

.. _user_manual_user_interface_help_argument:

Expand All @@ -83,14 +100,27 @@ It shows the usage information of the application.
It will build a communication bridge between the different Participants included in the provided configuration file.
To stop the execution gracefully use SIGINT (C^) or SIGTERM (kill) signals.
General options:
-h --help Print this help message.
-c --config-path Path to the Configuration File (yaml format) [Default: ./DDS_ROUTER_CONFIGURATION.yaml].
-r --reload-time Time period in seconds to reload configuration file. This is needed when File Watcher
functionality is not available (e.g. config file is a symbolic link).
Value 0 does not reload file. [Default: 0].
-d --debug Activate debug Logs (be aware that some logs may require specific CMAKE compilation options).
-v --version Print version, branch and commit hash.
-t --timeout Set a maximum time in seconds for the Router to run. Value 0 does not set maximum. [Default: 0].

Application help and information.
-h --help Print this help message.
-v --version Print version, branch and commit hash.

Application parameters
-c --config-path Path to the Configuration File (yaml format) [Default: ./DDS_ROUTER_CONFIGURATION.yaml].
-r --reload-time Time period in seconds to reload configuration file. This is needed when FileWatcher functionality is not available (e.g. config file is a symbolic link). Value 0 does not reload file. [Default: 0].
-t --timeout Set a maximum time in seconds for the Router to run. Value 0 does not set maximum. [Default: 0].

Debug options
-d --debug Set log verbosity to Info (Using this option with --log-filter and/or --log-verbosity will head to undefined behaviour).
--log-filter Set a Regex Filter to filter by category the info and warning log entries. [Default = "DDSROUTER"].
--log-verbosity Set a Log Verbosity Level higher or equal the one given. (Values accepted: "info","warning","error" no Case Sensitive) [Default = "warning"].

.. _user_manual_user_interface_version_argument:

Version Argument
^^^^^^^^^^^^^^^^

It shows the current version of the DDS Router and the hash of the last commit of the compiled code.

.. _user_manual_user_interface_configuration_file_argument:

Expand All @@ -108,41 +138,47 @@ Reload Time Argument

Set the :ref:`user_manual_user_interface_reload_timer` in **seconds**.

.. _user_manual_user_interface_timeout_argument:

Timeout Argument
^^^^^^^^^^^^^^^^

This argument allow to set a maximum time while the application will be running.
Setting this argument will set the number of seconds the application will run until it is killed.
While the application is waiting for timeout, it is still possible to kill it via signal.
Default value ``0`` means that the application will run forever (until kill via signal).

.. _user_manual_user_interface_debug_argument:

Debug Argument
^^^^^^^^^^^^^^

Activate ``INFO`` and ``DEBUG`` logs for the |ddsrouter| execution.
For this argument to work, the |ddsrouter| must have been compiled with CMake option ``CMAKE_BUILD_TYPE=Debug``,
or compiled with CMake option ``LOG_INFO=ON``.
This argument enables the |ddsrouter| logs so the execution can be followed by internal debugging information.
This argument sets :ref:`user_manual_user_interface_log_verbosity_argument` to ``info`` and
:ref:`user_manual_user_interface_log_filter_argument` to ``DDSROUTER``.
For more information about debugging options, refer to :ref:`user_manual_user_interface_log`.

.. note::

If this option is enabled and Fast DDS has been compiled in debug mode, it will print the logs of the DDS Router
and Fast DDS mixed.
In order to skip Fast DDS logs, compile ``fastrtps`` library with CMake option ``-DLOG_NO_INFO=ON``
or ``CMAKE_BUILD_TYPE`` different to ``Debug``.
If this argument is used with any of the other arguments of debugging, the behavior depends on the order
of parser of the arguments.

.. _user_manual_user_interface_log_verbosity_argument:

.. _user_manual_user_interface_version_argument:
Log Verbosity Argument
^^^^^^^^^^^^^^^^^^^^^^

Version Argument
^^^^^^^^^^^^^^^^
Set the verbosity level so only log messages with equal or higher importance level are shown.

It shows the current version of the DDS Router and the hash of the last commit of the compiled code.
.. _user_manual_user_interface_log_filter_argument:

Log Filter Argument
^^^^^^^^^^^^^^^^^^^

.. _user_manual_user_interface_timeout_argument:

Timeout Argument
^^^^^^^^^^^^^^^^

This argument allow to set a maximum time while the application will be running.
Setting this argument will set the number of seconds the application will run until it is killed.
While the application is waiting for timeout, it is still possible to kill it via signal.
Default value ``0`` means that the application will run forever (until kill via signal).
Set a regex string as filter.
Only log messages with a category that matches this regex will be printed
(``ERROR`` messages will be always shown unless :ref:`user_manual_user_interface_log_verbosity_argument` is
set to ``ERROR``).


.. _user_manual_user_interface_configuration_file:
Expand Down Expand Up @@ -200,6 +236,41 @@ A timer could be set in order to periodically reload the configuration file.
The configuration file will be automatically reloaded according to the specified time period.


.. _user_manual_user_interface_log:

Log
---

Log module of |ddsrouter| uses the |fastdds| logging module.
This log has 3 severity levels: ``INFO``, ``WARNING`` and ``ERROR``.
Every log has also a category associated.
This is how a log looks like:

.. code::

Date Category Severity Log message Function
2022-11-16 14:58:13.375 [MODULE_SUBMODULE Error] It has happen ... because of ... -> Function main

Every log entry has several parts:

- **Date**: format: ``year-month-day hour::minute::second::millisecond`` with millisecond accuracy.
This is the time when the log was added to the log queue, not when it is printed.
- **Category**: Reference to the module where the log was raised. It is used to filter logs.
- **Severity**: Could be ``Info``, ``Warning`` or ``Error``.
- **Log message**: The actual log message.
- **Function**: Name of the function or method that has produced this log entry.


.. note::

For ``INFO`` logs to be compiled, the |ddsrouter| must have been compiled with CMake option ``CMAKE_BUILD_TYPE=Debug``,
or compiled with CMake option ``LOG_INFO=ON``.

If Fast DDS has been compiled in debug mode, it will print the logs of the DDS Router and Fast DDS mixed.
In order to skip Fast DDS logs, compile ``fastrtps`` library with CMake option ``-DLOG_NO_INFO=ON``
or ``CMAKE_BUILD_TYPE`` different to ``Debug``, or use the argument ``


.. _user_manual_user_interface_close_application:

Close Application
Expand Down
22 changes: 15 additions & 7 deletions tools/ddsrouter_tool/src/cpp/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include <cpp_utils/event/SignalEventHandler.hpp>
#include <cpp_utils/exception/ConfigurationException.hpp>
#include <cpp_utils/exception/InitializationException.hpp>
#include <cpp_utils/logging/CustomStdLogConsumer.hpp>
#include <cpp_utils/ReturnCode.hpp>
#include <cpp_utils/time/time_utils.hpp>
#include <cpp_utils/utils.hpp>
Expand All @@ -50,12 +51,13 @@ int main(
// Maximum timeout
eprosima::utils::Duration_ms timeout = 0;

// Debug option active
bool activate_debug = false;
// Debug options
std::string log_filter = "DDSROUTER";
eprosima::fastdds::dds::Log::Kind log_verbosity = eprosima::fastdds::dds::Log::Kind::Warning;

// Parse arguments
ui::ProcessReturnCode arg_parse_result =
ui::parse_arguments(argc, argv, file_path, reload_time, activate_debug, timeout);
ui::parse_arguments(argc, argv, file_path, reload_time, timeout, log_filter, log_verbosity);

if (arg_parse_result == ui::ProcessReturnCode::help_argument)
{
Expand Down Expand Up @@ -92,11 +94,16 @@ int main(

logUser(DDSROUTER_EXECUTION, "Starting DDS Router Tool execution.");

// Activate Debug
if (activate_debug)
// Debug
{
// Activate log
eprosima::utils::Log::SetVerbosity(eprosima::utils::Log::Kind::Info);
// Remove every consumer
eprosima::utils::Log::ClearConsumers();

// Activate log with verbosity, as this will avoid running log thread with not desired kind
eprosima::utils::Log::SetVerbosity(log_verbosity);

eprosima::utils::Log::RegisterConsumer(
std::make_unique<eprosima::utils::CustomStdLogConsumer>(log_filter, log_verbosity));

// NOTE:
// It will not filter any log, so Fast DDS logs will be visible unless Fast DDS is compiled
Expand All @@ -105,6 +112,7 @@ int main(
// Change it when Log Module is independent and with more extensive API.
// eprosima::utils::Log::SetCategoryFilter(std::regex("(DDSROUTER)"));
}

// Encapsulating execution in block to erase all memory correctly before closing process
try
{
Expand Down
Loading