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