From ac8b5394358b5c5c237669112800b922b8a0f40a Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Thu, 11 Apr 2019 18:10:53 +0300 Subject: [PATCH] Add publish tests and pubsub appears to work --- net/cpp/include/ftl/net/universe.hpp | 2 +- net/cpp/test/net_integration.cpp | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/net/cpp/include/ftl/net/universe.hpp b/net/cpp/include/ftl/net/universe.hpp index 11557f923..a1cfce0c8 100644 --- a/net/cpp/include/ftl/net/universe.hpp +++ b/net/cpp/include/ftl/net/universe.hpp @@ -204,7 +204,7 @@ void Universe::publish(const std::string &res, ARGS... args) { for (auto p : subs) { auto peer = getPeer(p); if (peer) { - *peer->send(res, args...); + peer->send(res, args...); } } } diff --git a/net/cpp/test/net_integration.cpp b/net/cpp/test/net_integration.cpp index 19a585423..aa698dbe8 100644 --- a/net/cpp/test/net_integration.cpp +++ b/net/cpp/test/net_integration.cpp @@ -192,6 +192,33 @@ TEST_CASE("Universe::subscribe()", "") { } } +TEST_CASE("Universe::publish()", "") { + Universe a; + Universe b; + a.listen("tcp://localhost:7077"); + b.connect("tcp://localhost:7077"); + while (a.numberOfPeers() == 0) sleep_for(milliseconds(20)); + + SECTION("no subscribers") { + a.createResource("ftl://test"); + a.publish("ftl://test", 55); + } + + SECTION("one subscriber") { + int done = 0; + a.createResource("ftl://test"); + REQUIRE( b.subscribe("ftl://test", [&done](int a) { + done = a; + }) ); + sleep_for(milliseconds(50)); + + a.publish("ftl://test", 56); + sleep_for(milliseconds(50)); + + REQUIRE( done == 56 ); + } +} + /*TEST_CASE("net::listen()", "[net]") { SECTION("tcp any interface") { -- GitLab