From f39a090bdfd028c6ede2faae9565ddda47b0e77d Mon Sep 17 00:00:00 2001
From: Sergey Yakubov <sergey.yakubov@desy.de>
Date: Wed, 23 May 2018 21:01:50 +0200
Subject: [PATCH] fullchain test in nomad

---
 CMakeModules/prepare_asapo.cmake              |  3 ++
 broker/src/asapo_broker/server/get_health.go  | 11 +++++
 .../asapo_broker/server/get_health_test.go    | 13 +++++
 broker/src/asapo_broker/server/listroutes.go  |  7 +++
 config/nomad/broker.nmd.in                    | 49 +++++++++++++++++++
 .../full_chain/simple_chain/CMakeLists.txt    |  4 +-
 .../full_chain/simple_chain/check_linux.sh    | 22 ++++-----
 .../settings/broker_settings.json.tpl         |  7 +++
 8 files changed, 100 insertions(+), 16 deletions(-)
 create mode 100644 broker/src/asapo_broker/server/get_health.go
 create mode 100644 broker/src/asapo_broker/server/get_health_test.go
 create mode 100644 config/nomad/broker.nmd.in
 create mode 100644 tests/automatic/settings/broker_settings.json.tpl

diff --git a/CMakeModules/prepare_asapo.cmake b/CMakeModules/prepare_asapo.cmake
index dcb4d5750..d80e80166 100644
--- a/CMakeModules/prepare_asapo.cmake
+++ b/CMakeModules/prepare_asapo.cmake
@@ -2,10 +2,13 @@ function(prepare_asapo)
     get_target_property(RECEIVER_DIR receiver-bin BINARY_DIR)
     get_target_property(RECEIVER_NAME receiver-bin OUTPUT_NAME)
     get_target_property(DISCOVERY_FULLPATH asapo-discovery EXENAME)
+    get_target_property(BROKER_FULLPATH asapo-broker EXENAME)
     set(WORK_DIR ${CMAKE_CURRENT_BINARY_DIR})
     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/broker.nmd.in  broker.nmd @ONLY)
     configure_file(${CMAKE_SOURCE_DIR}/tests/automatic/settings/receiver.json.tpl receiver.json.tpl COPYONLY)
     configure_file(${CMAKE_SOURCE_DIR}/tests/automatic/settings/discovery_settings.json.tpl discovery.json.tpl COPYONLY)
+    configure_file(${CMAKE_SOURCE_DIR}/tests/automatic/settings/broker_settings.json.tpl broker.json.tpl COPYONLY)
 endfunction()
 
diff --git a/broker/src/asapo_broker/server/get_health.go b/broker/src/asapo_broker/server/get_health.go
new file mode 100644
index 000000000..b7d9f2446
--- /dev/null
+++ b/broker/src/asapo_broker/server/get_health.go
@@ -0,0 +1,11 @@
+package server
+
+import (
+	"net/http"
+)
+
+
+func routeGetHealth(w http.ResponseWriter, r *http.Request) {
+	r.Header.Set("Content-type", "application/json")
+	w.WriteHeader(http.StatusNoContent)
+}
diff --git a/broker/src/asapo_broker/server/get_health_test.go b/broker/src/asapo_broker/server/get_health_test.go
new file mode 100644
index 000000000..0efbdf70d
--- /dev/null
+++ b/broker/src/asapo_broker/server/get_health_test.go
@@ -0,0 +1,13 @@
+package server
+
+import (
+	"github.com/stretchr/testify/assert"
+	"net/http"
+	"testing"
+)
+
+
+func TestGetNext(t *testing.T) {
+	w := doRequest("/health")
+	assert.Equal(t, http.StatusNoContent, w.Code)
+}
diff --git a/broker/src/asapo_broker/server/listroutes.go b/broker/src/asapo_broker/server/listroutes.go
index 36d8f80a1..0b827d13d 100644
--- a/broker/src/asapo_broker/server/listroutes.go
+++ b/broker/src/asapo_broker/server/listroutes.go
@@ -11,4 +11,11 @@ var listRoutes = utils.Routes{
 		"/database/{dbname}/next",
 		routeGetNext,
 	},
+		utils.Route{
+    		"Health",
+    		"Get",
+    		"/health",
+    		routeGetHealth,
+    	},
+
 }
diff --git a/config/nomad/broker.nmd.in b/config/nomad/broker.nmd.in
new file mode 100644
index 000000000..1d968aa42
--- /dev/null
+++ b/config/nomad/broker.nmd.in
@@ -0,0 +1,49 @@
+job "broker" {
+  datacenters = ["dc1"]
+
+  type = "service"
+
+  group "group" {
+    count = 1
+
+    task "service" {
+      driver = "raw_exec"
+
+      config {
+        command = "@BROKER_FULLPATH@",
+        args =  ["-config","${NOMAD_TASK_DIR}/broker.json"]
+      }
+
+      resources {
+        cpu    = 500 # 500 MHz
+        memory = 256 # 256MB
+        network {
+          port "broker" {
+            static = "5005"
+          }
+        }
+      }
+
+      service {
+        name = "broker"
+        port = "broker"
+        check {
+          name     = "alive"
+          type     = "http"
+          path     = "/health"
+          interval = "10s"
+          timeout  = "2s"
+          initial_status =   "passing"
+        }
+      }
+
+      template {
+         source        = "@WORK_DIR@/broker.json.tpl"
+         destination   = "local/broker.json"
+         change_mode   = "signal"
+         change_signal = "SIGHUP"
+      }
+
+    }
+  }
+}
diff --git a/tests/automatic/full_chain/simple_chain/CMakeLists.txt b/tests/automatic/full_chain/simple_chain/CMakeLists.txt
index 0fb21c69e..2d74dbc84 100644
--- a/tests/automatic/full_chain/simple_chain/CMakeLists.txt
+++ b/tests/automatic/full_chain/simple_chain/CMakeLists.txt
@@ -3,7 +3,5 @@ set(TARGET_NAME full_chain_simple_chain)
 ################################
 # Testing
 ################################
-configure_file(${CMAKE_SOURCE_DIR}/tests/automatic/settings/receiver.json receiver.json COPYONLY)
-configure_file(${CMAKE_SOURCE_DIR}/tests/automatic/settings/broker_settings.json broker.json COPYONLY)
-
+prepare_asapo()
 add_script_test("${TARGET_NAME}" "$<TARGET_FILE:dummy-data-producer> $<TARGET_FILE:receiver-bin> $<TARGET_PROPERTY:asapo-broker,EXENAME> $<TARGET_FILE:getnext_broker>" nomem)
diff --git a/tests/automatic/full_chain/simple_chain/check_linux.sh b/tests/automatic/full_chain/simple_chain/check_linux.sh
index a85cbe6c4..dd1893765 100644
--- a/tests/automatic/full_chain/simple_chain/check_linux.sh
+++ b/tests/automatic/full_chain/simple_chain/check_linux.sh
@@ -11,30 +11,26 @@ broker_address=127.0.0.1:5005
 Cleanup() {
 	echo cleanup
 	rm -rf files
-    kill -9 $receiverid
-    kill -9 $brokerid
-    #kill -9 $producerrid
+    nomad stop receiver
+    nomad stop discovery
+    nomad stop broker
     echo "db.dropDatabase()" | mongo ${broker_database_name}
     influx -execute "drop database ${monitor_database_name}"
 }
 
 influx -execute "create database ${monitor_database_name}"
 
+nomad run receiver.nmd
+nomad run discovery.nmd
+nomad run broker.nmd
 
-#receiver
-$2 receiver.json &
-sleep 0.3
-receiverid=`echo $!`
-
-#broker
-$3 -config broker.json &
-sleep 0.3
-brokerid=`echo $!`
+sleep 1
 
 
 #producer
 mkdir files
-$1 localhost:4200 100 100 &
+$1 localhost:5006 100 100 4 0 &
+
 #producerrid=`echo $!`
 sleep 0.1
 
diff --git a/tests/automatic/settings/broker_settings.json.tpl b/tests/automatic/settings/broker_settings.json.tpl
new file mode 100644
index 000000000..af6d1dcb2
--- /dev/null
+++ b/tests/automatic/settings/broker_settings.json.tpl
@@ -0,0 +1,7 @@
+{
+  "BrokerDbAddress":"127.0.0.1:27017",
+  "MonitorDbAddress": "localhost:8086",
+  "MonitorDbName": "db_test",
+  "port":{{ env "NOMAD_PORT_broker" }},
+  "LogLevel":"info"
+}
\ No newline at end of file
-- 
GitLab