diff --git a/CMakeModules/prepare_asapo.cmake b/CMakeModules/prepare_asapo.cmake index dcb4d57505e3e095ffa6e5d695fb450e82cde49b..d80e80166b14586db3f86fce3540bac8200b310b 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 0000000000000000000000000000000000000000..b7d9f2446fb62c2c3e7d353172978d4a9682e832 --- /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 0000000000000000000000000000000000000000..0efbdf70d17c57c0ebe81ea9a7cc8956c06f01ee --- /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 36d8f80a1fc8f7c23230a58e788f02ea2dfba7c1..0b827d13d8faef9b89f6d13a36544f9be53232fc 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 0000000000000000000000000000000000000000..1d968aa427fc8816fa75ba1d82ffb491870b3432 --- /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 0fb21c69ec31121c8dd570340c3ef690487cc73f..2d74dbc8403112ea4eafcc8edf45c677c0355ea2 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 a85cbe6c4e84d0197c3df9518e549ad393973de6..dd1893765b7f8eb413b9868b2fd7a89238da0ee4 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 0000000000000000000000000000000000000000..af6d1dcb2492b7cacf45268b761a92e20ab0521e --- /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