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
9 changes: 0 additions & 9 deletions include/fastdds/statistics/dds/domain/DomainParticipant.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,7 @@
#include <fastdds/dds/builtin/topic/PublicationBuiltinTopicData.hpp>
#include <fastdds/dds/builtin/topic/SubscriptionBuiltinTopicData.hpp>
#include <fastdds/dds/core/ReturnCode.hpp>
#include <fastdds/dds/core/status/StatusMask.hpp>
#include <fastdds/dds/domain/DomainParticipant.hpp>
#include <fastdds/dds/domain/DomainParticipantFactory.hpp>
#include <fastdds/dds/publisher/qos/DataWriterQos.hpp>
#include <fastdds/fastdds_dll.hpp>

Expand All @@ -49,13 +47,6 @@ class DomainParticipant : public eprosima::fastdds::dds::DomainParticipant
{
DomainParticipant() = delete;

protected:

DomainParticipant(
const eprosima::fastdds::dds::StatusMask& mask);

friend class eprosima::fastdds::dds::DomainParticipantFactory;

public:

/**
Expand Down
11 changes: 3 additions & 8 deletions src/cpp/fastdds/domain/DomainParticipantFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,6 @@
#include <xmlparser/XMLEndpointParser.h>
#include <xmlparser/XMLProfileManager.h>

#ifdef FASTDDS_STATISTICS
#include <fastdds/statistics/dds/domain/DomainParticipant.hpp>
#endif // ifdef FASTDDS_STATISTICS

using namespace eprosima::fastdds::xmlparser;

using eprosima::fastdds::rtps::RTPSDomain;
Expand Down Expand Up @@ -161,13 +157,12 @@ DomainParticipant* DomainParticipantFactory::create_participant(

const DomainParticipantQos& pqos = (&qos == &PARTICIPANT_QOS_DEFAULT) ? default_participant_qos_ : qos;

#ifndef FASTDDS_STATISTICS
DomainParticipant* dom_part = new DomainParticipant(mask);
#ifndef FASTDDS_STATISTICS
DomainParticipantImpl* dom_part_impl = new DomainParticipantImpl(dom_part, did, pqos, listener);
#else
statistics::dds::DomainParticipant* dom_part = new statistics::dds::DomainParticipant(mask);
statistics::dds::DomainParticipantImpl* dom_part_impl =
new statistics::dds::DomainParticipantImpl(dom_part, did, pqos, listener);
statistics::dds::DomainParticipantImpl* dom_part_impl = new statistics::dds::DomainParticipantImpl(dom_part, did,
pqos, listener);
#endif // FASTDDS_STATISTICS

if (fastdds::rtps::GUID_t::unknown() != dom_part_impl->guid())
Expand Down
10 changes: 2 additions & 8 deletions src/cpp/statistics/fastdds/domain/DomainParticipant.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,6 @@ namespace fastdds {
namespace statistics {
namespace dds {

DomainParticipant::DomainParticipant(
const eprosima::fastdds::dds::StatusMask& mask)
: eprosima::fastdds::dds::DomainParticipant(mask)
{
}

fastdds::dds::ReturnCode_t DomainParticipant::enable_statistics_datawriter(
const std::string& topic_name,
const eprosima::fastdds::dds::DataWriterQos& dwqos)
Expand Down Expand Up @@ -82,7 +76,7 @@ DomainParticipant* DomainParticipant::narrow(
eprosima::fastdds::dds::DomainParticipant* domain_participant)
{
#ifdef FASTDDS_STATISTICS
return static_cast<DomainParticipant*>(domain_participant);
return reinterpret_cast<DomainParticipant*>(domain_participant);
#else
(void)domain_participant;
return nullptr;
Expand All @@ -93,7 +87,7 @@ const DomainParticipant* DomainParticipant::narrow(
const eprosima::fastdds::dds::DomainParticipant* domain_participant)
{
#ifdef FASTDDS_STATISTICS
return static_cast<const DomainParticipant*>(domain_participant);
return reinterpret_cast<const DomainParticipant*>(domain_participant);
#else
(void)domain_participant;
return nullptr;
Expand Down
11 changes: 11 additions & 0 deletions test/blackbox/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,17 @@ set(DDS_BLACKBOXTESTS_SOURCE
${CMAKE_CURRENT_SOURCE_DIR}/../../src/cpp/rtps/messages/CDRMessage.cpp
)

# These statistics tests narrow a base DomainParticipant to statistics::dds::DomainParticipant
# and call members on it. That is intentional UB (the object is never constructed as the derived
# type, to avoid emitting its vtable and breaking ABI), so disable the vptr (bad-downcast) check
# for just these translation units
if(SANITIZER STREQUAL "UNDEFINED")
set_source_files_properties(
${CMAKE_CURRENT_SOURCE_DIR}/common/DDSBlackboxTestsStatistics.cpp
${CMAKE_CURRENT_SOURCE_DIR}/common/DDSBlackboxTestsMonitorService.cpp
PROPERTIES COMPILE_OPTIONS "-fno-sanitize=vptr")
endif()

# Prepare static discovery xml file for blackbox tests.
string(RANDOM LENGTH 4 ALPHABET 0123456789 TOPIC_RANDOM_NUMBER)
math(EXPR TOPIC_RANDOM_NUMBER "${TOPIC_RANDOM_NUMBER} + 0") # Remove extra leading 0s.
Expand Down
13 changes: 13 additions & 0 deletions test/unittest/statistics/dds/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,19 @@ if(TINYXML2_INCLUDE_DIR)
include_directories(${TINYXML2_INCLUDE_DIR})
endif(TINYXML2_INCLUDE_DIR)

# These tests narrow a base DomainParticipant to statistics::dds::DomainParticipant and call members
# on it. That is intentional UB (the object is never constructed as the derived type, to avoid
# emitting its vtable and breaking ABI), so disable the vptr (bad-downcast) check for just these
# translation units
if(SANITIZER STREQUAL "UNDEFINED")
set_source_files_properties(
StatisticsDomainParticipantTests.cpp
StatisticsQosTests.cpp
StatisticsDomainParticipantStatusQueryableTests.cpp
StatisticsDomainParticipantMockTests.cpp
PROPERTIES COMPILE_OPTIONS "-fno-sanitize=vptr")
endif()

## StatisticsDomainParticipantTests
set(STATISTICS_DOMAINPARTICIPANT_TESTS_SOURCE
StatisticsDomainParticipantTests.cpp
Expand Down
Loading