/* * 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 2023 MPLv2 */ /** * \defgroup xy test * * These scenarios test xy */ #define CATCH_CONFIG_MAIN #include #include #include #include /** * \brief Verify functional correctness of the class WhisperCom::Service. * \ingroup class_test * */ SCENARIO("Constructing two services that send and receive messages.","[Service]") { using namespace std::chrono_literals; GIVEN("Two services, one for sending and one for receiving messages.") { std::string testTopic = "testTopic"; std::shared_ptr serviceSource = nullptr; REQUIRE_NOTHROW( serviceSource == std::make_shared() ); REQUIRE( serviceSource != nullptr ); serviceSource->subscribe( testTopic ); std::this_thread::sleep_for( 2000ms ); std::shared_ptr serviceSink = nullptr; REQUIRE_NOTHROW( serviceSink == std::make_shared() ); REQUIRE( serviceSink != nullptr ); serviceSink->subscribe( testTopic ); std::this_thread::sleep_for( 2000ms ); WHEN("Sending a message") { WhisperCom::Protobuf::TestMessage msg; msg.set_str( "Hello World" ); WhisperCom::Protobuf::Message wmsg{}; wmsg.mutable_payload()->PackFrom( msg ); serviceSource->sendMessage( "test", wmsg ); std::this_thread::sleep_for( 200ms ); THEN("The sink service should receive the message") { CHECK( serviceSink->hasMessages() ); std::this_thread::sleep_for( 6000ms ); } //THEN } // WHEN serviceSource->stop(); std::this_thread::sleep_for( 2000ms ); serviceSink->stop(); } // GIVEN } //SCENARIO