From 2e01d2c82d8185632151e2c9ce7329105b7e9fab Mon Sep 17 00:00:00 2001 From: Sergey Yakubov <sergey.yakubov@desy.de> Date: Fri, 12 Nov 2021 14:11:39 +0100 Subject: [PATCH] finished refactoring logs/errors for receiver --- common/cpp/include/asapo/common/error.h | 8 +- common/cpp/include/asapo/common/error.tpp | 23 +++-- common/cpp/include/asapo/logger/logger.h | 3 +- common/cpp/src/logger/logger.cpp | 43 +++++---- common/cpp/src/system_io/system_io.cpp | 8 +- common/cpp/src/system_io/system_io_linux.cpp | 6 +- .../cpp/src/system_io/system_io_linux_mac.cpp | 8 +- .../cpp/src/system_io/system_io_windows.cpp | 8 +- common/cpp/unittests/common/test_error.cpp | 16 ++-- consumer/api/cpp/src/consumer_impl.cpp | 2 +- producer/api/cpp/src/producer_impl.cpp | 2 +- producer/api/cpp/src/request_handler_tcp.cpp | 10 +- .../net_server/rds_fabric_server.cpp | 2 +- .../net_server/rds_tcp_server.cpp | 91 ++++++++++--------- .../receiver_data_server.cpp | 3 +- .../receiver_data_server_error.h | 6 +- .../receiver_data_server_request_handler.cpp | 7 +- receiver/src/request.cpp | 8 +- .../request_handler/authorization_client.cpp | 4 +- .../receive_file_processor.cpp | 4 +- .../file_processors/write_file_processor.cpp | 8 +- .../request_handler_authorize.cpp | 2 +- .../request_handler/request_handler_db.cpp | 5 +- .../request_handler_receive_data.cpp | 10 +- .../request_handler_receive_metadata.cpp | 4 +- .../test_receive_file_processor.cpp | 7 +- .../test_write_file_processor.cpp | 17 ++-- .../test_request_handler_receive_data.cpp | 2 +- .../test_request_handler_receive_metadata.cpp | 2 +- .../read_folder_content/CMakeLists.txt | 4 +- .../read_string_from_file/CMakeLists.txt | 4 +- .../read_subdirectories/CMakeLists.txt | 4 +- 32 files changed, 188 insertions(+), 143 deletions(-) diff --git a/common/cpp/include/asapo/common/error.h b/common/cpp/include/asapo/common/error.h index 510ea0866..4c38ae3ca 100644 --- a/common/cpp/include/asapo/common/error.h +++ b/common/cpp/include/asapo/common/error.h @@ -21,7 +21,8 @@ class ErrorInterface { virtual std::string Explain() const noexcept = 0; virtual std::string ExplainPretty(uint8_t shift = 0) const noexcept = 0; virtual std::string ExplainInJSON() const noexcept = 0; - virtual ErrorInterface* AddContext(std::string key, std::string value) noexcept = 0; + virtual ErrorInterface* AddDetails(std::string key, std::string value) noexcept = 0; + virtual ErrorInterface* AddDetails(std::string key, uint64_t value) noexcept = 0; virtual ErrorInterface* SetCause(Error cause_err) noexcept = 0; virtual const Error& GetCause() const noexcept = 0; virtual CustomErrorData* GetCustomData() noexcept = 0; @@ -50,7 +51,7 @@ class ServiceError : public ErrorInterface { ServiceErrorType error_type_; std::string error_name_; std::string error_message_; - std::map<std::string, std::string> context_; + std::map<std::string, std::string> details_; Error cause_err_; std::unique_ptr<CustomErrorData> custom_data_; public: @@ -58,7 +59,8 @@ class ServiceError : public ErrorInterface { ServiceErrorType GetServiceErrorType() const noexcept; CustomErrorData* GetCustomData() noexcept override; void SetCustomData(std::unique_ptr<CustomErrorData> data) noexcept override; - ErrorInterface* AddContext(std::string key, std::string value) noexcept override; + ErrorInterface* AddDetails(std::string key, std::string value) noexcept override; + ErrorInterface* AddDetails(std::string key, uint64_t value) noexcept override; ErrorInterface* SetCause(Error cause_err) noexcept override; const Error& GetCause() const noexcept override; std::string Explain() const noexcept override; diff --git a/common/cpp/include/asapo/common/error.tpp b/common/cpp/include/asapo/common/error.tpp index 95f6eed66..a48955d2b 100644 --- a/common/cpp/include/asapo/common/error.tpp +++ b/common/cpp/include/asapo/common/error.tpp @@ -37,10 +37,10 @@ std::string ServiceError<ServiceErrorType>::ExplainPretty(uint8_t shift) const n if (!error_message_.empty()) { err += "\n" + base_shift + shift_s + "message: " + error_message_; } - if (!context_.empty()) { + if (!details_.empty()) { err += "\n" + base_shift + shift_s + "context: "; auto i = 0; - for (const auto &kv : context_) { + for (const auto &kv : details_) { err += (i > 0 ? ", " : "") + kv.first + ":" + kv.second; i++; } @@ -58,10 +58,10 @@ std::string ServiceError<ServiceErrorType>::Explain() const noexcept { if (!error_message_.empty()) { err += ", message: " + error_message_; } - if (!context_.empty()) { - err += ", context: "; + if (!details_.empty()) { + err += ", details: "; auto i = 0; - for (const auto &kv : context_) { + for (const auto &kv : details_) { err += (i > 0 ? ", " : "") + kv.first + ":" + kv.second; i++; } @@ -73,8 +73,8 @@ std::string ServiceError<ServiceErrorType>::Explain() const noexcept { } template<typename ServiceErrorType> -ErrorInterface *ServiceError<ServiceErrorType>::AddContext(std::string key, std::string value) noexcept { - context_[std::move(key)] = std::move(value); +ErrorInterface *ServiceError<ServiceErrorType>::AddDetails(std::string key, std::string value) noexcept { + details_[std::move(key)] = std::move(value); return this; } template<typename ServiceErrorType> @@ -93,10 +93,10 @@ std::string ServiceError<ServiceErrorType>::ExplainInJSON() const noexcept { if (!error_message_.empty()) { err += "," + WrapInQuotes("message") + ":" + WrapInQuotes(error_message_); } - if (!context_.empty()) { + if (!details_.empty()) { err += "," + WrapInQuotes("context") + ":{"; auto i = 0; - for (const auto &kv : context_) { + for (const auto &kv : details_) { err += (i > 0 ? ", " : "") + WrapInQuotes(kv.first) + ":" + WrapInQuotes(kv.second); i++; } @@ -112,6 +112,11 @@ const Error &ServiceError<ServiceErrorType>::GetCause() const noexcept { return cause_err_; } +template<typename ServiceErrorType> +ErrorInterface *ServiceError<ServiceErrorType>::AddDetails(std::string key, uint64_t value) noexcept { + return AddDetails(key,std::to_string(value)); +} + template<typename ServiceErrorType> Error ServiceErrorTemplate<ServiceErrorType>::Generate() const noexcept { return Generate(""); diff --git a/common/cpp/include/asapo/logger/logger.h b/common/cpp/include/asapo/logger/logger.h index e4dc86895..4bd212dc2 100644 --- a/common/cpp/include/asapo/logger/logger.h +++ b/common/cpp/include/asapo/logger/logger.h @@ -27,10 +27,11 @@ class LogMessageWithFields { LogMessageWithFields& Append(std::string key, uint64_t val); LogMessageWithFields& Append(std::string key, double val, int precision); LogMessageWithFields& Append(const LogMessageWithFields& log_msg); + LogMessageWithFields& Append(std::string key, const LogMessageWithFields& log_msg); LogMessageWithFields& Append(std::string key, std::string val); std::string LogString() const; private: - inline std::string QuoteIFNeeded(); + inline std::string CommaIfNeeded(); std::string log_string_; }; diff --git a/common/cpp/src/logger/logger.cpp b/common/cpp/src/logger/logger.cpp index 546112130..e9613d768 100644 --- a/common/cpp/src/logger/logger.cpp +++ b/common/cpp/src/logger/logger.cpp @@ -6,7 +6,7 @@ namespace asapo { -Logger CreateLogger(std::string name, bool console, bool centralized_log, const std::string& endpoint_uri) { +Logger CreateLogger(std::string name, bool console, bool centralized_log, const std::string &endpoint_uri) { auto logger = new SpdLogger{name, endpoint_uri}; logger->SetLogLevel(LogLevel::Info); if (console) { @@ -19,15 +19,15 @@ Logger CreateLogger(std::string name, bool console, bool centralized_log, const return Logger{logger}; } -Logger CreateDefaultLoggerBin(const std::string& name) { +Logger CreateDefaultLoggerBin(const std::string &name) { return CreateLogger(name, true, false, ""); } -Logger CreateDefaultLoggerApi(const std::string& name, const std::string& endpoint_uri) { +Logger CreateDefaultLoggerApi(const std::string &name, const std::string &endpoint_uri) { return CreateLogger(name, false, true, endpoint_uri); } -LogLevel StringToLogLevel(const std::string& name, Error* err) { +LogLevel StringToLogLevel(const std::string &name, Error *err) { *err = nullptr; if (name == "debug") return LogLevel::Debug; if (name == "info") return LogLevel::Info; @@ -40,7 +40,7 @@ LogLevel StringToLogLevel(const std::string& name, Error* err) { } template<typename ... Args> -std::string string_format(const std::string& format, Args ... args) { +std::string string_format(const std::string &format, Args ... args) { size_t size = static_cast<size_t>(snprintf(nullptr, 0, format.c_str(), args ...) + 1); std::unique_ptr<char[]> buf(new char[size]); snprintf(buf.get(), size, format.c_str(), args ...); @@ -52,11 +52,11 @@ std::string EncloseQuotes(std::string str) { } LogMessageWithFields::LogMessageWithFields(std::string key, uint64_t val) { - log_string_ = EncloseQuotes(key) + ":" + std::to_string(val); + log_string_ = EncloseQuotes(std::move(key)) + ":" + std::to_string(val); } LogMessageWithFields::LogMessageWithFields(std::string key, double val, int precision) { - log_string_ = EncloseQuotes(key) + ":" + string_format("%." + std::to_string(precision) + "f", val); + log_string_ = EncloseQuotes(std::move(key)) + ":" + string_format("%." + std::to_string(precision) + "f", val); } LogMessageWithFields::LogMessageWithFields(std::string val) { @@ -66,25 +66,26 @@ LogMessageWithFields::LogMessageWithFields(std::string val) { } LogMessageWithFields::LogMessageWithFields(std::string key, std::string val) { - log_string_ = EncloseQuotes(key) + ":" + EncloseQuotes(escape_json(val)); + log_string_ = EncloseQuotes(std::move(key)) + ":" + EncloseQuotes(escape_json(val)); } -inline std::string LogMessageWithFields::QuoteIFNeeded() { +inline std::string LogMessageWithFields::CommaIfNeeded() { return log_string_.empty() ? "" : ","; } -LogMessageWithFields& LogMessageWithFields::Append(std::string key, uint64_t val) { - log_string_ += QuoteIFNeeded() + EncloseQuotes(key) + ":" + std::to_string(val); +LogMessageWithFields &LogMessageWithFields::Append(std::string key, uint64_t val) { + log_string_ += CommaIfNeeded() + EncloseQuotes(std::move(key)) + ":" + std::to_string(val); return *this; } -LogMessageWithFields& LogMessageWithFields::Append(std::string key, double val, int precision) { - log_string_ += QuoteIFNeeded() + EncloseQuotes(key) + ":" + string_format("%." + std::to_string(precision) + "f", val); +LogMessageWithFields &LogMessageWithFields::Append(std::string key, double val, int precision) { + log_string_ += CommaIfNeeded() + EncloseQuotes(std::move(key)) + ":" + + string_format("%." + std::to_string(precision) + "f", val); return *this; } -LogMessageWithFields& LogMessageWithFields::Append(std::string key, std::string val) { - log_string_ += QuoteIFNeeded() + EncloseQuotes(key) + ":" + EncloseQuotes(escape_json(val)); +LogMessageWithFields &LogMessageWithFields::Append(std::string key, std::string val) { + log_string_ += CommaIfNeeded() + EncloseQuotes(std::move(key)) + ":" + EncloseQuotes(escape_json(val)); return *this; } @@ -92,11 +93,17 @@ std::string LogMessageWithFields::LogString() const { return log_string_; } -LogMessageWithFields::LogMessageWithFields(const Error& error) { +LogMessageWithFields::LogMessageWithFields(const Error &error) { log_string_ = error->ExplainInJSON(); } -LogMessageWithFields& LogMessageWithFields::Append(const LogMessageWithFields& log_msg) { - log_string_ += QuoteIFNeeded() + log_msg.LogString(); + +LogMessageWithFields &LogMessageWithFields::Append(const LogMessageWithFields &log_msg) { + log_string_ += CommaIfNeeded() + log_msg.LogString(); + return *this; +} + +LogMessageWithFields &LogMessageWithFields::Append(std::string key, const LogMessageWithFields &log_msg) { + log_string_ += CommaIfNeeded() + EncloseQuotes(std::move(key)) + ":{" + log_msg.LogString() + "}"; return *this; } diff --git a/common/cpp/src/system_io/system_io.cpp b/common/cpp/src/system_io/system_io.cpp index 3165a6a3d..8a5b403f3 100644 --- a/common/cpp/src/system_io/system_io.cpp +++ b/common/cpp/src/system_io/system_io.cpp @@ -116,7 +116,7 @@ MessageData SystemIO::GetDataFromFile(const std::string& fname, uint64_t* fsize, Read(fd, data_array, (size_t)*fsize, err); if (*err != nullptr) { - (*err)->AddContext("name", fname)->AddContext("expected size", std::to_string(*fsize)); + (*err)->AddDetails("name", fname)->AddDetails("expected size", std::to_string(*fsize)); Close(fd, nullptr); return nullptr; } @@ -191,7 +191,7 @@ Error SystemIO::WriteDataToFile(const std::string& root_folder, const std::strin Write(fd, data, length, &err); if (err) { - err->AddContext("name", fname); + err->AddDetails("name", fname); return err; } @@ -402,7 +402,7 @@ asapo::FileDescriptor asapo::SystemIO::Open(const std::string& filename, FileDescriptor fd = _open(filename.c_str(), flags); if (fd == -1) { *err = GetLastError(); - (*err)->AddContext("name", filename); + (*err)->AddDetails("name", filename); } else { *err = nullptr; } @@ -616,7 +616,7 @@ Error SystemIO::CreateDirectoryWithParents(const std::string& root_path, const s Error err; CreateNewDirectory(new_path, &err); if (err && err != IOErrorTemplates::kFileAlreadyExists) { - err->AddContext("name", new_path); + err->AddDetails("name", new_path); return err; } if (iter != path.end()) { diff --git a/common/cpp/src/system_io/system_io_linux.cpp b/common/cpp/src/system_io/system_io_linux.cpp index f4256bddb..18c4f1afe 100644 --- a/common/cpp/src/system_io/system_io_linux.cpp +++ b/common/cpp/src/system_io/system_io_linux.cpp @@ -28,7 +28,7 @@ Error SystemIO::AddToEpool(SocketDescriptor sd) const { event.data.fd = sd; if((epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, sd, &event) == -1) && (errno != EEXIST)) { auto err = GetLastError(); - err->AddContext("where", "add to epoll"); + err->AddDetails("where", "add to epoll"); close(epoll_fd_); return err; } @@ -43,7 +43,7 @@ Error SystemIO::CreateEpoolIfNeeded(SocketDescriptor master_socket) const { epoll_fd_ = epoll_create1(0); if(epoll_fd_ == kDisconnectedSocketDescriptor) { auto err = GetLastError(); - err->AddContext("where", "create epoll"); + err->AddDetails("where", "create epoll"); return err; } return AddToEpool(master_socket); @@ -84,7 +84,7 @@ ListSocketDescriptors SystemIO::WaitSocketsActivity(SocketDescriptor master_sock } if (event_count < 0) { *err = GetLastError(); - (*err)->AddContext("where", "epoll wait"); + (*err)->AddDetails("where", "epoll wait"); return {}; } diff --git a/common/cpp/src/system_io/system_io_linux_mac.cpp b/common/cpp/src/system_io/system_io_linux_mac.cpp index 371c12e4d..8aba5f769 100644 --- a/common/cpp/src/system_io/system_io_linux_mac.cpp +++ b/common/cpp/src/system_io/system_io_linux_mac.cpp @@ -68,7 +68,7 @@ Error GetLastErrorFromErrno() { return IOErrorTemplates::kBrokenPipe.Generate(); default: Error err = IOErrorTemplates::kUnknownIOError.Generate(); - (*err).AddContext("Unknown error code: ", std::to_string(errno)); + (*err).AddDetails("Unknown error code: ", std::to_string(errno)); return err; } } @@ -122,7 +122,7 @@ MessageMeta GetMessageMeta(const string& name, Error* err) { auto t_stat = FileStat(name, err); if (*err != nullptr) { - (*err)->AddContext("name", name); + (*err)->AddDetails("name", name); return MessageMeta{}; } @@ -157,7 +157,7 @@ void SystemIO::GetSubDirectoriesRecursively(const std::string& path, SubDirList* auto dir = opendir((path).c_str()); if (dir == nullptr) { *err = GetLastError(); - (*err)->AddContext("name", path); + (*err)->AddDetails("name", path); return; } @@ -183,7 +183,7 @@ void SystemIO::CollectMessageMetarmationRecursively(const std::string& path, auto dir = opendir((path).c_str()); if (dir == nullptr) { *err = GetLastError(); - (*err)->AddContext("name", path); + (*err)->AddDetails("name", path); return; } diff --git a/common/cpp/src/system_io/system_io_windows.cpp b/common/cpp/src/system_io/system_io_windows.cpp index b847d747b..d8df3328f 100644 --- a/common/cpp/src/system_io/system_io_windows.cpp +++ b/common/cpp/src/system_io/system_io_windows.cpp @@ -66,7 +66,7 @@ Error IOErrorFromGetLastError() { default: std::cout << "[IOErrorFromGetLastError] Unknown error code: " << last_error << std::endl; Error err = IOErrorTemplates::kUnknownIOError.Generate(); - (*err).AddContext("Unknown error code", std::to_string(last_error)); + (*err).AddDetails("Unknown error code", std::to_string(last_error)); return err; } } @@ -151,7 +151,7 @@ MessageMeta SystemIO::GetMessageMeta(const std::string& name, Error* err) const auto hFind = FindFirstFile(name.c_str(), &f); if (hFind == INVALID_HANDLE_VALUE) { *err = IOErrorFromGetLastError(); - (*err)->AddContext("name", name); + (*err)->AddDetails("name", name); return {}; } FindClose(hFind); @@ -179,7 +179,7 @@ void SystemIO::GetSubDirectoriesRecursively(const std::string& path, SubDirList* HANDLE handle = FindFirstFile((path + "\\*.*").c_str(), &find_data); if (handle == INVALID_HANDLE_VALUE) { *err = IOErrorFromGetLastError(); - (*err)->AddContext("name", path); + (*err)->AddDetails("name", path); return; } @@ -208,7 +208,7 @@ void SystemIO::CollectMessageMetarmationRecursively(const std::string& path, HANDLE handle = FindFirstFile((path + "\\*.*").c_str(), &find_data); if (handle == INVALID_HANDLE_VALUE) { *err = IOErrorFromGetLastError(); - (*err)->AddContext("name", path); + (*err)->AddDetails("name", path); return; } diff --git a/common/cpp/unittests/common/test_error.cpp b/common/cpp/unittests/common/test_error.cpp index c588ea052..4d459ba1a 100644 --- a/common/cpp/unittests/common/test_error.cpp +++ b/common/cpp/unittests/common/test_error.cpp @@ -27,13 +27,13 @@ TEST(ErrorTemplate, Explain) { ASSERT_THAT(error->Explain(), HasSubstr("test")); } -TEST(ErrorTemplate, Context) { +TEST(ErrorTemplate, Details) { Error error = asapo::GeneralErrorTemplates::kEndOfFile.Generate("test"); - error->AddContext("key", "value"); - error->AddContext("key2", "value2"); + error->AddDetails("key", "value"); + error->AddDetails("key2", "value2"); ASSERT_THAT(error->Explain(), AllOf(HasSubstr("test"), - HasSubstr("context"), + HasSubstr("details"), HasSubstr("key:value"), HasSubstr("key2:value2") )); @@ -43,8 +43,8 @@ TEST(ErrorTemplate, Cause) { Error error = asapo::GeneralErrorTemplates::kEndOfFile.Generate("test"); Error error_c = asapo::GeneralErrorTemplates::kMemoryAllocationError.Generate("cause_test"); Error error_c1 = asapo::GeneralErrorTemplates::kSimpleError.Generate("simple error"); - error->AddContext("key", "value"); - error_c->AddContext("key2", "value2"); + error->AddDetails("key", "value"); + error_c->AddDetails("key2", "value2"); error_c->SetCause(std::move(error_c1)); error->SetCause(std::move(error_c)); ASSERT_THAT(error->Explain(), AllOf(HasSubstr("test"), @@ -64,10 +64,10 @@ TEST(ErrorTemplate, Cause) { TEST(ErrorTemplate, Json) { Error error = asapo::GeneralErrorTemplates::kEndOfFile.Generate("test"); Error error_c = asapo::GeneralErrorTemplates::kMemoryAllocationError.Generate("cause_test"); - error->AddContext("key", "value"); + error->AddDetails("key", "value"); error->SetCause(std::move(error_c)); auto expected_string = - R"("error":"end of file","message":"test","context":{"key":"value"},"cause":{"error":"memory allocation","message":"cause_test"})"; + R"("error":"end of file","message":"test","details":{"key":"value"},"cause":{"error":"memory allocation","message":"cause_test"})"; ASSERT_THAT(error->ExplainInJSON(), Eq(expected_string)); } diff --git a/consumer/api/cpp/src/consumer_impl.cpp b/consumer/api/cpp/src/consumer_impl.cpp index 0fda0f437..e20366e14 100644 --- a/consumer/api/cpp/src/consumer_impl.cpp +++ b/consumer/api/cpp/src/consumer_impl.cpp @@ -124,7 +124,7 @@ Error ProcessRequestResponce(const RequestInfo& request, } if (err != nullptr) { - err->AddContext("host", request.host)->AddContext("api", "request.api"); + err->AddDetails("host", request.host)->AddDetails("api", request.api); } return err; diff --git a/producer/api/cpp/src/producer_impl.cpp b/producer/api/cpp/src/producer_impl.cpp index a0b68f070..80dd71e16 100644 --- a/producer/api/cpp/src/producer_impl.cpp +++ b/producer/api/cpp/src/producer_impl.cpp @@ -89,7 +89,7 @@ Error CheckDatasetInRequest(const MessageHeader& message_header) { return ProducerErrorTemplates::kWrongInput.Generate("dataset dimensions"); } - if (message_header.auto_id) { + if (message_header.autwo_id) { return ProducerErrorTemplates::kWrongInput.Generate("auto id mode not implemented for datasets"); } diff --git a/producer/api/cpp/src/request_handler_tcp.cpp b/producer/api/cpp/src/request_handler_tcp.cpp index 9595e3146..defaa31a5 100644 --- a/producer/api/cpp/src/request_handler_tcp.cpp +++ b/producer/api/cpp/src/request_handler_tcp.cpp @@ -93,22 +93,22 @@ Error RequestHandlerTcp::ReceiveResponse(std::string* response) { switch (sendDataResponse.error_code) { case kNetAuthorizationError : { auto res_err = ProducerErrorTemplates::kWrongInput.Generate(); - res_err->AddContext("response", sendDataResponse.message); + res_err->AddDetails("response", sendDataResponse.message); return res_err; } case kNetErrorNotSupported : { auto res_err = ProducerErrorTemplates::kUnsupportedClient.Generate(); - res_err->AddContext("response", sendDataResponse.message); + res_err->AddDetails("response", sendDataResponse.message); return res_err; } case kNetErrorWrongRequest : { auto res_err = ProducerErrorTemplates::kWrongInput.Generate(); - res_err->AddContext("response", sendDataResponse.message); + res_err->AddDetails("response", sendDataResponse.message); return res_err; } case kNetErrorWarning: { auto res_err = ProducerErrorTemplates::kServerWarning.Generate(); - res_err->AddContext("response", sendDataResponse.message); + res_err->AddDetails("response", sendDataResponse.message); return res_err; } case kNetErrorReauthorize: { @@ -122,7 +122,7 @@ Error RequestHandlerTcp::ReceiveResponse(std::string* response) { return nullptr; default: auto res_err = ProducerErrorTemplates::kInternalServerError.Generate(); - res_err->AddContext("response", sendDataResponse.message); + res_err->AddDetails("response", sendDataResponse.message); return res_err; } } diff --git a/receiver/src/receiver_data_server/net_server/rds_fabric_server.cpp b/receiver/src/receiver_data_server/net_server/rds_fabric_server.cpp index a31ab1874..4df46716d 100644 --- a/receiver/src/receiver_data_server/net_server/rds_fabric_server.cpp +++ b/receiver/src/receiver_data_server/net_server/rds_fabric_server.cpp @@ -30,7 +30,7 @@ Error RdsFabricServer::Initialize() { return err; } - log__->Info("Started Fabric ReceiverDataServer at '" + server__->GetAddress() + "'"); + log__->Info(LogMessageWithFields("started fabric data server").Append("address",server__->GetAddress())); return err; } diff --git a/receiver/src/receiver_data_server/net_server/rds_tcp_server.cpp b/receiver/src/receiver_data_server/net_server/rds_tcp_server.cpp index fc8efd3fe..e1d983add 100644 --- a/receiver/src/receiver_data_server/net_server/rds_tcp_server.cpp +++ b/receiver/src/receiver_data_server/net_server/rds_tcp_server.cpp @@ -1,34 +1,38 @@ #include "rds_tcp_server.h" #include "../receiver_data_server_logger.h" +#include "../receiver_data_server_error.h" #include "asapo/io/io_factory.h" #include "asapo/common/networking.h" namespace asapo { -RdsTcpServer::RdsTcpServer(std::string address, const AbstractLogger* logger) : io__{GenerateDefaultIO()}, log__{logger}, - address_{std::move(address)} {} +RdsTcpServer::RdsTcpServer(std::string address, const AbstractLogger *logger) : io__{GenerateDefaultIO()}, + log__{logger}, + address_{std::move(address)} {} Error RdsTcpServer::Initialize() { - Error err; - if (master_socket_ == kDisconnectedSocketDescriptor) { - master_socket_ = io__->CreateAndBindIPTCPSocketListener(address_, kMaxPendingConnections, &err); - if (!err) { - log__->Info("Started TCP ReceiverDataServer at '" + address_ + "'"); - } else { - log__->Error("TCP ReceiverDataServer cannot listen on " + address_ + ": " + err->Explain()); - } + if (master_socket_ != kDisconnectedSocketDescriptor) { + return GeneralErrorTemplates::kSimpleError.Generate("server was already initialized"); + } + Error io_err; + master_socket_ = io__->CreateAndBindIPTCPSocketListener(address_, kMaxPendingConnections, &io_err); + if (!io_err) { + log__->Info(LogMessageWithFields("started TCP data server").Append("address", address_)); } else { - err = GeneralErrorTemplates::kSimpleError.Generate("Server was already initialized"); + auto err = + ReceiverDataServerErrorTemplates::kServerError.Generate("cannot start TCP data server", std::move(io_err)); + err->AddDetails("address", address_); + return err; } - return err; + return nullptr; } -ListSocketDescriptors RdsTcpServer::GetActiveSockets(Error* err) { +ListSocketDescriptors RdsTcpServer::GetActiveSockets(Error *err) { std::vector<std::string> new_connections; auto sockets = io__->WaitSocketsActivity(master_socket_, &sockets_to_listen_, &new_connections, err); - for (auto& connection : new_connections) { - log__->Debug("new connection from " + connection); + for (auto &connection: new_connections) { + log__->Debug(LogMessageWithFields("new connection").Append("origin", connection)); } return sockets; } @@ -36,42 +40,44 @@ ListSocketDescriptors RdsTcpServer::GetActiveSockets(Error* err) { void RdsTcpServer::CloseSocket(SocketDescriptor socket) { sockets_to_listen_.erase(std::remove(sockets_to_listen_.begin(), sockets_to_listen_.end(), socket), sockets_to_listen_.end()); - log__->Debug("connection " + io__->AddressFromSocket(socket) + " closed"); + log__->Debug(LogMessageWithFields("connection closed").Append("origin", io__->AddressFromSocket(socket))); io__->CloseSocket(socket, nullptr); } -ReceiverDataServerRequestPtr RdsTcpServer::ReadRequest(SocketDescriptor socket, Error* err) { +ReceiverDataServerRequestPtr RdsTcpServer::ReadRequest(SocketDescriptor socket, Error *err) { GenericRequestHeader header; + Error io_err; + *err = nullptr; io__->Receive(socket, &header, - sizeof(GenericRequestHeader), err); - if (*err == GeneralErrorTemplates::kEndOfFile) { + sizeof(GenericRequestHeader), &io_err); + if (io_err == GeneralErrorTemplates::kEndOfFile) { CloseSocket(socket); return nullptr; - } else if (*err) { - log__->Error("error getting next request from " + io__->AddressFromSocket(socket) + ": " + (*err)-> - Explain() - ); + } else if (io_err) { + *err = ReceiverDataServerErrorTemplates::kServerError.Generate("error getting next request",std::move(io_err)); + (*err)->AddDetails("origin",io__->AddressFromSocket(socket)); return nullptr; } return ReceiverDataServerRequestPtr{new ReceiverDataServerRequest{header, (uint64_t) socket}}; } -GenericRequests RdsTcpServer::ReadRequests(const ListSocketDescriptors& sockets) { +GenericRequests RdsTcpServer::ReadRequests(const ListSocketDescriptors &sockets) { GenericRequests requests; - for (auto client : sockets) { + for (auto client: sockets) { Error err; auto request = ReadRequest(client, &err); if (err) { continue; } - log__->Debug("received request opcode: " + std::to_string(request->header.op_code) + " id: " + std::to_string( - request->header.data_id)); + log__->Debug(LogMessageWithFields("received request"). + Append("operation", OpcodeToString(request->header.op_code)). + Append("id", request->header.data_id)); requests.emplace_back(std::move(request)); } return requests; } -GenericRequests RdsTcpServer::GetNewRequests(Error* err) { +GenericRequests RdsTcpServer::GetNewRequests(Error *err) { auto sockets = GetActiveSockets(err); if (*err) { return {}; @@ -82,7 +88,7 @@ GenericRequests RdsTcpServer::GetNewRequests(Error* err) { RdsTcpServer::~RdsTcpServer() { if (!io__) return; // need for test that override io__ to run - for (auto client : sockets_to_listen_) { + for (auto client: sockets_to_listen_) { io__->CloseSocket(client, nullptr); } io__->CloseSocket(master_socket_, nullptr); @@ -92,28 +98,31 @@ void RdsTcpServer::HandleAfterError(uint64_t source_id) { CloseSocket(static_cast<int>(source_id)); } -Error RdsTcpServer::SendResponse(const ReceiverDataServerRequest* request, const GenericNetworkResponse* response) { - Error err; - io__->Send(static_cast<int>(request->source_id), response, sizeof(*response), &err); - if (err) { - log__->Error("cannot send to consumer" + err->Explain()); +Error RdsTcpServer::SendResponse(const ReceiverDataServerRequest *request, const GenericNetworkResponse *response) { + Error io_err,err; + auto socket= static_cast<int>(request->source_id); + io__->Send(socket, response, sizeof(*response), &io_err); + if (io_err) { + err = ReceiverDataServerErrorTemplates::kServerError.Generate("error sending response",std::move(io_err)); + err->AddDetails("origin",io__->AddressFromSocket(socket)); } return err; } Error -RdsTcpServer::SendResponseAndSlotData(const ReceiverDataServerRequest* request, const GenericNetworkResponse* response, - const CacheMeta* cache_slot) { +RdsTcpServer::SendResponseAndSlotData(const ReceiverDataServerRequest *request, const GenericNetworkResponse *response, + const CacheMeta *cache_slot) { Error err; - err = SendResponse(request, response); if (err) { return err; } - - io__->Send(static_cast<int>(request->source_id), cache_slot->addr, cache_slot->size, &err); - if (err) { - log__->Error("cannot send slot to worker" + err->Explain()); + Error io_err; + auto socket= static_cast<int>(request->source_id); + io__->Send(socket, cache_slot->addr, cache_slot->size, &io_err); + if (io_err) { + err = ReceiverDataServerErrorTemplates::kServerError.Generate("error sending slot data",std::move(io_err)); + err->AddDetails("origin",io__->AddressFromSocket(socket)); } return err; } diff --git a/receiver/src/receiver_data_server/receiver_data_server.cpp b/receiver/src/receiver_data_server/receiver_data_server.cpp index 1dd311a90..3ac686056 100644 --- a/receiver/src/receiver_data_server/receiver_data_server.cpp +++ b/receiver/src/receiver_data_server/receiver_data_server.cpp @@ -24,12 +24,11 @@ void ReceiverDataServer::Run() { if (err == IOErrorTemplates::kTimeout) { continue; } - if (!err) { err = request_pool__->AddRequests(std::move(requests)); } if (err) { - log__->Error(std::string("receiver data server stopped: ") + err->Explain()); + log__->Error(LogMessageWithFields("receiver data server stopped").Append("cause",std::move(err))); return; } } diff --git a/receiver/src/receiver_data_server/receiver_data_server_error.h b/receiver/src/receiver_data_server/receiver_data_server_error.h index 3e2e48601..be9bd21d5 100644 --- a/receiver/src/receiver_data_server/receiver_data_server_error.h +++ b/receiver/src/receiver_data_server/receiver_data_server_error.h @@ -7,7 +7,8 @@ namespace asapo { enum class ReceiverDataServerErrorType { kMemoryPool, - kWrongRequest + kWrongRequest, + kServerError }; using ReceiverDataServerErrorTemplate = ServiceErrorTemplate<ReceiverDataServerErrorType>; @@ -21,6 +22,9 @@ auto const kWrongRequest = ReceiverDataServerErrorTemplate { "wrong request", ReceiverDataServerErrorType::kWrongRequest }; +auto const kServerError = ReceiverDataServerErrorTemplate { + "server error", ReceiverDataServerErrorType::kServerError +}; } } diff --git a/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.cpp b/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.cpp index f2409de02..3ecec5d88 100644 --- a/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.cpp +++ b/receiver/src/receiver_data_server/request_handler/receiver_data_server_request_handler.cpp @@ -92,7 +92,10 @@ void ReceiverDataServerRequestHandler::ProcessRequestTimeoutUnlocked(GenericRequ void ReceiverDataServerRequestHandler::HandleInvalidRequest(const ReceiverDataServerRequest* receiver_request, NetworkErrorCode code) { - SendResponse(receiver_request, code); + auto err = SendResponse(receiver_request, code); + if (err) { + log__->Error(err); + } server_->HandleAfterError(receiver_request->source_id); switch (code) { case NetworkErrorCode::kNetErrorWrongRequest: @@ -111,8 +114,8 @@ void ReceiverDataServerRequestHandler::HandleValidRequest(const ReceiverDataServ const CacheMeta* meta) { auto err = SendResponseAndSlotData(receiver_request, meta); if (err) { - log__->Error("failed to send slot:" + err->Explain()); server_->HandleAfterError(receiver_request->source_id); + log__->Error(err); } else { statistics__->IncreaseRequestCounter(); statistics__->IncreaseRequestDataVolume(receiver_request->header.data_size); diff --git a/receiver/src/request.cpp b/receiver/src/request.cpp index 0c4ed721b..25172a9ab 100644 --- a/receiver/src/request.cpp +++ b/receiver/src/request.cpp @@ -18,7 +18,9 @@ Error Request::PrepareDataBufferAndLockIfNeeded() { try { data_buffer_.reset(new uint8_t[(size_t)request_header_.data_size]); } catch(std::exception& e) { - auto err = GeneralErrorTemplates::kMemoryAllocationError.Generate(e.what()); + auto err = GeneralErrorTemplates::kMemoryAllocationError.Generate( + std::string("cannot allocate memory for request")); + err->AddDetails("reason", e.what())->AddDetails("size", std::to_string(request_header_.data_size)); return err; } } else { @@ -27,7 +29,9 @@ Error Request::PrepareDataBufferAndLockIfNeeded() { if (data_ptr) { slot_meta_ = slot; } else { - return GeneralErrorTemplates::kMemoryAllocationError.Generate("cannot allocate slot in cache"); + auto err = GeneralErrorTemplates::kMemoryAllocationError.Generate("cannot allocate slot in cache"); + err->AddDetails("size", std::to_string(request_header_.data_size)); + return err; } } return nullptr; diff --git a/receiver/src/request_handler/authorization_client.cpp b/receiver/src/request_handler/authorization_client.cpp index 183fac7cb..cb5c737f4 100644 --- a/receiver/src/request_handler/authorization_client.cpp +++ b/receiver/src/request_handler/authorization_client.cpp @@ -26,7 +26,7 @@ Error ErrorFromAuthorizationServerResponse(Error err, const std::string response } else { if (code != HttpCode::Unauthorized) { return_err = asapo::ReceiverErrorTemplates::kInternalServerError.Generate(); - return_err->AddContext("response", response)->AddContext("errorCode", std::to_string(int( + return_err->AddDetails("response", response)->AddDetails("errorCode", std::to_string(int( code))); } else { return_err = asapo::ReceiverErrorTemplates::kAuthorizationFailure.Generate(); @@ -45,7 +45,7 @@ Error CheckAccessType(SourceType source_type, const std::vector<std::string> &ac for (size_t i = 0; i < access_types.size(); i++) { types += (i > 0 ? "," : "") + access_types[i]; } - err->AddContext("expected", source_type == SourceType::kProcessed ? "write" : "writeraw")->AddContext("have", + err->AddDetails("expected", source_type == SourceType::kProcessed ? "write" : "writeraw")->AddDetails("have", types); return err; } diff --git a/receiver/src/request_handler/file_processors/receive_file_processor.cpp b/receiver/src/request_handler/file_processors/receive_file_processor.cpp index 3ff0d607e..02da8d258 100644 --- a/receiver/src/request_handler/file_processors/receive_file_processor.cpp +++ b/receiver/src/request_handler/file_processors/receive_file_processor.cpp @@ -5,6 +5,7 @@ #include "../../receiver_error.h" #include "../../request.h" #include "../../receiver_config.h" +#include "../../receiver_logger.h" namespace asapo { @@ -23,7 +24,8 @@ Error ReceiveFileProcessor::ProcessFile(const Request* request, bool overwrite) } err = io__->ReceiveDataToFile(socket, root_folder, fname, (size_t) fsize, true, overwrite); if (!err) { - log__->Debug("received file of size " + std::to_string(fsize) + " to " + root_folder + kPathSeparator + fname); + log__->Debug(RequestLog("received file", request).Append("size",std::to_string(fsize)).Append("name", + root_folder + kPathSeparator + fname)); } return err; } diff --git a/receiver/src/request_handler/file_processors/write_file_processor.cpp b/receiver/src/request_handler/file_processors/write_file_processor.cpp index 3dcc5ae00..e9886926f 100644 --- a/receiver/src/request_handler/file_processors/write_file_processor.cpp +++ b/receiver/src/request_handler/file_processors/write_file_processor.cpp @@ -3,6 +3,7 @@ #include "asapo/preprocessor/definitions.h" #include "../../receiver_error.h" #include "../../request.h" +#include "../../receiver_logger.h" namespace asapo { @@ -14,7 +15,9 @@ WriteFileProcessor::WriteFileProcessor() : FileProcessor() { Error WriteFileProcessor::ProcessFile(const Request* request, bool overwrite) const { auto fsize = request->GetDataSize(); if (fsize <= 0) { - return ReceiverErrorTemplates::kBadRequest.Generate("wrong file size"); + auto err = ReceiverErrorTemplates::kBadRequest.Generate("wrong file size"); + err->AddDetails("size",std::to_string(fsize)); + return err; } auto data = request->GetData(); @@ -27,7 +30,8 @@ Error WriteFileProcessor::ProcessFile(const Request* request, bool overwrite) co err = io__->WriteDataToFile(root_folder, fname, (uint8_t*)data, (size_t) fsize, true, overwrite); if (!err) { - log__->Debug("saved file of size " + std::to_string(fsize) + " to " + root_folder + kPathSeparator + fname); + log__->Debug(RequestLog("saved file", request).Append("size",std::to_string(fsize)).Append("name", + root_folder + kPathSeparator + fname)); } return err; diff --git a/receiver/src/request_handler/request_handler_authorize.cpp b/receiver/src/request_handler/request_handler_authorize.cpp index f29681fec..bb158c38e 100644 --- a/receiver/src/request_handler/request_handler_authorize.cpp +++ b/receiver/src/request_handler/request_handler_authorize.cpp @@ -15,7 +15,7 @@ Error RequestHandlerAuthorize::CheckVersion(const Request* request) const { int verService = VersionToNumber(GetReceiverApiVersion()); if (verClient > verService) { auto err = asapo::ReceiverErrorTemplates::kUnsupportedClient.Generate(); - err->AddContext("client",version_from_client)->AddContext("server",GetReceiverApiVersion()); + err->AddDetails("client", version_from_client)->AddDetails("server", GetReceiverApiVersion()); return err; } return nullptr; diff --git a/receiver/src/request_handler/request_handler_db.cpp b/receiver/src/request_handler/request_handler_db.cpp index fea6e8246..ed201b179 100644 --- a/receiver/src/request_handler/request_handler_db.cpp +++ b/receiver/src/request_handler/request_handler_db.cpp @@ -43,13 +43,14 @@ Error RequestHandlerDb::GetDatabaseServerUri(std::string* uri) const { Append("origin", GetReceiverConfig()->discovery_server)); auto err = ReceiverErrorTemplates::kInternalServerError.Generate("http error while discovering database server", std::move(http_err)); - err->AddContext("discoveryEndpoint",GetReceiverConfig()->discovery_server); + err->AddDetails("discoveryEndpoint", GetReceiverConfig()->discovery_server); return err; } if (code != HttpCode::OK) { auto err = ReceiverErrorTemplates::kInternalServerError.Generate("error when discover database server"); - err->AddContext("discoveryEndpoint",GetReceiverConfig()->discovery_server)->AddContext("errorCode",std::to_string((int) code)); + err->AddDetails("discoveryEndpoint", GetReceiverConfig()->discovery_server)->AddDetails("errorCode", + std::to_string((int) code)); return err; } diff --git a/receiver/src/request_handler/request_handler_receive_data.cpp b/receiver/src/request_handler/request_handler_receive_data.cpp index 8c840c026..e81a5e304 100644 --- a/receiver/src/request_handler/request_handler_receive_data.cpp +++ b/receiver/src/request_handler/request_handler_receive_data.cpp @@ -18,8 +18,16 @@ Error RequestHandlerReceiveData::ProcessRequest(Request* request) const { if (err) { return err; } - io__->Receive(request->GetSocket(), request->GetData(), (size_t) request->GetDataSize(), &err); + Error io_err; + io__->Receive(request->GetSocket(), request->GetData(), (size_t) request->GetDataSize(), &io_err); + if (io_err) { + err = ReceiverErrorTemplates::kProcessingError.Generate("cannot receive data",std::move(io_err)); + } request->UnlockDataBufferIfNeeded(); + if (err == nullptr) { + log__->Debug(RequestLog("received request data", request).Append("size",request->GetDataSize())); + } + return err; } diff --git a/receiver/src/request_handler/request_handler_receive_metadata.cpp b/receiver/src/request_handler/request_handler_receive_metadata.cpp index 71aab0b74..6e0826a15 100644 --- a/receiver/src/request_handler/request_handler_receive_metadata.cpp +++ b/receiver/src/request_handler/request_handler_receive_metadata.cpp @@ -15,9 +15,9 @@ Error RequestHandlerReceiveMetaData::ProcessRequest(Request* request) const { auto buf = std::unique_ptr<uint8_t[]> {new uint8_t[meta_size]}; io__->Receive(request->GetSocket(), (void*) buf.get(), meta_size, &err); if (err) { - return err; + return ReceiverErrorTemplates::kProcessingError.Generate("cannot receive metadata",std::move(err)); } - + log__->Debug(RequestLog("received request metadata", request).Append("size",meta_size)); request->SetMetadata(std::string((char*)buf.get(), meta_size)); return nullptr; } diff --git a/receiver/unittests/request_handler/file_processors/test_receive_file_processor.cpp b/receiver/unittests/request_handler/file_processors/test_receive_file_processor.cpp index 0fe70c057..81d8aa890 100644 --- a/receiver/unittests/request_handler/file_processors/test_receive_file_processor.cpp +++ b/receiver/unittests/request_handler/file_processors/test_receive_file_processor.cpp @@ -27,7 +27,7 @@ class ReceiveFileProcessorTests : public Test { public: ReceiveFileProcessor processor; NiceMock<MockIO> mock_io; - std::unique_ptr<MockRequest> mock_request; + std::unique_ptr<NiceMock<MockRequest>> mock_request; NiceMock<asapo::MockLogger> mock_logger; SocketDescriptor expected_socket_id = SocketDescriptor{1}; std::string expected_file_name = std::string("processed") + asapo::kPathSeparator + std::string("2"); @@ -54,8 +54,10 @@ class ReceiveFileProcessorTests : public Test { asapo::ReceiverConfig test_config; asapo::SetReceiverConfig(test_config, "none"); processor.log__ = &mock_logger; - mock_request.reset(new MockRequest{request_header, 1, "", nullptr}); + mock_request.reset(new NiceMock<MockRequest>{request_header, 1, "", nullptr}); processor.io__ = std::unique_ptr<asapo::IO> {&mock_io}; + SetDefaultRequestCalls(mock_request.get(),expected_beamtime_id); + } void TearDown() override { processor.io__.release(); @@ -119,7 +121,6 @@ TEST_F(ReceiveFileProcessorTests, WritesToLog) { EXPECT_CALL(mock_logger, Debug(AllOf(HasSubstr("received file"), HasSubstr(expected_file_name), - HasSubstr(expected_beamtime_id), HasSubstr(std::to_string(expected_file_size)) ) ) diff --git a/receiver/unittests/request_handler/file_processors/test_write_file_processor.cpp b/receiver/unittests/request_handler/file_processors/test_write_file_processor.cpp index bead65417..5a4e77115 100644 --- a/receiver/unittests/request_handler/file_processors/test_write_file_processor.cpp +++ b/receiver/unittests/request_handler/file_processors/test_write_file_processor.cpp @@ -27,7 +27,7 @@ class WriteFileProcessorTests : public Test { public: WriteFileProcessor processor; NiceMock<MockIO> mock_io; - std::unique_ptr<MockRequest> mock_request; + std::unique_ptr<NiceMock<MockRequest>> mock_request; NiceMock<asapo::MockLogger> mock_logger; std::string expected_file_name = std::string("raw") + asapo::kPathSeparator + std::string("2"); asapo::SourceType expected_source_type = asapo::SourceType::kRaw; @@ -53,8 +53,10 @@ class WriteFileProcessorTests : public Test { asapo::ReceiverConfig test_config; asapo::SetReceiverConfig(test_config, "none"); processor.log__ = &mock_logger; - mock_request.reset(new MockRequest{request_header, 1, "", nullptr}); + mock_request.reset(new NiceMock<MockRequest>{request_header, 1, "", nullptr}); processor.io__ = std::unique_ptr<asapo::IO> {&mock_io}; + SetDefaultRequestCalls(mock_request.get(),expected_beamtime_id); + } void TearDown() override { processor.io__.release(); @@ -114,15 +116,8 @@ TEST_F(WriteFileProcessorTests, WritesToLog) { ExpectFileWrite(nullptr); - EXPECT_CALL(mock_logger, Debug(AllOf(HasSubstr("saved file"), - HasSubstr(expected_file_name), - HasSubstr(expected_beamtime_id), - HasSubstr(expected_facility), - HasSubstr(expected_year), - HasSubstr(std::to_string(expected_file_size)) - ) - ) - ); + EXPECT_CALL(mock_logger, Debug(HasSubstr("saved file"))); + auto err = processor.ProcessFile(mock_request.get(), expected_overwrite); ASSERT_THAT(err, Eq(nullptr)); } diff --git a/receiver/unittests/request_handler/test_request_handler_receive_data.cpp b/receiver/unittests/request_handler/test_request_handler_receive_data.cpp index d3e679b7c..8d734e18c 100644 --- a/receiver/unittests/request_handler/test_request_handler_receive_data.cpp +++ b/receiver/unittests/request_handler/test_request_handler_receive_data.cpp @@ -109,7 +109,7 @@ TEST_F(ReceiveDataHandlerTests, HandleDoesNotReceiveDataWhenMetadataOnlyWasSent) TEST_F(ReceiveDataHandlerTests, HandleReturnsErrorOnDataReceive) { ExpectReceiveData(false); auto err = handler.ProcessRequest(request.get()); - ASSERT_THAT(err, Eq(asapo::IOErrorTemplates::kReadError)); + ASSERT_THAT(err, Eq(asapo::ReceiverErrorTemplates::kProcessingError)); } TEST_F(ReceiveDataHandlerTests, HandleReturnsOK) { diff --git a/receiver/unittests/request_handler/test_request_handler_receive_metadata.cpp b/receiver/unittests/request_handler/test_request_handler_receive_metadata.cpp index 99b3e4ed5..0b15844d4 100644 --- a/receiver/unittests/request_handler/test_request_handler_receive_metadata.cpp +++ b/receiver/unittests/request_handler/test_request_handler_receive_metadata.cpp @@ -87,7 +87,7 @@ TEST_F(ReceiveMetaDataHandlerTests, CheckStatisticEntity) { TEST_F(ReceiveMetaDataHandlerTests, HandleReturnsErrorOnMetaDataReceive) { ExpectReceiveMetaData(false); auto err = handler.ProcessRequest(request.get()); - ASSERT_THAT(err, Eq(asapo::IOErrorTemplates::kReadError)); + ASSERT_THAT(err, Eq(asapo::ReceiverErrorTemplates::kProcessingError)); } TEST_F(ReceiveMetaDataHandlerTests, HandleReturnsOK) { diff --git a/tests/automatic/system_io/read_folder_content/CMakeLists.txt b/tests/automatic/system_io/read_folder_content/CMakeLists.txt index 42bc1ec48..222ab4585 100644 --- a/tests/automatic/system_io/read_folder_content/CMakeLists.txt +++ b/tests/automatic/system_io/read_folder_content/CMakeLists.txt @@ -27,6 +27,6 @@ ELSE() ENDIF(WIN32) -add_integration_test(${TARGET_NAME} foldernotfound "test_notexist error:Nosuchfileordirectory,context:name:test_notexist") -add_integration_test(${TARGET_NAME} foldernoaccess "test_noaccess1 error:Permissiondenied,context:name:test_noaccess1") +add_integration_test(${TARGET_NAME} foldernotfound "test_notexist error:Nosuchfileordirectory,details:name:test_notexist") +add_integration_test(${TARGET_NAME} foldernoaccess "test_noaccess1 error:Permissiondenied,details:name:test_noaccess1") diff --git a/tests/automatic/system_io/read_string_from_file/CMakeLists.txt b/tests/automatic/system_io/read_string_from_file/CMakeLists.txt index 8cfa3aed8..358742805 100644 --- a/tests/automatic/system_io/read_string_from_file/CMakeLists.txt +++ b/tests/automatic/system_io/read_string_from_file/CMakeLists.txt @@ -16,6 +16,6 @@ set_target_properties(${TARGET_NAME} PROPERTIES LINKER_LANGUAGE CXX) add_test_setup_cleanup(${TARGET_NAME}) add_integration_test(${TARGET_NAME} readfile "test/1 123") -add_integration_test(${TARGET_NAME} filenotfound "test_notexist error:Nosuchfileordirectory,context:name:test_notexist") -add_integration_test(${TARGET_NAME} filenoaccess "file_noaccess error:Permissiondenied,context:name:file_noaccess") +add_integration_test(${TARGET_NAME} filenotfound "test_notexist error:Nosuchfileordirectory,details:name:test_notexist") +add_integration_test(${TARGET_NAME} filenoaccess "file_noaccess error:Permissiondenied,details:name:file_noaccess") diff --git a/tests/automatic/system_io/read_subdirectories/CMakeLists.txt b/tests/automatic/system_io/read_subdirectories/CMakeLists.txt index ab9b1908f..837b0c6b1 100644 --- a/tests/automatic/system_io/read_subdirectories/CMakeLists.txt +++ b/tests/automatic/system_io/read_subdirectories/CMakeLists.txt @@ -27,6 +27,6 @@ ELSE() ENDIF(WIN32) -add_integration_test(${TARGET_NAME} foldernotfound "test_notexist error:Nosuchfileordirectory,context:name:test_notexist") -add_integration_test(${TARGET_NAME} foldernoaccess "test_noaccess1 error:Permissiondenied,context:name:test_noaccess1") +add_integration_test(${TARGET_NAME} foldernotfound "test_notexist error:Nosuchfileordirectory,details:name:test_notexist") +add_integration_test(${TARGET_NAME} foldernoaccess "test_noaccess1 error:Permissiondenied,details:name:test_noaccess1") -- GitLab