#include #include #include #include "yaml-cpp/yaml.h" // Messages #include "dds/SystemHealthMonitoring.hpp" #include "dds/MsgNovAtel.hpp" #include "test_nomap.h" FMEADDS* TestBase::pC = NULL; TestBase::TestBase(){} TestBase::~TestBase(){} void TestBase::TearDown(){} void TestBase::SetUpTestCase() { std::cout<<"\n\n---------- NO MAP TEST ----------"<invalid_status = -1000; pC->first_status = pC->invalid_status; pC->last_status = pC->invalid_status; pC->counter = 0; } void TestBase::TearDownTestCase() { std::cout<<"Tear down test cases."<(); init_id = nodeFMEA["statusID"]["init"].as(); normal_id = nodeFMEA["statusID"]["normal"].as(); warning_id = nodeFMEA["statusID"]["warning"].as(); failure_bad_init = nodeFMEA["failureID"]["bad_initialization"].as(); failure_bad_matching = nodeFMEA["failureID"]["bad_matching"].as(); failure_no_map = nodeFMEA["failureID"]["no_map"].as(); failure_low_freq = nodeFMEA["failureID"]["low_frequency"].as(); failure_large_jump = nodeFMEA["failureID"]["large_jump"].as(); failure_high_cov = nodeFMEA["failureID"]["high_cov"].as(); } catch(const std::exception& e) { std::cerr << e.what() << '\n'; return; } std::string config_domain = package_path + "/test/dds_test/config/domain_dummy.yaml"; YAML::Node domain_config = YAML::LoadFile(config_domain); auto nodeDomain = domain_config["hdl_localization"]; try { vi_domain_id = nodeDomain["viDomain"].as(); rtk_domain_id = nodeDomain["rtkDomain"].as(); lidar_domain_id = nodeDomain["lidarDomain"].as(); } catch(const std::exception& e) { std::cerr << e.what() << '\n'; return; } } void FMEADDS::domainCreation() { package_path = getPackagePath(); std::cout<<"-------INITIATE DOMAIN PARTICIPANT------"< &rtkWriter, int &counter, bool &finished) { auto start = chrono::steady_clock::now(); while(counter != 10) { std::cout<<"Pub RTK: "<(chrono::steady_clock::now() - start).count() < shmTopic(shmParticipant, "msgSHM"); dds::sub::DataReader shmReader(dds::sub::Subscriber(shmParticipant), shmTopic); // Publisher const dds::pub::qos::DataWriterQos &rtkQOS = qosProvider.datawriter_qos("::SHM_LOC_Profile::SHM_LOC_DataWriter"); dds::topic::Topic rtkOutTopic(rtkOutParticipant, "msgNovAtelPVA"); dds::pub::DataWriter rtkWriter(dds::pub::Publisher(rtkOutParticipant), rtkOutTopic, rtkQOS, NULL, dds::core::status::StatusMask::all()); counter = 0; dds::sub::cond::ReadCondition read_condition( shmReader, dds::sub::status::DataState::any(), [&shmReader, this]() { dds::sub::LoanedSamples samples = shmReader.take(); for (auto sample :samples){ // std::cout<<"SHM Message received!!!"<first_status == this->invalid_status) this->first_status = shm_data.statusID(); this->last_status = shm_data.statusID(); this->curr_failure = shm_data.failureID()[0]; // std::cout<<"last_status: "<last_status<<"; curr_failure:"<curr_failure<mainSubscriber(); EXPECT_GE(pC->counter, 0); EXPECT_EQ(pC->last_status, pC->error_id); EXPECT_EQ(pC->curr_failure, pC->failure_no_map); } int main(int argc, char **argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }