Skip to content

Commit

Permalink
Refs #15841: Fix error in test mocking entities
Browse files Browse the repository at this point in the history
Signed-off-by: jparisu <javierparis@eprosima.com>
  • Loading branch information
jparisu committed Oct 11, 2022
1 parent c935d47 commit a07fbcf
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 8 deletions.
11 changes: 6 additions & 5 deletions src/cpp/StatisticsBackend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -193,11 +193,6 @@ EntityId create_and_register_monitor(
monitor->domain_callback_mask = callback_mask;
monitor->data_mask = data_mask;

monitor->participant_listener = new subscriber::StatisticsParticipantListener(
domain->id,
details::StatisticsBackendData::get_instance()->database_.get(),
details::StatisticsBackendData::get_instance()->entity_queue_,
details::StatisticsBackendData::get_instance()->data_queue_);
monitor->reader_listener = new subscriber::StatisticsReaderListener(
details::StatisticsBackendData::get_instance()->data_queue_);

Expand Down Expand Up @@ -269,6 +264,12 @@ EntityId create_and_register_monitor(
monitor->id = domain->id;
details::StatisticsBackendData::get_instance()->monitors_by_entity_[domain->id] = monitor;

monitor->participant_listener = new subscriber::StatisticsParticipantListener(
domain->id,
details::StatisticsBackendData::get_instance()->database_.get(),
details::StatisticsBackendData::get_instance()->entity_queue_,
details::StatisticsBackendData::get_instance()->data_queue_);

details::StatisticsBackendData::get_instance()->unlock();
return domain->id;
}
Expand Down
18 changes: 15 additions & 3 deletions test/unittest/StatisticsBackend/InitMonitorFactoryFailsTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -343,22 +343,34 @@ TEST_F(init_monitor_factory_fails_tests, init_monitor_topic_exists)
EXPECT_CALL(domain_participant_, create_topic(_, _, _, _)).Times(0);
EXPECT_CALL(domain_participant_, create_topic(_, _, _)).Times(0);

EXPECT_NO_THROW(StatisticsBackend::init_monitor(
EntityId monitor1;
EXPECT_NO_THROW(monitor1 = StatisticsBackend::init_monitor(
domain_id,
&domain_listener,
all_callback_mask_,
all_datakind_mask_));
EXPECT_NO_THROW(StatisticsBackend::init_monitor(

EntityId monitor2;
EXPECT_NO_THROW(monitor2 = StatisticsBackend::init_monitor(
server_locators,
&domain_listener,
all_callback_mask_,
all_datakind_mask_));
EXPECT_NO_THROW(StatisticsBackend::init_monitor(

EntityId monitor3;
EXPECT_NO_THROW(monitor3 = StatisticsBackend::init_monitor(
server_guid_prefix,
server_locators,
&domain_listener,
all_callback_mask_,
all_datakind_mask_));

// IMPORTANT: It is required to stop monitors.
// Otherwise, they will be stopped in Singleton destruction, what implies that are destructed after test
// destruction, and thus the mock instances does not longer exist, so SEGFAULT served.
StatisticsBackend::stop_monitor(monitor1);
StatisticsBackend::stop_monitor(monitor2);
StatisticsBackend::stop_monitor(monitor3);
}

TEST_F(init_monitor_factory_fails_tests, init_monitor_topic_exists_with_another_type)
Expand Down

0 comments on commit a07fbcf

Please sign in to comment.