From 96b72e42ea0f76bc17ef0e8a6e7b54f91596c459 Mon Sep 17 00:00:00 2001
From: Carsten Patzke <carsten.patzke@desy.de>
Date: Thu, 16 Apr 2020 21:46:20 +0200
Subject: [PATCH] Added receiver tcp and fabric nomad files

---
 CMakeModules/prepare_asapo.cmake              | 14 +++---
 common/cpp/include/common/networking.h        |  1 +
 config/nomad/receiver_fabric.nmd.in           | 47 +++++++++++++++++++
 .../{receiver.nmd.in => receiver_tcp.nmd.in}  |  2 +-
 consumer/api/cpp/src/data_broker.cpp          |  1 +
 .../net_server/test_rds_fabric_server.cpp     |  4 +-
 .../settings/receiver_fabric.json.tpl.lin.in  | 25 ++++++++++
 ...pl.lin.in => receiver_tcp.json.tpl.lin.in} |  3 +-
 ...pl.win.in => receiver_tcp.json.tpl.win.in} |  3 +-
 9 files changed, 89 insertions(+), 11 deletions(-)
 create mode 100644 config/nomad/receiver_fabric.nmd.in
 rename config/nomad/{receiver.nmd.in => receiver_tcp.nmd.in} (93%)
 create mode 100644 tests/automatic/settings/receiver_fabric.json.tpl.lin.in
 rename tests/automatic/settings/{receiver.json.tpl.lin.in => receiver_tcp.json.tpl.lin.in} (89%)
 rename tests/automatic/settings/{receiver.json.tpl.win.in => receiver_tcp.json.tpl.win.in} (89%)

diff --git a/CMakeModules/prepare_asapo.cmake b/CMakeModules/prepare_asapo.cmake
index ce5c33d92..981593512 100644
--- a/CMakeModules/prepare_asapo.cmake
+++ b/CMakeModules/prepare_asapo.cmake
@@ -27,22 +27,25 @@ function(prepare_asapo)
     endif()
 
     if (WIN32)
-        configure_file(${CMAKE_SOURCE_DIR}/tests/automatic/settings/receiver.json.tpl.win.in receiver.json.tpl @ONLY)
-        configure_file(${CMAKE_SOURCE_DIR}/config/nomad/nginx_kill_win.nmd nginx_kill.nmd @ONLY)
+        configure_file(${CMAKE_SOURCE_DIR}/tests/automatic/settings/receiver_tcp.json.tpl.win.in receiver_tcp.json.tpl @ONLY)
         configure_file(${CMAKE_SOURCE_DIR}/tests/automatic/settings/authorizer_settings.json.tpl.win authorizer.json.tpl COPYONLY)
         configure_file(${CMAKE_SOURCE_DIR}/tests/automatic/common_scripts/start_services.bat start_services.bat COPYONLY)
         configure_file(${CMAKE_SOURCE_DIR}/tests/automatic/common_scripts/stop_services.bat stop_services.bat COPYONLY)
 
+        configure_file(${CMAKE_SOURCE_DIR}/config/nomad/receiver_tcp.nmd.in  receiver_tcp.nmd @ONLY)
+        configure_file(${CMAKE_SOURCE_DIR}/config/nomad/nginx_kill_win.nmd nginx_kill.nmd @ONLY)
     else()
-        configure_file(${CMAKE_SOURCE_DIR}/tests/automatic/settings/receiver.json.tpl.lin.in receiver.json.tpl @ONLY)
-        configure_file(${CMAKE_SOURCE_DIR}/config/nomad/nginx_kill_lin.nmd nginx_kill.nmd @ONLY)
+        configure_file(${CMAKE_SOURCE_DIR}/tests/automatic/settings/receiver_tcp.json.tpl.lin.in receiver_tcp.json.tpl @ONLY)
+        configure_file(${CMAKE_SOURCE_DIR}/tests/automatic/settings/receiver_fabric.json.tpl.lin.in receiver_fabric.json.tpl @ONLY)
         configure_file(${CMAKE_SOURCE_DIR}/tests/automatic/settings/authorizer_settings.json.tpl.lin authorizer.json.tpl COPYONLY)
         configure_file(${CMAKE_SOURCE_DIR}/tests/automatic/common_scripts/start_services.sh start_services.sh COPYONLY)
         configure_file(${CMAKE_SOURCE_DIR}/tests/automatic/common_scripts/stop_services.sh stop_services.sh COPYONLY)
 
+        configure_file(${CMAKE_SOURCE_DIR}/config/nomad/receiver_tcp.nmd.in  receiver_tcp.nmd @ONLY)
+        configure_file(${CMAKE_SOURCE_DIR}/config/nomad/receiver_fabric.nmd.in  receiver_fabric.nmd @ONLY)
+        configure_file(${CMAKE_SOURCE_DIR}/config/nomad/nginx_kill_lin.nmd nginx_kill.nmd @ONLY)
     endif()
 
-    configure_file(${CMAKE_SOURCE_DIR}/config/nomad/receiver.nmd.in  receiver.nmd @ONLY)
     configure_file(${CMAKE_SOURCE_DIR}/config/nomad/discovery.nmd.in  discovery.nmd @ONLY)
     configure_file(${CMAKE_SOURCE_DIR}/config/nomad/authorizer.nmd.in  authorizer.nmd @ONLY)
     configure_file(${CMAKE_SOURCE_DIR}/config/nomad/file_transfer.nmd.in  file_transfer.nmd @ONLY)
@@ -54,7 +57,6 @@ function(prepare_asapo)
     configure_file(${CMAKE_SOURCE_DIR}/tests/automatic/settings/nginx.conf.tpl nginx.conf.tpl COPYONLY)
     configure_file(${CMAKE_SOURCE_DIR}/config/nomad/nginx.nmd.in nginx.nmd @ONLY)
 
-
 endfunction()
 
 macro(configure_files srcDir destDir)
diff --git a/common/cpp/include/common/networking.h b/common/cpp/include/common/networking.h
index 8f69453cf..84f296f3d 100644
--- a/common/cpp/include/common/networking.h
+++ b/common/cpp/include/common/networking.h
@@ -14,6 +14,7 @@ typedef uint64_t NetworkRequestId;
 
 enum class NetworkConnectionType {
     kAsapoTcp, // ASAPOs TCP (Multiple connections for parallel data transfers)
+    kFabric, // Fabric connection (Primarily used for InfiniBand verbs)
 };
 
 enum Opcode : uint8_t {
diff --git a/config/nomad/receiver_fabric.nmd.in b/config/nomad/receiver_fabric.nmd.in
new file mode 100644
index 000000000..0c4d21747
--- /dev/null
+++ b/config/nomad/receiver_fabric.nmd.in
@@ -0,0 +1,47 @@
+job "receiver" {
+  datacenters = ["dc1"]
+
+  type = "service"
+
+  group "group" {
+    count = 1
+
+    task "receiver" {
+      driver = "raw_exec"
+
+      config {
+        command = "@RECEIVER_DIR@/@RECEIVER_NAME@",
+        args =  ["${NOMAD_TASK_DIR}/receiver.json"]
+      }
+
+      resources {
+        cpu    = 500 # 500 MHz
+        memory = 256 # 256MB
+        network {
+          port "recv" {}
+          port "recv_ds" {}
+        }
+      }
+
+      service {
+        name = "asapo-receiver"
+        port = "recv"
+        check {
+          name     = "alive"
+          type     = "tcp"
+          interval = "10s"
+          timeout  = "2s"
+          initial_status =   "passing"
+        }
+      }
+
+      template {
+         source        = "@WORK_DIR@/receiver_fabric.json.tpl"
+         destination   = "local/receiver.json"
+         change_mode   = "signal"
+         change_signal = "SIGHUP"
+      }
+
+    }
+  }
+}
diff --git a/config/nomad/receiver.nmd.in b/config/nomad/receiver_tcp.nmd.in
similarity index 93%
rename from config/nomad/receiver.nmd.in
rename to config/nomad/receiver_tcp.nmd.in
index 282208f29..0d563934e 100644
--- a/config/nomad/receiver.nmd.in
+++ b/config/nomad/receiver_tcp.nmd.in
@@ -36,7 +36,7 @@ job "receiver" {
       }
 
       template {
-         source        = "@WORK_DIR@/receiver.json.tpl"
+         source        = "@WORK_DIR@/receiver_tcp.json.tpl"
          destination   = "local/receiver.json"
          change_mode   = "signal"
          change_signal = "SIGHUP"
diff --git a/consumer/api/cpp/src/data_broker.cpp b/consumer/api/cpp/src/data_broker.cpp
index 1f3b1db63..451dd17fc 100644
--- a/consumer/api/cpp/src/data_broker.cpp
+++ b/consumer/api/cpp/src/data_broker.cpp
@@ -25,6 +25,7 @@ std::unique_ptr<DataBroker> Create(const std::string& source_name,
 
 }
 
+// TODO Add NetworkConnectionType
 std::unique_ptr<DataBroker> DataBrokerFactory::CreateServerBroker(std::string server_name, std::string source_path,
         bool has_filesystem, SourceCredentials source,
         Error* error) noexcept {
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 9e44b551b..ff15633f4 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
@@ -98,8 +98,8 @@ TEST_F(RdsFabricServerTests, Initialize_Error_DoubleInitialize) {
             ));
 
     EXPECT_CALL(mock_fabric_server, GetAddress()).WillOnce(Return(
-            "TestAddress"
-    ));
+                "TestAddress"
+            ));
 
     Error err = rds_server.Initialize();
     ASSERT_THAT(rds_server.server__, Ne(nullptr));
diff --git a/tests/automatic/settings/receiver_fabric.json.tpl.lin.in b/tests/automatic/settings/receiver_fabric.json.tpl.lin.in
new file mode 100644
index 000000000..3c7ec5ef1
--- /dev/null
+++ b/tests/automatic/settings/receiver_fabric.json.tpl.lin.in
@@ -0,0 +1,25 @@
+{
+  "PerformanceDbServer":"localhost:8086",
+  "PerformanceDbName": "db_test",
+  "DatabaseServer":"auto",
+  "DiscoveryServer": "localhost:8400/asapo-discovery",
+  "DataServer": {
+    "AdvertiseURI": "127.0.0.1:{{ env "NOMAD_PORT_recv_ds" }}",
+    "NThreads": 2,
+    "ListenPort": {{ env "NOMAD_PORT_recv_ds" }},
+    "NetworkMode": ["fabric"]
+  },
+  "DataCache": {
+    "Use": @RECEIVER_USE_CACHE@,
+    "SizeGB": 1,
+    "ReservedShare": 10
+  },
+  "AuthorizationServer": "localhost:8400/asapo-authorizer",
+  "AuthorizationInterval": 1000,
+  "ListenPort": {{ env "NOMAD_PORT_recv" }},
+  "Tag": "{{ env "NOMAD_ADDR_recv" }}",
+  "WriteToDisk": @RECEIVER_WRITE_TO_DISK@,
+  "ReceiveToDiskThresholdMB":50,
+  "WriteToDb": true,
+  "LogLevel" : "debug"
+  }
diff --git a/tests/automatic/settings/receiver.json.tpl.lin.in b/tests/automatic/settings/receiver_tcp.json.tpl.lin.in
similarity index 89%
rename from tests/automatic/settings/receiver.json.tpl.lin.in
rename to tests/automatic/settings/receiver_tcp.json.tpl.lin.in
index 1177861e1..4414e4692 100644
--- a/tests/automatic/settings/receiver.json.tpl.lin.in
+++ b/tests/automatic/settings/receiver_tcp.json.tpl.lin.in
@@ -6,7 +6,8 @@
   "DataServer": {
     "AdvertiseURI": "127.0.0.1:{{ env "NOMAD_PORT_recv_ds" }}",
     "NThreads": 2,
-    "ListenPort": {{ env "NOMAD_PORT_recv_ds" }}
+    "ListenPort": {{ env "NOMAD_PORT_recv_ds" }},
+    "NetworkMode": ["tcp"]
   },
   "DataCache": {
     "Use": @RECEIVER_USE_CACHE@,
diff --git a/tests/automatic/settings/receiver.json.tpl.win.in b/tests/automatic/settings/receiver_tcp.json.tpl.win.in
similarity index 89%
rename from tests/automatic/settings/receiver.json.tpl.win.in
rename to tests/automatic/settings/receiver_tcp.json.tpl.win.in
index 02fdd657b..b2afbf0d4 100644
--- a/tests/automatic/settings/receiver.json.tpl.win.in
+++ b/tests/automatic/settings/receiver_tcp.json.tpl.win.in
@@ -9,7 +9,8 @@
   "DataServer": {
     "AdvertiseURI": "127.0.0.1:{{ env "NOMAD_PORT_recv_ds" }}",
     "NThreads": 2,
-    "ListenPort": {{ env "NOMAD_PORT_recv_ds" }}
+    "ListenPort": {{ env "NOMAD_PORT_recv_ds" }},
+    "NetworkMode": ["tcp"]
   },
   "DataCache": {
     "Use": @RECEIVER_USE_CACHE@,
-- 
GitLab