diff --git a/common/cpp/include/asapo/common/error.h b/common/cpp/include/asapo/common/error.h index 510ea0866dc7c3e1659e3b3eb9680d487fe8fee1..4c38ae3ca1445289b4bd7435141f5b63b08ea412 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 95f6eed6606794d1596731640ce58b58614841c2..a48955d2b3677e4bdd439f970bcf3a3074594dce 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 e4dc868959f8b5347b95a7a51b19623f166a6e73..4bd212dc240a3f6d8cdaf1f1012cc156d51c100f 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 546112130bee461f1dc39e9160e0ecddbe865454..e9613d768f30e7a205a6aa87c6c29577450dfa53 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 3165a6a3d26c5c4654dbcb09f5f6dfd57fd015ed..8a5b403f3be6b83bfe71660d9be749a7a296acfe 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 f4256bddba5fdecb3e9bb9869943d03c9c642d81..18c4f1afe81635c58728981800b5a27c5cf9a3d6 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 371c12e4d3464ac2478bab25c8733bf068f5989a..8aba5f76925436a59239ea434a42f1384dacb780 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 b847d747b70f0a9c4204ce375518453fbc505475..d8df3328f521effb03467346b5f8b8cef581d189 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 c588ea0526be16f5977367ee9e5fdb36cdaf3cee..4d459ba1a8b9fcfda124f432f13bc2d1702e32d0 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 0fda0f43709ff1e1d72915856043e11244415f49..e20366e14109e3a8bc6cf21110041b50ac385284 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 a0b68f07018a2281f5df907387107f5164b3e3f2..80dd71e168d39bc0d1a77b037ce388ee5bce97ee 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 9595e3146b790beae689cb043978678cea7285db..defaa31a51e326d0c4329bf9fba0c6f6212b19e3 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 a31ab18747093992b53c9665bbfaa5f6906f53ea..4df46716de5beb55056628bdbe6784685b255b9a 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 fc8efd3fee6b67a12a13681e71832a3be0ba7319..e1d983add1f2b912373530e5261fc7b9bd20132e 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 1dd311a908276934e5f0ef80c8baca839d203044..3ac686056c5e58887e388e3711e6a9283db230c9 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 3e2e48601aa4b2d886ba216b7d731a15c593bfd7..be9bd21d5311d405f3cf8f1e993cb5a197a6db26 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 f2409de029b5cb2cfcb49b469ed16a8d5b13f987..3ecec5d8811bb8551e6c671e08dc8befa9a2ecab 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 0c4ed721b105dc68bf7a93c044ecc8b71150d212..25172a9abf261044f31f6fc272b5d9ea23aedb3f 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 183fac7cb8fd1e2d2b9de895704f22f7993c5303..cb5c737f421783871b05d0d8f83e4ae98b96248d 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 3ff0d607e6c98e7d30d9f5dcc0e0e4cc12d0ae08..02da8d258b2471bbd524cdd71989eeea9ecacdf2 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 3dcc5ae0076116e780f2d4ebc76e0bdaebfab68f..e9886926f32c749692b6af7dc8d204144fb5b446 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 f29681fec5f094fadd82c1394605d7d985d90933..bb158c38e4d168ea1d71292edc79091f196e02a7 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 fea6e82467656c132cd83a3300bb24f38f659d05..ed201b17952bf180f03dd4aab6e0c2821acdde50 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 8c840c0266e684acae2eb7f3e4801c710102e44c..e81a5e30402ef70c533930b0b4b662ad42933146 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 71aab0b7423f5c767aa03075b2eb5e25bea1f41d..6e0826a15012a7875853109d90cf6933d7c3b93f 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 0fe70c057a2890bc0cb0a01fe5c8d7aabb419014..81d8aa89096d6f2aba5060005e07a6c68e55a73f 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 bead654171b2962415c58e6e9c28aa08c6c9d4b8..5a4e77115230a99db29e52e9e3edd96d0179daf4 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 d3e679b7c4f57a3459975acf9e0ff18698001b82..8d734e18cad50406bf4e1b06dad2acb6da103e30 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 99b3e4ed5136293068adacbfa3413e763c858266..0b15844d47183ea15cb24edda92596dafa46030d 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 42bc1ec48ee536502e96f50e1ae26b59fac96683..222ab458578c58e4426d79152ed2a7fa14237361 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 8cfa3aed8aecbc37b1b8643f8812e9687c5f433d..358742805704fd81b1b53bc4c5f1a4e5b5bdad2f 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 ab9b1908fa01a83bee13dfd7bf19ea9332c19cd4..837b0c6b1e04768c898c6bd4df1ffbbf685d8e18 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")