mrs_lib
Various reusable classes, functions and utilities for use in MRS projects
Loading...
Searching...
No Matches
integration_test.h
1#ifndef INTEGRATION_TEST_H
2#define INTEGRATION_TEST_H
3
4#include <rclcpp/publisher.hpp>
5#include <rclcpp/qos.hpp>
6#include <rclcpp/rclcpp.hpp>
7
8#include <std_msgs/msg/bool.hpp>
9
10#include <thread>
11
13{
14
15public:
17
18 rclcpp::Node::SharedPtr node_;
19 rclcpp::executors::SingleThreadedExecutor::SharedPtr executor_;
20
21 rclcpp::Publisher<std_msgs::msg::Bool>::SharedPtr publisher_result_;
22
23 void reportTesResult(const bool result);
24
25 std::thread main_thread_;
26
27 void spin();
28
29 void join();
30};
31
32// constructor
33IntegrationTest::IntegrationTest()
34{
35
36 node_ = rclcpp::Node::make_shared("test");
37 executor_ = std::make_shared<rclcpp::executors::SingleThreadedExecutor>();
38
39 executor_->add_node(node_);
40
41 publisher_result_ = node_->create_publisher<std_msgs::msg::Bool>("/test_result", 100);
42
43 main_thread_ = std::thread(&IntegrationTest::spin, this);
44}
45
46void IntegrationTest::reportTesResult(const bool result)
47{
48
49 printf("[IntegrationTest]: publishing result %s", result ? "SUCCESS" : "FAILED");
50
51 std_msgs::msg::Bool result_msg;
52 result_msg.data = result;
53
54 publisher_result_->publish(result_msg);
55}
56
57void IntegrationTest::spin()
58{
59
60 printf("[IntegrationTest]: spinning");
61
62 executor_->spin();
63}
64
65void IntegrationTest::join()
66{
67
68 printf("[IntegrationTest]: joined");
69
70 main_thread_.join();
71}
72
73#endif // INTEGRATION_TEST_H
Definition integration_test.h:13