Skip to content

Commit

Permalink
Fix log category name macro collision in MacOS (#5585) (#5595)
Browse files Browse the repository at this point in the history
* Fix log category name macro collision in `MacOS`  (#5585)

* Refs #22657: BB test

Signed-off-by: Mario Domínguez López <mariodominguez@eprosima.com>

* Refs #22657: Fix

Signed-off-by: Mario Domínguez López <mariodominguez@eprosima.com>

* Refs #22657: Make test available in all platforms

Signed-off-by: Mario Dominguez <mariodominguez@eprosima.com>

* Refs #22657: Apply missing Miguels suggestion

Signed-off-by: Mario Dominguez <mariodominguez@eprosima.com>

---------

Signed-off-by: Mario Domínguez López <mariodominguez@eprosima.com>
Signed-off-by: Mario Dominguez <mariodominguez@eprosima.com>
(cherry picked from commit a59d32f)

# Conflicts:
#	src/cpp/rtps/RTPSDomain.cpp

* Fix conflicts

Signed-off-by: Miguel Company <miguelcompany@eprosima.com>

---------

Signed-off-by: Miguel Company <miguelcompany@eprosima.com>
Co-authored-by: Mario Domínguez López <116071334+Mario-DL@users.noreply.github.com>
Co-authored-by: Miguel Company <miguelcompany@eprosima.com>
(cherry picked from commit 55cf7b2)

# Conflicts:
#	src/cpp/fastdds/domain/DomainParticipantFactory.cpp
  • Loading branch information
mergify[bot] committed Jan 31, 2025
1 parent f8e3baf commit 9706fa6
Show file tree
Hide file tree
Showing 3 changed files with 190 additions and 3 deletions.
147 changes: 147 additions & 0 deletions src/cpp/fastdds/domain/DomainParticipantFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,139 @@ ReturnCode_t DomainParticipantFactory::get_participant_qos_from_profile(
return ReturnCode_t::RETCODE_OK;
}

<<<<<<< HEAD
return ReturnCode_t::RETCODE_BAD_PARAMETER;
=======
return RETCODE_BAD_PARAMETER;
}

ReturnCode_t DomainParticipantFactory::get_participant_qos_from_xml(
const std::string& xml,
DomainParticipantQos& qos) const
{
ParticipantAttributes attr;
if (XMLP_ret::XML_OK == XMLProfileManager::fill_participant_attributes_from_xml(xml, attr, false))
{
qos = default_participant_qos_;
utils::set_qos_from_attributes(qos, attr.rtps);
return RETCODE_OK;
}

return RETCODE_BAD_PARAMETER;
}

ReturnCode_t DomainParticipantFactory::get_participant_qos_from_xml(
const std::string& xml,
DomainParticipantQos& qos,
const std::string& profile_name) const
{
if (profile_name.empty())
{
EPROSIMA_LOG_ERROR(DDS_DOMAIN, "Provided profile name must be non-empty");
return RETCODE_BAD_PARAMETER;
}

ParticipantAttributes attr;
if (XMLP_ret::XML_OK == XMLProfileManager::fill_participant_attributes_from_xml(xml, attr, true, profile_name))
{
qos = default_participant_qos_;
utils::set_qos_from_attributes(qos, attr.rtps);
return RETCODE_OK;
}

return RETCODE_BAD_PARAMETER;
}

ReturnCode_t DomainParticipantFactory::get_default_participant_qos_from_xml(
const std::string& xml,
DomainParticipantQos& qos) const
{
ParticipantAttributes attr;
if (XMLP_ret::XML_OK == XMLProfileManager::fill_default_participant_attributes_from_xml(xml, attr, true))
{
qos = default_participant_qos_;
utils::set_qos_from_attributes(qos, attr.rtps);
return RETCODE_OK;
}

return RETCODE_BAD_PARAMETER;
}

ReturnCode_t DomainParticipantFactory::get_participant_extended_qos_from_profile(
const std::string& profile_name,
DomainParticipantExtendedQos& extended_qos) const
{
ParticipantAttributes attr;
if (XMLP_ret::XML_OK == XMLProfileManager::fillParticipantAttributes(profile_name, attr, false))
{
extended_qos = default_participant_qos_;
utils::set_extended_qos_from_attributes(extended_qos, attr);
return RETCODE_OK;
}

return RETCODE_BAD_PARAMETER;
}

ReturnCode_t DomainParticipantFactory::get_participant_extended_qos_from_xml(
const std::string& xml,
DomainParticipantExtendedQos& extended_qos) const
{
ParticipantAttributes attr;
if (XMLP_ret::XML_OK == XMLProfileManager::fill_participant_attributes_from_xml(xml, attr, false))
{
extended_qos = default_participant_qos_;
utils::set_extended_qos_from_attributes(extended_qos, attr);
return RETCODE_OK;
}

return RETCODE_BAD_PARAMETER;
}

ReturnCode_t DomainParticipantFactory::get_participant_extended_qos_from_xml(
const std::string& xml,
DomainParticipantExtendedQos& extended_qos,
const std::string& profile_name) const
{
if (profile_name.empty())
{
EPROSIMA_LOG_ERROR(DDS_DOMAIN, "Provided profile name must be non-empty");
return RETCODE_BAD_PARAMETER;
}

ParticipantAttributes attr;
if (XMLP_ret::XML_OK == XMLProfileManager::fill_participant_attributes_from_xml(xml, attr, true, profile_name))
{
extended_qos = default_participant_qos_;
utils::set_extended_qos_from_attributes(extended_qos, attr);
return RETCODE_OK;
}

return RETCODE_BAD_PARAMETER;
}

ReturnCode_t DomainParticipantFactory::get_default_participant_extended_qos_from_xml(
const std::string& xml,
DomainParticipantExtendedQos& extended_qos) const
{
ParticipantAttributes attr;
if (XMLP_ret::XML_OK == XMLProfileManager::fill_default_participant_attributes_from_xml(xml, attr, true))
{
extended_qos = default_participant_qos_;
utils::set_extended_qos_from_attributes(extended_qos, attr);
return RETCODE_OK;
}

return RETCODE_BAD_PARAMETER;
}

ReturnCode_t DomainParticipantFactory::get_participant_extended_qos_from_default_profile(
DomainParticipantExtendedQos& extended_qos) const
{
ParticipantAttributes attr;
XMLProfileManager::getDefaultParticipantAttributes(attr);
utils::set_extended_qos_from_attributes(extended_qos, attr);
return RETCODE_OK;
>>>>>>> 55cf7b2a (Fix log category name macro collision in `MacOS` (#5585) (#5595))
}

ReturnCode_t DomainParticipantFactory::load_profiles()
Expand Down Expand Up @@ -361,8 +493,13 @@ ReturnCode_t DomainParticipantFactory::load_XML_profiles_file(
{
if (XMLP_ret::XML_ERROR == XMLProfileManager::loadXMLFile(xml_profile_file))
{
<<<<<<< HEAD
EPROSIMA_LOG_ERROR(DOMAIN, "Problem loading XML file '" << xml_profile_file << "'");
return ReturnCode_t::RETCODE_ERROR;
=======
EPROSIMA_LOG_ERROR(DDS_DOMAIN, "Problem loading XML file '" << xml_profile_file << "'");
return RETCODE_ERROR;
>>>>>>> 55cf7b2a (Fix log category name macro collision in `MacOS` (#5585) (#5595))
}
return ReturnCode_t::RETCODE_OK;
}
Expand All @@ -373,8 +510,13 @@ ReturnCode_t DomainParticipantFactory::load_XML_profiles_string(
{
if (XMLP_ret::XML_ERROR == XMLProfileManager::loadXMLString(data, length))
{
<<<<<<< HEAD
EPROSIMA_LOG_ERROR(DOMAIN, "Problem loading XML string");
return ReturnCode_t::RETCODE_ERROR;
=======
EPROSIMA_LOG_ERROR(DDS_DOMAIN, "Problem loading XML string");
return RETCODE_ERROR;
>>>>>>> 55cf7b2a (Fix log category name macro collision in `MacOS` (#5585) (#5595))
}
return ReturnCode_t::RETCODE_OK;
}
Expand All @@ -385,8 +527,13 @@ ReturnCode_t DomainParticipantFactory::check_xml_static_discovery(
eprosima::fastrtps::xmlparser::XMLEndpointParser parser;
if (XMLP_ret::XML_OK != parser.loadXMLFile(xml_file))
{
<<<<<<< HEAD
EPROSIMA_LOG_ERROR(DOMAIN, "Error parsing xml file");
return ReturnCode_t::RETCODE_ERROR;
=======
EPROSIMA_LOG_ERROR(DDS_DOMAIN, "Error parsing xml file");
return RETCODE_ERROR;
>>>>>>> 55cf7b2a (Fix log category name macro collision in `MacOS` (#5585) (#5595))
}
return ReturnCode_t::RETCODE_OK;
}
Expand Down
6 changes: 3 additions & 3 deletions src/cpp/rtps/RTPSDomain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -543,7 +543,7 @@ RTPSParticipant* RTPSDomainImpl::clientServerEnvironmentCreationOverride(
// Check the specified discovery protocol: if other than simple it has priority over ros environment variable
if (att.builtin.discovery_config.discoveryProtocol != DiscoveryProtocol_t::SIMPLE)
{
EPROSIMA_LOG_INFO(DOMAIN, "Detected non simple discovery protocol attributes."
EPROSIMA_LOG_INFO(RTPS_DOMAIN, "Detected non simple discovery protocol attributes."
<< " Ignoring auto default client-server setup.");
return nullptr;
}
Expand Down Expand Up @@ -664,13 +664,13 @@ RTPSParticipant* RTPSDomainImpl::clientServerEnvironmentCreationOverride(
if (nullptr != part)
{
// Client successfully created
EPROSIMA_LOG_INFO(DOMAIN, "Auto default server-client setup. Default client created.");
EPROSIMA_LOG_INFO(RTPS_DOMAIN, "Auto default server-client setup. Default client created.");
part->mp_impl->client_override(true);
return part;
}

// Unable to create auto server-client default participants
EPROSIMA_LOG_ERROR(DOMAIN, "Auto default server-client setup. Unable to create the client.");
EPROSIMA_LOG_ERROR(RTPS_DOMAIN, "Auto default server-client setup. Unable to create the client.");
return nullptr;
}

Expand Down
40 changes: 40 additions & 0 deletions test/blackbox/common/DDSBlackboxTestsBasic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -982,6 +982,46 @@ TEST(DDSBasic, successful_destruction_among_intraprocess_participants)
fastrtps::xmlparser::XMLProfileManager::library_settings(old_library_settings);
}

TEST(DDSBasic, participant_factory_output_log_error_no_macro_collision)
{
using Log = eprosima::fastdds::dds::Log;
using LogConsumer = eprosima::fastdds::dds::LogConsumer;

// A LogConsumer that just counts the number of entries consumed
struct TestConsumer : public LogConsumer
{
TestConsumer(
std::atomic_size_t& n_logs_ref)
: n_logs_(n_logs_ref)
{
}

void Consume(
const Log::Entry&) override
{
++n_logs_;
}

private:

std::atomic_size_t& n_logs_;
};

// Counter for log entries
std::atomic<size_t>n_logs{};

// Prepare Log module to check that no SECURITY errors are produced
Log::SetCategoryFilter(std::regex("DOMAIN"));
Log::SetVerbosity(Log::Kind::Error);
Log::RegisterConsumer(std::unique_ptr<LogConsumer>(new TestConsumer(n_logs)));

auto dpf = DomainParticipantFactory::get_shared_instance();
DomainParticipantQos qos;
dpf->get_participant_qos_from_xml("", qos, "");
Log::Flush();
ASSERT_GE(n_logs.load(), 1u);
}

} // namespace dds
} // namespace fastdds
} // namespace eprosima

0 comments on commit 9706fa6

Please sign in to comment.