From 63afc0a54eb6142cef0407fab6500be7c8222194 Mon Sep 17 00:00:00 2001
From: Carsten Patzke <carsten.patzke@desy.de>
Date: Thu, 16 Apr 2020 20:11:16 +0200
Subject: [PATCH] [RDS] The logger is now a constructor argument

---
 receiver/src/main.cpp                                 |  9 ++++++---
 .../net_server/rds_fabric_server.cpp                  |  5 +++--
 .../net_server/rds_fabric_server.h                    |  2 +-
 .../net_server/rds_tcp_server.cpp                     |  2 +-
 .../receiver_data_server/net_server/rds_tcp_server.h  |  2 +-
 .../receiver_data_server_logger.h                     |  6 +++---
 .../net_server/test_rds_fabric_server.cpp             | 11 ++++++++---
 .../net_server/test_rds_tcp_server.cpp                |  9 +++++----
 8 files changed, 28 insertions(+), 18 deletions(-)

diff --git a/receiver/src/main.cpp b/receiver/src/main.cpp
index 01e44e8c4..ab00fa545 100644
--- a/receiver/src/main.cpp
+++ b/receiver/src/main.cpp
@@ -5,7 +5,7 @@
 #include "receiver_config_factory.h"
 #include "receiver_config.h"
 
-#include "receiver_logger.h"
+#include "receiver_data_server/receiver_data_server_logger.h"
 #include "common/version.h"
 
 #include "receiver_data_server/receiver_data_server.h"
@@ -23,16 +23,19 @@ asapo::Error ReadConfigFile(int argc, char* argv[]) {
 
 void AddDataServers(const asapo::ReceiverConfig* config, asapo::SharedCache cache,
                     std::vector<asapo::RdsNetServerPtr>& netServers) {
+    auto logger = asapo::GetDefaultReceiverDataServerLogger();
+    logger->SetLogLevel(config->log_level);
+
     auto ds_config = config->dataserver;
     auto networkingMode = ds_config.network_mode;
     if (std::find(networkingMode.begin(), networkingMode.end(), "tcp") != networkingMode.end()) {
         // Add TCP
-        netServers.emplace_back(new asapo::RdsTcpServer("0.0.0.0:" + std::to_string(ds_config.listen_port)));
+        netServers.emplace_back(new asapo::RdsTcpServer("0.0.0.0:" + std::to_string(ds_config.listen_port), logger));
     }
 
     if (std::find(networkingMode.begin(), networkingMode.end(), "fabric") != networkingMode.end()) {
         // Add Fabric
-        netServers.emplace_back(new asapo::RdsFabricServer(ds_config.advertise_uri));
+        netServers.emplace_back(new asapo::RdsFabricServer(ds_config.advertise_uri, logger));
     }
 }
 
diff --git a/receiver/src/receiver_data_server/net_server/rds_fabric_server.cpp b/receiver/src/receiver_data_server/net_server/rds_fabric_server.cpp
index a559456e5..a0d682b30 100644
--- a/receiver/src/receiver_data_server/net_server/rds_fabric_server.cpp
+++ b/receiver/src/receiver_data_server/net_server/rds_fabric_server.cpp
@@ -7,8 +7,9 @@
 
 using namespace asapo;
 
-RdsFabricServer::RdsFabricServer(std::string listenAddress): factory__(fabric::GenerateDefaultFabricFactory()), io__{GenerateDefaultIO()},
-    log__{GetDefaultReceiverDataServerLogger()}, listenAddress_(std::move(listenAddress)) {
+RdsFabricServer::RdsFabricServer(std::string listenAddress,
+                                 const AbstractLogger* logger): factory__(fabric::GenerateDefaultFabricFactory()), io__{GenerateDefaultIO()},
+    log__{logger}, listenAddress_(std::move(listenAddress)) {
 
 }
 
diff --git a/receiver/src/receiver_data_server/net_server/rds_fabric_server.h b/receiver/src/receiver_data_server/net_server/rds_fabric_server.h
index 04edcb0f2..2733ade39 100644
--- a/receiver/src/receiver_data_server/net_server/rds_fabric_server.h
+++ b/receiver/src/receiver_data_server/net_server/rds_fabric_server.h
@@ -8,7 +8,7 @@ namespace asapo {
 
 class RdsFabricServer : public RdsNetServer {
   public:
-    explicit RdsFabricServer(std::string  listenAddress);
+    explicit RdsFabricServer(std::string  listenAddress, const AbstractLogger* logger);
     ~RdsFabricServer() override;
 
     // modified in testings to mock system calls, otherwise do not touch
diff --git a/receiver/src/receiver_data_server/net_server/rds_tcp_server.cpp b/receiver/src/receiver_data_server/net_server/rds_tcp_server.cpp
index 14c6cc84c..6f9e586fd 100644
--- a/receiver/src/receiver_data_server/net_server/rds_tcp_server.cpp
+++ b/receiver/src/receiver_data_server/net_server/rds_tcp_server.cpp
@@ -6,7 +6,7 @@
 
 namespace asapo {
 
-RdsTcpServer::RdsTcpServer(std::string address) : io__{GenerateDefaultIO()}, log__{GetDefaultReceiverDataServerLogger()},
+RdsTcpServer::RdsTcpServer(std::string address, const AbstractLogger* logger) : io__{GenerateDefaultIO()}, log__{logger},
     address_{std::move(address)} {}
 
 Error RdsTcpServer::Initialize() {
diff --git a/receiver/src/receiver_data_server/net_server/rds_tcp_server.h b/receiver/src/receiver_data_server/net_server/rds_tcp_server.h
index 5d28f042c..9a588c145 100644
--- a/receiver/src/receiver_data_server/net_server/rds_tcp_server.h
+++ b/receiver/src/receiver_data_server/net_server/rds_tcp_server.h
@@ -11,7 +11,7 @@ const int kMaxPendingConnections = 5;
 
 class RdsTcpServer : public RdsNetServer {
   public:
-    explicit RdsTcpServer(std::string address);
+    explicit RdsTcpServer(std::string address, const AbstractLogger* logger);
     ~RdsTcpServer() override;
 
     Error Initialize() override;
diff --git a/receiver/src/receiver_data_server/receiver_data_server_logger.h b/receiver/src/receiver_data_server/receiver_data_server_logger.h
index c391dbe0d..cf50590d6 100644
--- a/receiver/src/receiver_data_server/receiver_data_server_logger.h
+++ b/receiver/src/receiver_data_server/receiver_data_server_logger.h
@@ -1,5 +1,5 @@
-#ifndef ASAPO_RECEIVER_LOGGER_H
-#define ASAPO_RECEIVER_LOGGER_H
+#ifndef ASAPO_DATA_RECEIVER_LOGGER_H
+#define ASAPO_DATA_RECEIVER_LOGGER_H
 
 #include "logger/logger.h"
 
@@ -11,4 +11,4 @@ AbstractLogger* GetDefaultReceiverDataServerLogger();
 }
 
 
-#endif //ASAPO_RECEIVER_LOGGER_H
+#endif //ASAPO_DATA_RECEIVER_LOGGER_H
diff --git a/receiver/unittests/receiver_data_server/net_server/test_rds_fabric_server.cpp b/receiver/unittests/receiver_data_server/net_server/test_rds_fabric_server.cpp
index c7580823a..9e44b551b 100644
--- a/receiver/unittests/receiver_data_server/net_server/test_rds_fabric_server.cpp
+++ b/receiver/unittests/receiver_data_server/net_server/test_rds_fabric_server.cpp
@@ -23,15 +23,16 @@ using namespace asapo;
 std::string expected_address = "somehost:123";
 
 TEST(RdsFabricServer, Constructor) {
-    RdsFabricServer fabric_server("");
+    NiceMock<MockLogger> mock_logger;
+    RdsFabricServer fabric_server("", &mock_logger);
     ASSERT_THAT(dynamic_cast<SystemIO*>(fabric_server.io__.get()), Ne(nullptr));
     ASSERT_THAT(dynamic_cast<fabric::FabricFactory*>(fabric_server.factory__.get()), Ne(nullptr));
-    ASSERT_THAT(dynamic_cast<const AbstractLogger*>(fabric_server.log__), Ne(nullptr));
+    ASSERT_THAT(fabric_server.log__, Eq(&mock_logger));
 }
 
 class RdsFabricServerTests : public Test {
   public:
-    RdsFabricServer rds_server{expected_address};
+    RdsFabricServer rds_server{expected_address, &mock_logger};
     NiceMock<MockLogger> mock_logger;
     StrictMock<MockIO> mock_io;
     StrictMock<fabric::MockFabricFactory> mock_fabric_factory;
@@ -96,6 +97,10 @@ TEST_F(RdsFabricServerTests, Initialize_Error_DoubleInitialize) {
                 &mock_fabric_server
             ));
 
+    EXPECT_CALL(mock_fabric_server, GetAddress()).WillOnce(Return(
+            "TestAddress"
+    ));
+
     Error err = rds_server.Initialize();
     ASSERT_THAT(rds_server.server__, Ne(nullptr));
     ASSERT_THAT(err, Eq(nullptr));
diff --git a/receiver/unittests/receiver_data_server/net_server/test_rds_tcp_server.cpp b/receiver/unittests/receiver_data_server/net_server/test_rds_tcp_server.cpp
index 7b2327616..0c87f50d4 100644
--- a/receiver/unittests/receiver_data_server/net_server/test_rds_tcp_server.cpp
+++ b/receiver/unittests/receiver_data_server/net_server/test_rds_tcp_server.cpp
@@ -26,14 +26,16 @@ using ::testing::DoAll;
 
 using asapo::RdsTcpServer;
 using asapo::MockIO;
+using asapo::MockLogger;
 using asapo::Error;
 using asapo::ListSocketDescriptors;
 namespace {
 
 TEST(RdsTCPServer, Constructor) {
-    RdsTcpServer tcp_server("");
+    NiceMock<MockLogger> mock_logger;
+    RdsTcpServer tcp_server("", &mock_logger);
     ASSERT_THAT(dynamic_cast<asapo::IO*>(tcp_server.io__.get()), Ne(nullptr));
-    ASSERT_THAT(dynamic_cast<const asapo::AbstractLogger*>(tcp_server.log__), Ne(nullptr));
+    ASSERT_THAT(tcp_server.log__, Eq(&mock_logger));
 
 }
 
@@ -41,7 +43,7 @@ std::string expected_address = "somehost:123";
 
 class RdsTCPServerTests : public Test {
   public:
-    RdsTcpServer tcp_server {expected_address};
+    RdsTcpServer tcp_server {expected_address, &mock_logger};
     NiceMock<MockIO> mock_io;
     NiceMock<asapo::MockLogger> mock_logger;
     asapo::SocketDescriptor expected_master_socket = 1;
@@ -49,7 +51,6 @@ class RdsTCPServerTests : public Test {
     std::vector<std::string> expected_new_connections = {"test1", "test2"};
     void SetUp() override {
         tcp_server.io__ = std::unique_ptr<asapo::IO> {&mock_io};
-        tcp_server.log__ = &mock_logger;
         for (auto conn : expected_client_sockets) {
             std::string connected_uri = std::to_string(conn);
             ON_CALL(mock_io, AddressFromSocket_t(conn)).WillByDefault(Return(connected_uri));
-- 
GitLab