TraveSim Adapters  0.1
Protobuf adapters for TraveSim project
vision_adapter.test.cpp
Go to the documentation of this file.
1 /**
2  * @file vision_adapter.test.cpp
3  * @author Felipe Gomes de Melo <felipe.gomes@thunderatz.org>
4  * @brief
5  * @date 04/2021
6  *
7  * @copyright MIT License - Copyright (c) 2021 ThundeRatz
8  *
9  */
10 
11 #include <iostream>
12 #include <string>
13 #include <google/protobuf/util/json_util.h>
14 #include <google/protobuf/text_format.h>
15 #include <ros/ros.h>
16 #include <ros/console.h>
17 #include <gazebo_msgs/ModelStates.h>
18 
19 #include <gtest/gtest.h>
20 
22 #include "packet.pb.h"
23 
24 #define BUFFER_SIZE 1024U
25 #define MAX_RETRIES 5
26 
27 TEST(vision_adapter, relay_messages)
28 {
29  std::string listen_address_str = "0.0.0.0";
30 
31  char data_buff[BUFFER_SIZE];
32 
33  uint16_t multicast_port = 10002;
34  std::string multicast_address_str = "224.0.0.1";
35 
36  travesim::udp::MulticastReceiver my_receiver(multicast_address_str, multicast_port);
37 
38  size_t data_size = -1;
39  size_t retries = 0;
40 
41  bool success = false;
42 
43  while (!success && retries < MAX_RETRIES) {
44  while (retries < MAX_RETRIES && data_size <= 0) {
45  EXPECT_NO_THROW(data_size = my_receiver.receive(data_buff, BUFFER_SIZE));
46  retries++;
47  ros::Duration(0.5).sleep();
48  }
49 
50  EXPECT_LT(retries, MAX_RETRIES);
51  EXPECT_GT(data_size, 0);
52 
53  fira_message::sim_to_ref::Environment env_data;
54  env_data.ParseFromString(data_buff);
55 
56  std::string parsed_msg;
57 
58  google::protobuf::util::JsonPrintOptions options;
59  options.add_whitespace = true;
60  options.always_print_primitive_fields = true;
61 
62  google::protobuf::util::MessageToJsonString(env_data, &parsed_msg, options);
63 
64  ROS_INFO_STREAM(parsed_msg);
65 
66  success = env_data.has_frame();
67  data_size = 0;
68  }
69 
70  EXPECT_EQ(success, true);
71 }
72 
73 // Run all the tests that were declared with TEST()
74 int main(int argc, char** argv) {
75  testing::InitGoogleTest(&argc, argv);
76  ros::init(argc, argv, "tester_vision_adapter");
77  ros::NodeHandle nh;
78  return RUN_ALL_TESTS();
79 }
int main(int argc, char **argv)
Receiver class using UDP in multicast mode.
size_t receive(char *buffer, const size_t buffer_size)
Receive data using UDP.
Definition: receiver.cpp:44
#define MAX_RETRIES
#define BUFFER_SIZE
Receiver data using UDP in multicast mode.
TEST(vision_adapter, relay_messages)