diff --git a/CMakeModules/prepare_asapo.cmake b/CMakeModules/prepare_asapo.cmake index 53580a80b0f90d9b3c3546efab2ec5a460216922..26bedee49dad2b3f7a138f5860db32fab6cdf101 100644 --- a/CMakeModules/prepare_asapo.cmake +++ b/CMakeModules/prepare_asapo.cmake @@ -14,5 +14,8 @@ function(prepare_asapo) configure_file(${CMAKE_SOURCE_DIR}/config/nomad/broker.nmd.in broker.nmd @ONLY) 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) + 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() diff --git a/config/nomad/nginx.nmd b/config/nomad/nginx.nmd.in similarity index 71% rename from config/nomad/nginx.nmd rename to config/nomad/nginx.nmd.in index 097b74aa621058bcb30baba6553dbed320624eb2..6399b0ca2d60d96e4e9ff625dbb46af61d1da6d6 100644 --- a/config/nomad/nginx.nmd +++ b/config/nomad/nginx.nmd.in @@ -21,14 +21,11 @@ job "nginx" { } task "nginx" { - driver = "docker" + driver = "raw_exec" config { - image = "nginx:latest" - volumes = ["/home/yakubov/projects/asapo/config/nomad/nginx.conf:/etc/nginx/nginx.conf","local/:/logs" ] - network_mode = "host" - dns_servers = ["127.0.0.1"] - dns_search_domains=["consul"] + command = "nginx", + args = ["-c","${NOMAD_TASK_DIR}/nginx.conf"] } resources { @@ -37,7 +34,7 @@ job "nginx" { network { mbits = 10 port "nginx" { - static = 8080 + static = 8400 } } } @@ -52,6 +49,14 @@ job "nginx" { timeout = "2s" } } + + template { + source = "@WORK_DIR@/nginx.conf.tpl" + destination = "local/nginx.conf" + change_mode = "restart" + } + + } } } \ No newline at end of file diff --git a/config/nomad/payload.json b/config/nomad/payload.json deleted file mode 100644 index ed49f9bbcc47070aeeb876d9190e608e3543120d..0000000000000000000000000000000000000000 --- a/config/nomad/payload.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Name": "discovery", - "Address": "127.0.0.1", - "Port": 5006, - "Check": { - "HTTP": "http://localhost:5006/receivers", - "Interval": "15s" - } -} diff --git a/discovery/src/asapo_discovery/server/server_nottested.go b/discovery/src/asapo_discovery/server/server_nottested.go index 9037866606296617a6e0cbd6c509944e1a3af0a3..d193d866331875e5ec8801758b3a5745d51ba69d 100644 --- a/discovery/src/asapo_discovery/server/server_nottested.go +++ b/discovery/src/asapo_discovery/server/server_nottested.go @@ -23,7 +23,5 @@ func ReadConfig(fname string) (log.Level, error) { if err := settings.Validate(); err != nil { return log.FatalLevel,err } - return log.LevelFromString(settings.LogLevel) - } diff --git a/producer/api/src/receiver_discovery_service.cpp b/producer/api/src/receiver_discovery_service.cpp index 5ca5f7315bacd63c8e2de397ef4eeb1e453bcc4a..aba9b56c2f265f60e79c3221b1a01f15a5c1a301 100644 --- a/producer/api/src/receiver_discovery_service.cpp +++ b/producer/api/src/receiver_discovery_service.cpp @@ -9,9 +9,11 @@ namespace asapo { +const std::string ReceiverDiscoveryService::kServiceEndpointSuffix = "/discovery/receivers"; + ReceiverDiscoveryService::ReceiverDiscoveryService(std::string endpoint, uint64_t update_frequency_ms): httpclient__{DefaultHttpClient()}, log__{GetDefaultProducerLogger()}, - endpoint_{std::move(endpoint) + "/receivers"}, update_frequency_ms_{update_frequency_ms} { + endpoint_{std::move(endpoint) + kServiceEndpointSuffix}, update_frequency_ms_{update_frequency_ms} { } diff --git a/producer/api/src/receiver_discovery_service.h b/producer/api/src/receiver_discovery_service.h index c9893423e2fb1d2764f1411b26a49b92ac5b787a..c1eab17ff3a8a73fdf4b231d03b2667a6af493f0 100644 --- a/producer/api/src/receiver_discovery_service.h +++ b/producer/api/src/receiver_discovery_service.h @@ -28,6 +28,7 @@ class ReceiverDiscoveryService { std::unique_ptr<HttpClient> httpclient__; AbstractLogger* log__; private: + static const std::string kServiceEndpointSuffix; void ThreadHandler(); Error UpdateFromEndpoint(ReceiversList* list, uint64_t* max_connections); Error ParseResponse(const std::string& responce, ReceiversList* list, uint64_t* max_connections); diff --git a/producer/api/src/request_handler_tcp.cpp b/producer/api/src/request_handler_tcp.cpp index 3b5972d8a965ff2ac024b9632b7946cd9a6e6148..e85d51645444fa3b9e81912e554853a0d356800d 100644 --- a/producer/api/src/request_handler_tcp.cpp +++ b/producer/api/src/request_handler_tcp.cpp @@ -70,7 +70,7 @@ Error RequestHandlerTcp::TrySendToReceiver(const Request* request) { } log__->Debug(std::string("successfully sent data ") + " id: " + std::to_string(request->header.data_id) + " to " + - connected_receiver_uri_); + connected_receiver_uri_); return nullptr; } @@ -94,7 +94,7 @@ bool RequestHandlerTcp::UpdateReceiversList() { bool RequestHandlerTcp::TimeToUpdateReceiverList() { uint64_t elapsed_ms = std::chrono::duration_cast<std::chrono::milliseconds>( high_resolution_clock::now() - - last_receivers_uri_update_).count(); + last_receivers_uri_update_).count(); return elapsed_ms > discovery_service__->UpdateFrequency(); } diff --git a/producer/api/unittests/test_receiver_discovery_service.cpp b/producer/api/unittests/test_receiver_discovery_service.cpp index c69af5fdd533f2373d8fde6af12682c9e49caef6..c31136152534e2d352c58a46d6642b73352d7ffa 100644 --- a/producer/api/unittests/test_receiver_discovery_service.cpp +++ b/producer/api/unittests/test_receiver_discovery_service.cpp @@ -48,7 +48,7 @@ class ReceiversStatusTests : public Test { NiceMock<asapo::MockLogger> mock_logger; NiceMock<MockHttpClient>* mock_http_client; - std::string expected_endpoint{"endpoint/receivers"}; + std::string expected_endpoint{"endpoint/discovery/receivers"}; ReceiverDiscoveryService status{"endpoint", 20}; void SetUp() override { diff --git a/tests/automatic/full_chain/simple_chain/check_linux.sh b/tests/automatic/full_chain/simple_chain/check_linux.sh index f384a4b70254a617746823ea3c5f84e69ed619de..f4724e1c08480bccac04a304984cd6532d11bea9 100644 --- a/tests/automatic/full_chain/simple_chain/check_linux.sh +++ b/tests/automatic/full_chain/simple_chain/check_linux.sh @@ -13,6 +13,7 @@ receiver_folder=/tmp/asapo/receiver/files Cleanup() { echo cleanup rm -rf ${receiver_folder} + nomad stop nginx nomad stop receiver nomad stop discovery nomad stop broker @@ -24,6 +25,7 @@ Cleanup() { influx -execute "create database ${monitor_database_name}" echo "db.${broker_database_name}.insert({dummy:1})" | mongo ${broker_database_name} +nomad run nginx.nmd nomad run receiver.nmd nomad run discovery.nmd nomad run broker.nmd @@ -32,7 +34,7 @@ sleep 1 #producer mkdir -p ${receiver_folder} -$1 localhost:5006 100 1000 4 0 & +$1 localhost:8400 100 1000 4 0 & #producerid=`echo $!` diff --git a/tests/automatic/full_chain/simple_chain/check_windows.bat b/tests/automatic/full_chain/simple_chain/check_windows.bat index bd7115b3858e0283c548d108f8143d80e17f7c2c..e8d63bbe8a945cc68deccbc975542da8d50babe7 100644 --- a/tests/automatic/full_chain/simple_chain/check_windows.bat +++ b/tests/automatic/full_chain/simple_chain/check_windows.bat @@ -7,12 +7,13 @@ echo db.%broker_database_name%.insert({dummy:1}) | %mongo_exe% %broker_database_ c:\opt\consul\nomad run receiver.nmd c:\opt\consul\nomad run discovery.nmd c:\opt\consul\nomad run broker.nmd +c:\opt\consul\nomad run nginx.nmd ping 1.0.0.0 -n 10 -w 100 > nul REM producer mkdir %receiver_folder% -start /B "" "%1" localhost:5006 100 1000 4 0 +start /B "" "%1" localhost:8400 100 1000 4 0 ping 1.0.0.0 -n 1 -w 100 > nul REM worker @@ -30,6 +31,7 @@ exit /b 1 c:\opt\consul\nomad stop receiver c:\opt\consul\nomad stop discovery c:\opt\consul\nomad stop broker +c:\opt\consul\nomad stop nginx rmdir /S /Q %receiver_folder% echo db.dropDatabase() | %mongo_exe% %broker_database_name% diff --git a/tests/automatic/producer_receiver/check_monitoring/check_linux.sh b/tests/automatic/producer_receiver/check_monitoring/check_linux.sh index 817e76757865684c21985e90c262eb2a056a2b33..936ca16de475b8e2a744afa28eb84507862ac532 100644 --- a/tests/automatic/producer_receiver/check_monitoring/check_linux.sh +++ b/tests/automatic/producer_receiver/check_monitoring/check_linux.sh @@ -12,6 +12,7 @@ Cleanup() { influx -execute "drop database ${database_name}" nomad stop receiver nomad stop discovery + nomad stop nginx echo "db.dropDatabase()" | mongo ${mongo_database_name} rm -rf ${receiver_folder} } @@ -22,10 +23,11 @@ influx -execute "create database ${database_name}" nomad run receiver.nmd nomad run discovery.nmd +nomad run nginx.nmd sleep 1 -$1 localhost:5006 100 112 4 0 +$1 localhost:8400 100 112 4 0 sleep 1 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 d904c84f601fb0dee70caedc51fe94f5b0ae091f..d2b4f5f5ae318c4517fa0d5db643dfaf9d9085d9 100644 --- a/tests/automatic/producer_receiver/transfer_single_file/check_linux.sh +++ b/tests/automatic/producer_receiver/transfer_single_file/check_linux.sh @@ -13,6 +13,7 @@ Cleanup() { rm -rf ${receiver_folder} nomad stop receiver nomad stop discovery + nomad stop nginx echo "db.dropDatabase()" | mongo ${mongo_database_name} influx -execute "drop database ${database_name}" } @@ -20,12 +21,13 @@ Cleanup() { influx -execute "create database ${database_name}" echo "db.${mongo_database_name}.insert({dummy:1})" | mongo ${mongo_database_name} +nomad run nginx.nmd nomad run receiver.nmd nomad run discovery.nmd mkdir -p ${receiver_folder} -$1 localhost:5006 100 1 1 0 +$1 localhost:8400 100 1 1 0 ls -ln ${receiver_folder}/1.bin | awk '{ print $5 }'| grep 102400 diff --git a/tests/automatic/producer_receiver/transfer_single_file/check_windows.bat b/tests/automatic/producer_receiver/transfer_single_file/check_windows.bat index af71a9d81b50613e19968b03b0f19aff90adc46c..cb26780f3fa028d4de4f62daf5f57750aca7571d 100644 --- a/tests/automatic/producer_receiver/transfer_single_file/check_windows.bat +++ b/tests/automatic/producer_receiver/transfer_single_file/check_windows.bat @@ -7,12 +7,13 @@ echo db.%database_name%.insert({dummy:1})" | %mongo_exe% %database_name% c:\opt\consul\nomad run receiver.nmd c:\opt\consul\nomad run discovery.nmd +c:\opt\consul\nomad run nginx.nmd ping 1.0.0.0 -n 1 -w 100 > nul mkdir %receiver_folder% -%1 localhost:5006 100 1 1 0 +%1 localhost:8400 100 1 1 0 ping 1.0.0.0 -n 1 -w 100 > nul @@ -28,6 +29,7 @@ exit /b 1 :clean c:\opt\consul\nomad stop receiver c:\opt\consul\nomad stop discovery +c:\opt\consul\nomad stop nginx rmdir /S /Q %receiver_folder% echo db.dropDatabase() | %mongo_exe% %database_name% diff --git a/config/nomad/nginx.conf b/tests/automatic/settings/nginx.conf.tpl similarity index 51% rename from config/nomad/nginx.conf rename to tests/automatic/settings/nginx.conf.tpl index 357a7c1571c5416b03dec13370b8b8bf9215b098..5d76720542d7571eef455648556a2cb5a9a88772 100644 --- a/config/nomad/nginx.conf +++ b/tests/automatic/settings/nginx.conf.tpl @@ -13,10 +13,14 @@ http { # keepalive_timeout 0; # keepalive_timeout 65; + + resolver 127.0.0.1:8600 valid=1s; server { - listen 8080; - location /discovery/ { - proxy_pass http://discovery.service.consul:5006/; + listen 8400; + set $discovery_endpoint discovery.service.asapo; + location /discovery/ { + rewrite ^/discovery(/.*) $1 break; + proxy_pass http://$discovery_endpoint:5006$uri; } } } diff --git a/worker/api/cpp/src/server_data_broker.cpp b/worker/api/cpp/src/server_data_broker.cpp index 887c9bfc77d97156c77cdbf1bb07a629eff37233..da6940895b746e88d52dd23b83e8e401a89c32b7 100644 --- a/worker/api/cpp/src/server_data_broker.cpp +++ b/worker/api/cpp/src/server_data_broker.cpp @@ -56,7 +56,7 @@ std::string GetIDFromJson(const std::string& json_string, Error* err) { return std::to_string(id); } -void ServerDataBroker::ProcessServerError(Error* err,const std::string& response,std::string* redirect_uri) { +void ServerDataBroker::ProcessServerError(Error* err, const std::string& response, std::string* redirect_uri) { if ((*err)->GetErrorType() != asapo::ErrorType::kEndOfFile) { (*err)->Append(response); return; @@ -69,11 +69,11 @@ void ServerDataBroker::ProcessServerError(Error* err,const std::string& response *redirect_uri = server_uri_ + "/database/" + source_name_ + "/" + id; } } - *err=nullptr; + *err = nullptr; return; } -Error ServerDataBroker::ProcessRequest(std::string* response,std::string request_uri) { +Error ServerDataBroker::ProcessRequest(std::string* response, std::string request_uri) { Error err; HttpCode code; *response = httpclient__->Get(request_uri, &code, &err); @@ -88,12 +88,12 @@ Error ServerDataBroker::GetFileInfoFromServer(FileInfo* info, const std::string& uint64_t elapsed_ms = 0; std::string response; while (true) { - auto err = ProcessRequest(&response,request_uri); + auto err = ProcessRequest(&response, request_uri); if (err == nullptr) { break; } - ProcessServerError(&err,response,&request_uri); + ProcessServerError(&err, response, &request_uri); if (err != nullptr) { return err; } diff --git a/worker/api/cpp/src/server_data_broker.h b/worker/api/cpp/src/server_data_broker.h index f17ce25c30bff2362c8c84f25094e63b5c566312..03f18b8a36406f7f3e607e30f30b9fc9ca8f2918 100644 --- a/worker/api/cpp/src/server_data_broker.h +++ b/worker/api/cpp/src/server_data_broker.h @@ -20,8 +20,8 @@ class ServerDataBroker final : public asapo::DataBroker { std::unique_ptr<HttpClient> httpclient__; private: Error GetFileInfoFromServer(FileInfo* info, const std::string& operation); - void ProcessServerError(Error* err,const std::string& response,std::string* redirect_uri); - Error ProcessRequest(std::string* response,std::string request_uri); + void ProcessServerError(Error* err, const std::string& response, std::string* redirect_uri); + Error ProcessRequest(std::string* response, std::string request_uri); std::string server_uri_; std::string source_name_; uint64_t timeout_ms_ = 0;