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
14public:
16
17 rclcpp::Node::SharedPtr node_;
18 rclcpp::executors::SingleThreadedExecutor::SharedPtr executor_;
19
20 rclcpp::Publisher<std_msgs::msg::Bool>::SharedPtr publisher_result_;
21
22 void reportTesResult(const bool result);
23
24 std::thread main_thread_;
25
26 void spin();
27
28 void join();
29};
30
31// constructor
32IntegrationTest::IntegrationTest() {
33
34 node_ = rclcpp::Node::make_shared("test");
35 executor_ = std::make_shared<rclcpp::executors::SingleThreadedExecutor>();
36
37 executor_->add_node(node_);
38
39 publisher_result_ = node_->create_publisher<std_msgs::msg::Bool>("/test_result", 100);
40
41 main_thread_ = std::thread(&IntegrationTest::spin, this);
42}
43
44void IntegrationTest::reportTesResult(const bool result) {
45
46 printf("[IntegrationTest]: publishing result %s", result ? "SUCCESS" : "FAILED");
47
48 std_msgs::msg::Bool result_msg;
49 result_msg.data = result;
50
51 publisher_result_->publish(result_msg);
52}
53
54void IntegrationTest::spin() {
55
56 printf("[IntegrationTest]: spinning");
57
58 executor_->spin();
59}
60
61void IntegrationTest::join() {
62
63 printf("[IntegrationTest]: joined");
64
65 main_thread_.join();
66}
67
68#endif // INTEGRATION_TEST_H
Definition integration_test.h:12