diff --git a/CMakeLists.txt b/CMakeLists.txt index db2c3fd22c1a89c8825eead683e10c2895a146f7..58b498aa7a469b5dd4e8cc6324c074a8f69f576f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,6 +46,9 @@ include(astyle) include(testing_cpp) +include(prepare_asapo) + + if(BUILD_WORKER_TOOLS) set (BUILD_MONGODB_CLIENTLIB ON) endif() diff --git a/CMakeModules/prepare_asapo.cmake b/CMakeModules/prepare_asapo.cmake new file mode 100644 index 0000000000000000000000000000000000000000..dcb4d57505e3e095ffa6e5d695fb450e82cde49b --- /dev/null +++ b/CMakeModules/prepare_asapo.cmake @@ -0,0 +1,11 @@ +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) + 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}/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) +endfunction() + diff --git a/config/nomad/discovery.nmd.in b/config/nomad/discovery.nmd.in new file mode 100644 index 0000000000000000000000000000000000000000..60a8a174e1f5013ea963bd090684c6b9866cd504 --- /dev/null +++ b/config/nomad/discovery.nmd.in @@ -0,0 +1,49 @@ +job "discovery" { + datacenters = ["dc1"] + + type = "service" + + group "group" { + count = 1 + + task "service" { + driver = "raw_exec" + + config { + command = "@DISCOVERY_FULLPATH@", + args = ["-config","${NOMAD_TASK_DIR}/discovery.json"] + } + + resources { + cpu = 500 # 500 MHz + memory = 256 # 256MB + network { + port "discovery" { + static = "5006" + } + } + } + + service { + name = "discovery" + port = "discovery" + check { + name = "alive" + type = "http" + path = "/receivers" + interval = "10s" + timeout = "2s" + initial_status = "passing" + } + } + + template { + source = "@WORK_DIR@/discovery.json.tpl" + destination = "local/discovery.json" + change_mode = "signal" + change_signal = "SIGHUP" + } + + } + } +} diff --git a/config/nomad/receiver.nmd.in b/config/nomad/receiver.nmd.in index 1d9c1675e1d1b247e1b962533e207445a79b6e2a..4559aedc71870e3c6e91be7c8c0afa06084451fa 100644 --- a/config/nomad/receiver.nmd.in +++ b/config/nomad/receiver.nmd.in @@ -11,7 +11,7 @@ job "receiver" { config { command = "/bin/bash", - args = ["-c", "mkdir files && exec ${RECEIVER_DIR}/${RECEIVER_NAME} receiver.json && rm -rf files"] + args = ["-c", "cd @WORK_DIR@ && exec @RECEIVER_DIR@/@RECEIVER_NAME@ ${NOMAD_TASK_DIR}/receiver.json"] } resources { @@ -35,8 +35,8 @@ job "receiver" { } template { - source = "${CMAKE_CURRENT_BINARY_DIR}/receiver.json.tpl" - destination = "receiver.json" + source = "@WORK_DIR@/receiver.json.tpl" + destination = "local/receiver.json" change_mode = "signal" change_signal = "SIGHUP" } diff --git a/examples/producer/dummy-data-producer/check_linux.sh b/examples/producer/dummy-data-producer/check_linux.sh index 51a14177248525416ad5e995fcca02f755bddf75..ec9b000ff2f021fbb8c8bc6054e766d76f2e92ae 100644 --- a/examples/producer/dummy-data-producer/check_linux.sh +++ b/examples/producer/dummy-data-producer/check_linux.sh @@ -6,5 +6,5 @@ database_name=test_run #just test that it starts, no reciever is running -$@ 0.0.0.0 1 1 2>&1 | grep "Failed to connect" +$@ 0.0.0.0 1 1 1 1 2>&1 | grep "not successfully" diff --git a/producer/api/src/request_handler_tcp.cpp b/producer/api/src/request_handler_tcp.cpp index b382e001086d47b25b6fd21fb18ac3b26639bf19..afbd2fd7593604ec87946a4dc7a1096a802c0938 100644 --- a/producer/api/src/request_handler_tcp.cpp +++ b/producer/api/src/request_handler_tcp.cpp @@ -29,14 +29,11 @@ Error RequestHandlerTcp::SendHeaderAndData(const Request* request, const std::st Error io_error; io__->Send(sd_, &(request->header), sizeof(request->header), &io_error); if(io_error) { -// todo: add meaningful message to the io_error (here and below) - log__->Debug("cannot send header to " + receiver_address + " - " + io_error->Explain()); return io_error; } io__->Send(sd_, request->data, request->header.data_size, &io_error); if(io_error) { - log__->Debug("cannot send data to " + receiver_address + " - " + io_error->Explain()); return io_error; } @@ -48,7 +45,6 @@ Error RequestHandlerTcp::ReceiveResponse(const std::string& receiver_address) { SendDataResponse sendDataResponse; io__->Receive(sd_, &sendDataResponse, sizeof(sendDataResponse), &err); if(err != nullptr) { - log__->Debug("cannot receive response from " + receiver_address + " - " + err->Explain()); return err; } @@ -69,7 +65,6 @@ Error RequestHandlerTcp::TrySendToReceiver(const Request* request, const std::st err = ReceiveResponse(receiver_address); if (err) { - log__->Debug("cannot send data to " + receiver_address + ": " + err->Explain()); return err; } @@ -122,6 +117,7 @@ Error RequestHandlerTcp::ProcessRequestUnlocked(const Request* request) { if (err != nullptr && err != ProducerErrorTemplates::kFileIdAlreadyInUse) { io__->CloseSocket(sd_, nullptr); sd_ = kDisconnectedSocketDescriptor; + log__->Debug("cannot send data to " + receiver_uri + ": " + err->Explain()); log__->Debug("disconnected from " + receiver_uri); continue; } diff --git a/producer/api/unittests/test_request_handler_tcp.cpp b/producer/api/unittests/test_request_handler_tcp.cpp index 8eb3a24d671676155f31944053bd2e0a00baa1a9..440d41f59adc210ece79625aa3614e8d2d9cc3a2 100644 --- a/producer/api/unittests/test_request_handler_tcp.cpp +++ b/producer/api/unittests/test_request_handler_tcp.cpp @@ -138,7 +138,13 @@ void RequestHandlerTcpTests::ExpectFailSendHeader(bool only_once) { Return(-1) )); EXPECT_CALL(mock_logger, Debug(AllOf( - HasSubstr("cannot send header"), + HasSubstr("disconnected"), + HasSubstr(receivers_list[i]) + ) + )); + + EXPECT_CALL(mock_logger, Debug(AllOf( + HasSubstr("cannot send"), HasSubstr(receivers_list[i]) ) )); @@ -160,7 +166,13 @@ void RequestHandlerTcpTests::ExpectFailSendData(bool only_once) { Return(-1) )); EXPECT_CALL(mock_logger, Debug(AllOf( - HasSubstr("cannot send data"), + HasSubstr("disconnected"), + HasSubstr(receivers_list[i]) + ) + )); + + EXPECT_CALL(mock_logger, Debug(AllOf( + HasSubstr("cannot send"), HasSubstr(receivers_list[i]) ) )); @@ -183,7 +195,14 @@ void RequestHandlerTcpTests::ExpectFailReceive(bool only_once) { testing::Return(-1) )); EXPECT_CALL(mock_logger, Debug(AllOf( - HasSubstr("cannot receive"), + HasSubstr("disconnected"), + HasSubstr(receivers_list[i]) + ) + )); + + + EXPECT_CALL(mock_logger, Debug(AllOf( + HasSubstr("cannot send"), HasSubstr(receivers_list[i]) ) )); diff --git a/tests/automatic/producer_receiver/check_monitoring/CMakeLists.txt b/tests/automatic/producer_receiver/check_monitoring/CMakeLists.txt index 5b43f59df51f2c66fdb2e11682b0c1dcb6250601..45cadecbc453d59a38cbfa44307217a9456248d4 100644 --- a/tests/automatic/producer_receiver/check_monitoring/CMakeLists.txt +++ b/tests/automatic/producer_receiver/check_monitoring/CMakeLists.txt @@ -3,10 +3,6 @@ set(TARGET_NAME receiver) ################################ # Testing ################################ -get_target_property(RECEIVER_DIR receiver-bin BINARY_DIR) -get_target_property(RECEIVER_NAME receiver-bin OUTPUT_NAME) +prepare_asapo() -configure_file(${CMAKE_SOURCE_DIR}/config/nomad/receiver.nmd.in receiver.nmd) -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 discovery.json COPYONLY) add_script_test("${TARGET_NAME}-monitoring" "$<TARGET_FILE:dummy-data-producer> $<TARGET_FILE:receiver-bin> $<TARGET_PROPERTY:asapo-discovery,EXENAME>" nomem) diff --git a/tests/automatic/producer_receiver/check_monitoring/check_linux.sh b/tests/automatic/producer_receiver/check_monitoring/check_linux.sh index 39597e47a943435d3f9c6a728d51aab33da7aef2..7c7e9eb0abfb16a6acdec205b69d0aa0b817a684 100644 --- a/tests/automatic/producer_receiver/check_monitoring/check_linux.sh +++ b/tests/automatic/producer_receiver/check_monitoring/check_linux.sh @@ -10,19 +10,18 @@ trap Cleanup EXIT Cleanup() { echo cleanup influx -execute "drop database ${database_name}" -# kill $receiverid nomad stop receiver - kill $discoveryid + nomad stop discovery echo "db.dropDatabase()" | mongo ${mongo_database_name} + rm -rf files } +mkdir files + influx -execute "create database ${database_name}" nomad run receiver.nmd -sleep 0.3 - -nohup $3 -config discovery.json &>/dev/null & -discoveryid=`echo $!` +nomad run discovery.nmd sleep 1 diff --git a/tests/automatic/producer_receiver/transfer_single_file/CMakeLists.txt b/tests/automatic/producer_receiver/transfer_single_file/CMakeLists.txt index f745213b85ef22c898bce3130b1ae24dcfa33a13..c74ddedc8f912a8ef481a6df1bf050c802ade55a 100644 --- a/tests/automatic/producer_receiver/transfer_single_file/CMakeLists.txt +++ b/tests/automatic/producer_receiver/transfer_single_file/CMakeLists.txt @@ -3,5 +3,5 @@ set(TARGET_NAME transfer-single-file) ################################ # Testing ################################ -configure_file(${CMAKE_SOURCE_DIR}/tests/automatic/settings/receiver.json receiver.json COPYONLY) +prepare_asapo() add_script_test("${TARGET_NAME}" "$<TARGET_FILE:dummy-data-producer> $<TARGET_FILE:receiver-bin>" nomem) diff --git a/tests/automatic/producer_receiver/transfer_single_file/check_linux.sh b/tests/automatic/producer_receiver/transfer_single_file/check_linux.sh index 48d4ff3dc0a304c83e88d3fc659acb39bcfa2014..ae8edbf6cca3cfe8dd81a4176b38bb4e352a754e 100644 --- a/tests/automatic/producer_receiver/transfer_single_file/check_linux.sh +++ b/tests/automatic/producer_receiver/transfer_single_file/check_linux.sh @@ -9,16 +9,17 @@ database_name=test_run Cleanup() { echo cleanup rm -rf files - kill $receiverid + nomad stop receiver + nomad stop discovery echo "db.dropDatabase()" | mongo ${database_name} } -nohup $2 receiver.json &>/dev/null & -sleep 0.3 -receiverid=`echo $!` +nomad run receiver.nmd +nomad run discovery.nmd mkdir files -$1 localhost:4200 100 1 +$1 localhost:5006 100 1 1 0 + ls -ln files/1.bin | awk '{ print $5 }'| grep 102400 diff --git a/tests/automatic/settings/discovery_settings.json.tpl b/tests/automatic/settings/discovery_settings.json.tpl new file mode 100644 index 0000000000000000000000000000000000000000..62cb9864b6b7cf0c4a738ca8f1a2b254ff4400fc --- /dev/null +++ b/tests/automatic/settings/discovery_settings.json.tpl @@ -0,0 +1,8 @@ +{ + "MaxConnections": 32, + "Mode": "consul", + "Port": {{ env "NOMAD_PORT_discovery" }}, + "LogLevel":"debug" +} + +