fix race in test_lifecycle_service_client (#1204)
Signed-off-by: Dirk Thomas <dirk-thomas@users.noreply.github.com>
This commit is contained in:
parent
e920175dae
commit
d04ec4bf80
1 changed files with 15 additions and 4 deletions
|
@ -20,6 +20,7 @@
|
|||
#include <gtest/gtest.h>
|
||||
#include <chrono>
|
||||
#include <memory>
|
||||
#include <mutex>
|
||||
#include <string>
|
||||
#include <thread>
|
||||
#include <vector>
|
||||
|
@ -220,21 +221,31 @@ private:
|
|||
|
||||
void TearDown() override
|
||||
{
|
||||
rclcpp::shutdown();
|
||||
{
|
||||
std::lock_guard<std::mutex> guard(shutdown_mutex_);
|
||||
rclcpp::shutdown();
|
||||
}
|
||||
spinner_.join();
|
||||
}
|
||||
|
||||
void spin()
|
||||
{
|
||||
while (rclcpp::ok()) {
|
||||
rclcpp::spin_some(lifecycle_node_->get_node_base_interface());
|
||||
rclcpp::spin_some(lifecycle_client_);
|
||||
while (true) {
|
||||
{
|
||||
std::lock_guard<std::mutex> guard(shutdown_mutex_);
|
||||
if (!rclcpp::ok()) {
|
||||
break;
|
||||
}
|
||||
rclcpp::spin_some(lifecycle_node_->get_node_base_interface());
|
||||
rclcpp::spin_some(lifecycle_client_);
|
||||
}
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
||||
}
|
||||
}
|
||||
|
||||
std::shared_ptr<EmptyLifecycleNode> lifecycle_node_;
|
||||
std::shared_ptr<LifecycleServiceClient> lifecycle_client_;
|
||||
std::mutex shutdown_mutex_;
|
||||
std::thread spinner_;
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue