ADD: added Listener and Sender

This commit is contained in:
Henry Winkel
2023-02-15 11:15:28 +01:00
parent 97d3a10e8c
commit 01e61cd482
8 changed files with 437 additions and 20 deletions

View File

@@ -0,0 +1,72 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
/**
* @file
* @copyright 2022 MPLv2
*/
/**
* @defgroup tests
*/
#include "WHISPER/InternalUDPSender.hpp"
#include "WHISPER/Messages/stringData.hpp"
#include <string>
#define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp>
#include "WHISPER/InternalUDPListener.hpp"
#include "WHISPER/Messages/Message.hpp"
#include "zmq.hpp"
#include "google/protobuf/message.h"
#include <memory>
/**
* @brief brief test description
* @ingroup group
*/
SCENARIO("A test scenario","[keywords]")
{
GIVEN("Preliminaries")
{
auto *listener = new WHISPER::InternalUDPListener(8000);
auto sender = std::make_shared<WHISPER::InternalUDPSender>("127.0.0.1",8000);
WHEN("doing something")
{
auto receiver = std::make_shared<WHISPER::threadSafeQueue<WHISPER::Message>>();
listener->connect(receiver) ;
listener->subscribe(WHISPER::DATA);
// listener->start();
// listener->stop();
auto stringMsg = WHISPER::StringData(1,1,WHISPER::SourceType::SENSOR,"hello world");
sender->send(stringMsg,WHISPER::DATA);
LOG_S(INFO)<<"wating";
std::this_thread::sleep_for(std::chrono::milliseconds(200));
LOG_S(INFO)<<"closing";
THEN("expecting something to happen")
{
REQUIRE(receiver->size() > 0);
WHISPER::Message msg;
receiver->get(msg);
LOG_S(INFO)<< msg.msgType_;
WHISPER::StringData data(msg.serialize());
REQUIRE(data.data_ == "hello world");
delete listener;
REQUIRE(receiver.unique() == true );
} // THEN
} // WHEN
} // GIVEN
} // SCENARIO

View File

@@ -36,7 +36,7 @@ SCENARIO("A test scenario","[keywords]")
{
WHISPER::InternalUDPService service(0,1,WHISPER::SourceType::SIMCOMTROLER,8000,"127.0.0.255","127.0.0.1");
auto receiver = std::make_shared<WHISPER::threadSafeQueue<WHISPER::Message>>();
service.connect(receiver) ;
service.connect(receiver) ;
// service.subscribe(WHISPER::MsgTopicsMap[WHISPER::MsgTopics::TRACK]);
int i = 0;