Skip to content

Commit

Permalink
Add an executor to intra_process_inter_process_mix_transient_local te…
Browse files Browse the repository at this point in the history
…st case to enable inter process publishing test

Signed-off-by: Jeffery Hsu <[email protected]>
  • Loading branch information
jefferyyjhsu committed Dec 20, 2024
1 parent 7f5fbd1 commit 3fd1ea4
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions rclcpp/test/rclcpp/test_publisher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

#include <gtest/gtest.h>

#include <future>
#include <chrono>
#include <memory>
#include <string>
Expand Down Expand Up @@ -800,12 +801,14 @@ TEST_F(TestPublisher, intra_process_inter_process_mix_transient_local) {
auto do_nothing = [](std::shared_ptr<const test_msgs::msg::Empty>) {};
struct SubscriptionCallback
{
void callback_fun(size_t) {called = true;}
bool called = false;
void callback_fun(size_t) {called.set_value();}
std::promise<void> called;
};
rclcpp::SubscriptionOptions sub_options_ipm_disabled;
sub_options_ipm_disabled.use_intra_process_comm = rclcpp::IntraProcessSetting::Disable;
SubscriptionCallback intra_callback, inter_callback;
std::future<void> intra_callback_future = intra_callback.called.get_future(),
inter_callback_future = inter_callback.called.get_future();
auto sub_ipm_disabled_transient_local_enabled = node->create_subscription<test_msgs::msg::Empty>(
"topic1",
rclcpp::QoS(rclcpp::KeepLast(history_depth)).transient_local(),
Expand All @@ -814,7 +817,10 @@ TEST_F(TestPublisher, intra_process_inter_process_mix_transient_local) {
std::bind(&SubscriptionCallback::callback_fun, &intra_callback, std::placeholders::_1));
sub_ipm_disabled_transient_local_enabled->set_on_new_message_callback(
std::bind(&SubscriptionCallback::callback_fun, &inter_callback, std::placeholders::_1));

EXPECT_FALSE(intra_callback.called);
EXPECT_TRUE(inter_callback.called);
rclcpp::executors::SingleThreadedExecutor executor;
executor.add_node(node);
EXPECT_EQ(executor.spin_until_future_complete(inter_callback_future,
std::chrono::milliseconds(100)), rclcpp::FutureReturnCode::SUCCESS);
EXPECT_EQ(executor.spin_until_future_complete(intra_callback_future,
std::chrono::milliseconds(0)), rclcpp::FutureReturnCode::TIMEOUT);
}

0 comments on commit 3fd1ea4

Please sign in to comment.