diff --git a/common/cpp/include/asapo/common/data_structs.h b/common/cpp/include/asapo/common/data_structs.h index 847650fc750f71eb0ea78defbd0dcff2c683a422..8fa9262882d09ae9151c21b8443be468523e9584 100644 --- a/common/cpp/include/asapo/common/data_structs.h +++ b/common/cpp/include/asapo/common/data_structs.h @@ -145,6 +145,28 @@ enum IngestModeFlags : uint64_t { const uint64_t kDefaultIngestMode = kTransferData | kStoreInFilesystem | kStoreInDatabase; +enum class MetaIngestOp: uint64_t { + kInsert = 1, + kReplace = 2, + kUpdate = 3, +}; + +struct MetaIngestMode { + MetaIngestOp mode; + bool upsert; + uint64_t Encode(){ + return static_cast<uint64_t>(mode)+10*static_cast<uint64_t>(upsert); + } + void Decode(uint64_t code){ + upsert = code >10; + uint64_t val = code-(upsert?10:0); + if (val <= 3) { + mode=static_cast<MetaIngestOp>(val); + } + } +}; + + class ClientProtocol { private: std::string version_; diff --git a/common/cpp/include/asapo/common/networking.h b/common/cpp/include/asapo/common/networking.h index c9e07f1b72d33c043d8a9061b278a026035b751e..d49d83c32a6d37b63a317fa703831b610fe02f4d 100644 --- a/common/cpp/include/asapo/common/networking.h +++ b/common/cpp/include/asapo/common/networking.h @@ -53,6 +53,7 @@ const std::size_t kNCustomParams = 3; using CustomRequestData = uint64_t[kNCustomParams]; const std::size_t kPosIngestMode = 0; const std::size_t kPosDataSetId = 1; +const std::size_t kPosMetaIngestMode = 1; const std::size_t kPosDataSetSize = 2; struct GenericRequestHeader { diff --git a/common/cpp/include/asapo/preprocessor/definitions.h b/common/cpp/include/asapo/preprocessor/definitions.h index 3ac042caac7247b75863a6a3301dd780fe25bd00..8d78c2b0171c713703e43a3e84dd7c2452a38fff 100644 --- a/common/cpp/include/asapo/preprocessor/definitions.h +++ b/common/cpp/include/asapo/preprocessor/definitions.h @@ -9,6 +9,17 @@ #define FINAL final #endif +#if defined(__GNUC__) || defined(__clang__) +#define DEPRECATED(msg) __attribute__((deprecated(msg))) +#elif defined(_MSC_VER) +#define DEPRECATED __declspec(deprecated(msg)) +#else +#pragma message("WARNING: You need to implement DEPRECATED for this compiler") +#define DEPRECATED(msg) +#endif + + + namespace asapo { const char kPathSeparator = #ifdef WIN32 diff --git a/common/cpp/include/asapo/request/request_handler_factory.h b/common/cpp/include/asapo/request/request_handler_factory.h index c48d787ce72df0d01c6e5de152cd02246a12db66..e8cc3e5a6587fd9be600303df4bb77b07d055567 100644 --- a/common/cpp/include/asapo/request/request_handler_factory.h +++ b/common/cpp/include/asapo/request/request_handler_factory.h @@ -10,6 +10,7 @@ namespace asapo { class RequestHandlerFactory { public: virtual std::unique_ptr<RequestHandler> NewRequestHandler(uint64_t thread_id, uint64_t* shared_counter) = 0; + virtual ~RequestHandlerFactory(){}; }; diff --git a/common/cpp/unittests/request/test_request_pool.cpp b/common/cpp/unittests/request/test_request_pool.cpp index f359c1c4218d33d8943862cd30f3d53412686db4..8709d83a13ba20547dfe8a94d829922a8c6b5787 100644 --- a/common/cpp/unittests/request/test_request_pool.cpp +++ b/common/cpp/unittests/request/test_request_pool.cpp @@ -46,6 +46,7 @@ class MockRequestHandlerFactory : public asapo::RequestHandlerFactory { std::unique_ptr<RequestHandler> NewRequestHandler(uint64_t thread_id, uint64_t* shared_counter) override { return std::unique_ptr<RequestHandler> {request_handler_}; } + ~MockRequestHandlerFactory(){}; private: RequestHandler* request_handler_; }; diff --git a/consumer/api/cpp/src/fabric_consumer_client.cpp b/consumer/api/cpp/src/fabric_consumer_client.cpp index 774513e1f4d7dab3abce541dfa3e4b1261d46d5b..106104f8140e7d36a2907ff27e693e89e46f3a51 100644 --- a/consumer/api/cpp/src/fabric_consumer_client.cpp +++ b/consumer/api/cpp/src/fabric_consumer_client.cpp @@ -34,7 +34,7 @@ Error FabricConsumerClient::GetData(const MessageMeta* info, MessageData* data) } GenericRequestHeader request_header{kOpcodeGetBufferData, info->buf_id, info->size}; - strncpy(request_header.api_version, kConsumerProtocol.GetRdsVersion().c_str(), kMaxVersionSize); + strncpy(request_header.receiver_protocol, kConsumerProtocol.GetRdsVersion().c_str(), kMaxVersionSize); memcpy(request_header.message, mr->GetDetails(), sizeof(fabric::MemoryRegionDetails)); GenericNetworkResponse response{}; diff --git a/consumer/api/cpp/src/tcp_consumer_client.cpp b/consumer/api/cpp/src/tcp_consumer_client.cpp index 7eb9432aa335186766cd067f2b765c5b8e101c01..996ee26fe12d34b31a00394bd6ac69ad56c3e2b7 100644 --- a/consumer/api/cpp/src/tcp_consumer_client.cpp +++ b/consumer/api/cpp/src/tcp_consumer_client.cpp @@ -14,7 +14,7 @@ TcpConsumerClient::TcpConsumerClient() : io__{GenerateDefaultIO()}, connection_p Error TcpConsumerClient::SendGetDataRequest(SocketDescriptor sd, const MessageMeta* info) const noexcept { Error err; GenericRequestHeader request_header{kOpcodeGetBufferData, info->buf_id, info->size}; - strncpy(request_header.api_version, kConsumerProtocol.GetRdsVersion().c_str(), kMaxVersionSize); + strncpy(request_header.receiver_protocol, kConsumerProtocol.GetRdsVersion().c_str(), kMaxVersionSize); io__->Send(sd, &request_header, sizeof(request_header), &err); if (err) { connection_pool__->ReleaseConnection(sd); diff --git a/consumer/api/cpp/unittests/test_fabric_consumer_client.cpp b/consumer/api/cpp/unittests/test_fabric_consumer_client.cpp index dcbd311e16fef382fa1f1d710eab1041912ddf78..23bb6d27262bc8e98337e912ad2bdff109f806ff 100644 --- a/consumer/api/cpp/unittests/test_fabric_consumer_client.cpp +++ b/consumer/api/cpp/unittests/test_fabric_consumer_client.cpp @@ -33,7 +33,7 @@ MATCHER_P6(M_CheckSendRequest, op_code, buf_id, data_size, mr_addr, mr_length, m && data->data_id == uint64_t(buf_id) && data->data_size == uint64_t(data_size) && mr->addr == uint64_t(mr_addr) - && strcmp(data->api_version, "v0.1") == 0 + && strcmp(data->receiver_protocol, "v0.1") == 0 && mr->length == uint64_t(mr_length) && mr->key == uint64_t(mr_key); } diff --git a/consumer/api/cpp/unittests/test_tcp_consumer_client.cpp b/consumer/api/cpp/unittests/test_tcp_consumer_client.cpp index ebf4102b3aa4931b9efd884a83acf134e3168b8e..07789b697b0e469163609957763d97eac9455506 100644 --- a/consumer/api/cpp/unittests/test_tcp_consumer_client.cpp +++ b/consumer/api/cpp/unittests/test_tcp_consumer_client.cpp @@ -44,7 +44,7 @@ MATCHER_P4(M_CheckSendRequest, op_code, buf_id, data_size, message, return ((asapo::GenericRequestHeader*) arg)->op_code == op_code && ((asapo::GenericRequestHeader*) arg)->data_id == uint64_t(buf_id) && ((asapo::GenericRequestHeader*) arg)->data_size == uint64_t(data_size) - && strcmp(((asapo::GenericRequestHeader*) arg)->api_version, "v0.1") == 0 + && strcmp(((asapo::GenericRequestHeader*) arg)->receiver_protocol, "v0.1") == 0 && strcmp(((asapo::GenericRequestHeader*) arg)->message, message) == 0; } diff --git a/producer/api/cpp/include/asapo/producer/producer.h b/producer/api/cpp/include/asapo/producer/producer.h index 6e35e8b82d2e93e6ca77ce126e0757eff429b5e3..53d5ac2e2cdd60bce11619008fc0a1c938a83768 100644 --- a/producer/api/cpp/include/asapo/producer/producer.h +++ b/producer/api/cpp/include/asapo/producer/producer.h @@ -7,6 +7,7 @@ #include "asapo/logger/logger.h" #include "common.h" #include "asapo/common/data_structs.h" +#include "asapo/preprocessor/definitions.h" namespace asapo { @@ -101,16 +102,34 @@ class Producer { \return Error - Will be nullptr on success */ virtual Error SendStreamFinishedFlag(std::string stream, uint64_t last_id, std::string next_stream, - RequestCallback callback) = 0; + RequestCallback callback) = 0 ; - //! Sends metadata for the current beamtime to the receiver + //! Sends beamtime metadata to the receiver /*! + \deprecated { deprecated, obsolates 01.07.2022, use SendBeamtimeMetadata instead} \param metadata - a JSON string with metadata \param callback - callback function \return Error - will be nullptr on success */ - virtual Error SendMetadata(const std::string& metadata, RequestCallback callback) = 0; + virtual Error SendMetadata(const std::string& metadata, RequestCallback callback) DEPRECATED("obsolates 01.07.2022, use SendBeamtimeMetadata instead") = 0; + + //! Sends beamtime metadata to the receiver + /*! + \param metadata - a JSON string with metadata + \param callback - callback function + \return Error - will be nullptr on success + */ + virtual Error SendBeamtimeMetadata(const std::string& metadata, MetaIngestMode mode, RequestCallback callback) = 0; + + //! Sends stream metadata to the receiver + /*! + \param stream - name of the stream + \param metadata - a JSON string with metadata + \param callback - callback function + \return Error - will be nullptr on success + */ + virtual Error SendStreamMetadata(const std::string& stream, const std::string& metadata, MetaIngestMode mode, RequestCallback callback) = 0; //! Set internal log level virtual void SetLogLevel(LogLevel level) = 0; diff --git a/producer/api/cpp/src/producer_impl.cpp b/producer/api/cpp/src/producer_impl.cpp index f13f710200bee38fe466f1452011664b21e8b11c..3adc9ae5ce746ecb38a914bebc8f0c00ac2b6df9 100644 --- a/producer/api/cpp/src/producer_impl.cpp +++ b/producer/api/cpp/src/producer_impl.cpp @@ -35,7 +35,7 @@ ProducerImpl::ProducerImpl(std::string endpoint, uint8_t n_processing_threads, u GenericRequestHeader ProducerImpl::GenerateNextSendRequest(const MessageHeader& message_header, std::string stream, uint64_t ingest_mode) { GenericRequestHeader request{kOpcodeTransferData, message_header.message_id, message_header.data_size, - message_header.user_metadata.size(), message_header.file_name, stream}; + message_header.user_metadata.size(), message_header.file_name, std::move(stream)}; if (message_header.dataset_substream != 0) { request.op_code = kOpcodeTransferDatasetData; request.custom_data[kPosDataSetId] = message_header.dataset_substream; @@ -251,17 +251,8 @@ Error ProducerImpl::SetCredentials(SourceCredentials source_cred) { } Error ProducerImpl::SendMetadata(const std::string& metadata, RequestCallback callback) { - GenericRequestHeader request_header{kOpcodeTransferMetaData, 0, metadata.size(), 0, "beamtime_global.meta"}; - request_header.custom_data[kPosIngestMode] = asapo::IngestModeFlags::kTransferData | - asapo::IngestModeFlags::kStoreInDatabase; - MessageData data{new uint8_t[metadata.size()]}; - strncpy((char*) data.get(), metadata.c_str(), metadata.size()); - auto err = request_pool__->AddRequest(std::unique_ptr<ProducerRequest> { - new ProducerRequest{ - source_cred_string_, std::move(request_header), - std::move(data), "", "", callback, true, timeout_ms_} - }); - return HandleErrorFromPool(std::move(err), true); + auto mode=MetaIngestMode{MetaIngestOp::kReplace,true}; + return SendBeamtimeMetadata(metadata,mode, callback); } Error ProducerImpl::Send__(const MessageHeader& message_header, @@ -483,4 +474,35 @@ Error ProducerImpl::DeleteStream(std::string stream, uint64_t timeout_ms, Delete return Error{res}; } +Error ProducerImpl::SendBeamtimeMetadata(const std::string &metadata, MetaIngestMode mode, RequestCallback callback) { + return SendMeta("",metadata,mode, callback); +} + +Error ProducerImpl::SendStreamMetadata(const std::string &stream, + const std::string &metadata, + MetaIngestMode mode, + RequestCallback callback) { + if (stream.empty()) { + return ProducerErrorTemplates::kWrongInput.Generate("stream is empty"); + } + return SendMeta(stream,metadata,mode,callback); +} + +Error ProducerImpl::SendMeta(std::string stream, const std::string &metadata, MetaIngestMode mode,RequestCallback callback) { + GenericRequestHeader request_header{kOpcodeTransferMetaData, 0, metadata.size(), 0, + stream.empty()?"beamtime_global.meta":stream+".meta", + stream}; + request_header.custom_data[kPosIngestMode] = asapo::IngestModeFlags::kTransferData | + asapo::IngestModeFlags::kStoreInDatabase; + request_header.custom_data[kPosMetaIngestMode]=mode.Encode(); + MessageData data{new uint8_t[metadata.size()]}; + strncpy((char*) data.get(), metadata.c_str(), metadata.size()); + auto err = request_pool__->AddRequest(std::unique_ptr<ProducerRequest> { + new ProducerRequest{ + source_cred_string_, std::move(request_header), + std::move(data), "", "", callback, true, timeout_ms_} + }); + return HandleErrorFromPool(std::move(err), true); +} + } \ No newline at end of file diff --git a/producer/api/cpp/src/producer_impl.h b/producer/api/cpp/src/producer_impl.h index 35d0ff87f3a516ba2bc822331bcd8942da5179ce..e3de8014baf0bb872412517869884fc7f1ea5eed 100644 --- a/producer/api/cpp/src/producer_impl.h +++ b/producer/api/cpp/src/producer_impl.h @@ -67,11 +67,15 @@ class ProducerImpl : public Producer { Error SetCredentials(SourceCredentials source_cred) override; Error SendMetadata(const std::string& metadata, RequestCallback callback) override; - uint64_t GetRequestsQueueSize() override; + Error SendBeamtimeMetadata(const std::string& metadata, MetaIngestMode mode, RequestCallback callback) override; + Error SendStreamMetadata(const std::string& stream, const std::string& metadata, MetaIngestMode mode, RequestCallback callback) override; + + uint64_t GetRequestsQueueSize() override; Error WaitRequestsFinished(uint64_t timeout_ms) override; uint64_t GetRequestsQueueVolumeMb() override; void SetRequestsQueueLimits(uint64_t size, uint64_t volume) override; private: + Error SendMeta(const std::string stream, const std::string &metadata, MetaIngestMode mode, RequestCallback callback); StreamInfo StreamRequest(StreamRequestOp op, std::string stream, uint64_t timeout_ms, Error* err) const; Error Send(const MessageHeader& message_header, std::string stream, MessageData data, std::string full_path, uint64_t ingest_mode, diff --git a/producer/api/cpp/src/producer_request_handler_factory.h b/producer/api/cpp/src/producer_request_handler_factory.h index e11f003bfba67409417c7173cbfbfe325416b956..0200c7c92e15afb27836eddfb5af7de72572e4e2 100644 --- a/producer/api/cpp/src/producer_request_handler_factory.h +++ b/producer/api/cpp/src/producer_request_handler_factory.h @@ -13,7 +13,8 @@ class ProducerRequestHandlerFactory : public RequestHandlerFactory { public: ProducerRequestHandlerFactory(ReceiverDiscoveryService* discovery_service); ProducerRequestHandlerFactory(std::string destination_folder); - VIRTUAL std::unique_ptr<RequestHandler> NewRequestHandler(uint64_t thread_id, uint64_t* shared_counter) override; + virtual std::unique_ptr<RequestHandler> NewRequestHandler(uint64_t thread_id, uint64_t* shared_counter) override; + virtual ~ProducerRequestHandlerFactory() { }; private: RequestHandlerType type_; ReceiverDiscoveryService* discovery_service_{nullptr}; diff --git a/producer/api/cpp/unittests/test_producer_impl.cpp b/producer/api/cpp/unittests/test_producer_impl.cpp index 233511dc7e3f8dbb445c6c49a63625211cb70383..b8cb58dfd6e32574bc475f4e846da51aff1beeca 100644 --- a/producer/api/cpp/unittests/test_producer_impl.cpp +++ b/producer/api/cpp/unittests/test_producer_impl.cpp @@ -6,6 +6,7 @@ #include "asapo/producer/common.h" #include "../src/producer_impl.h" #include "asapo/producer/producer_error.h" +#include "asapo/common/internal/version.h" #include "../src/request_handler_tcp.h" #include "asapo/request/request_pool_error.h" @@ -39,19 +40,24 @@ MATCHER_P10(M_CheckSendRequest, op_code, source_credentials, metadata, file_id, dataset_size, "Checks if a valid GenericRequestHeader was Send") { auto request = static_cast<ProducerRequest*>(arg); - return ((asapo::GenericRequestHeader) (arg->header)).op_code == op_code - && ((asapo::GenericRequestHeader) (arg->header)).data_id == file_id - && ((asapo::GenericRequestHeader) (arg->header)).data_size == uint64_t(file_size) + return ((asapo::GenericRequestHeader) (request->header)).op_code == op_code + && ((asapo::GenericRequestHeader) (request->header)).data_id == file_id + && ((asapo::GenericRequestHeader) (request->header)).data_size == uint64_t(file_size) && request->manage_data_memory == true && request->source_credentials == source_credentials && request->metadata == metadata - && (op_code == asapo::kOpcodeTransferDatasetData ? ((asapo::GenericRequestHeader) (arg->header)).custom_data[1] + && (op_code == asapo::kOpcodeTransferMetaData ? ((asapo::GenericRequestHeader) (request->header)).custom_data[1] + == uint64_t(dataset_id) : true) + && (op_code == asapo::kOpcodeTransferDatasetData ? ((asapo::GenericRequestHeader) (request->header)).custom_data[1] == uint64_t(dataset_id) : true) - && (op_code == asapo::kOpcodeTransferDatasetData ? ((asapo::GenericRequestHeader) (arg->header)).custom_data[2] + && (op_code == asapo::kOpcodeTransferDatasetData ? ((asapo::GenericRequestHeader) (request->header)).custom_data[2] == uint64_t(dataset_size) : true) - && ((asapo::GenericRequestHeader) (arg->header)).custom_data[asapo::kPosIngestMode] == uint64_t(ingest_mode) - && strcmp(((asapo::GenericRequestHeader) (arg->header)).message, message) == 0 - && strcmp(((asapo::GenericRequestHeader) (arg->header)).stream, stream) == 0; + && ((asapo::GenericRequestHeader) (request->header)).custom_data[asapo::kPosIngestMode] == uint64_t(ingest_mode) + && strcmp(((asapo::GenericRequestHeader) (request->header)).message, message) == 0 + && strcmp(((asapo::GenericRequestHeader) (request->header)).api_version, asapo::kProducerProtocol.GetReceiverVersion().c_str()) == 0 + && strcmp(((asapo::GenericRequestHeader) (request->header)).stream, stream) == 0; + + } TEST(ProducerImpl, Constructor) { @@ -287,7 +293,7 @@ TEST_F(ProducerImplTests, OKSendingSendDatasetDataRequest) { ASSERT_THAT(err, Eq(nullptr)); } -TEST_F(ProducerImplTests, OKAddingSendMetaDataRequest) { +TEST_F(ProducerImplTests, OKAddingSendMetaDataRequestOld) { expected_id = 0; expected_metadata = "{\"meta\":10}"; expected_size = expected_metadata.size(); @@ -302,15 +308,65 @@ TEST_F(ProducerImplTests, OKAddingSendMetaDataRequest) { "beamtime_global.meta", "", expected_ingest_mode, - 10, + 12, 10), false)).WillOnce(Return( nullptr)); auto err = producer.SendMetadata(expected_metadata, nullptr); + ASSERT_THAT(err, Eq(nullptr)); +} +TEST_F(ProducerImplTests, OKAddingSendMetaDataRequest) { + expected_id = 0; + expected_metadata = "{\"meta\":10}"; + expected_size = expected_metadata.size(); + expected_ingest_mode = asapo::IngestModeFlags::kTransferData | asapo::IngestModeFlags::kStoreInDatabase ; + + producer.SetCredentials(expected_credentials); + EXPECT_CALL(mock_pull, AddRequest_t(M_CheckSendRequest(asapo::kOpcodeTransferMetaData, + expected_credentials_str, + "", + expected_id, + expected_size, + "beamtime_global.meta", + "", + expected_ingest_mode, + 12, + 10), false)).WillOnce(Return( + nullptr)); + + auto mode = asapo::MetaIngestMode{asapo::MetaIngestOp::kReplace,true}; + auto err = producer.SendBeamtimeMetadata(expected_metadata,mode, nullptr); ASSERT_THAT(err, Eq(nullptr)); } +TEST_F(ProducerImplTests, OKAddingSendStreamDataRequest) { + expected_id = 0; + expected_metadata = "{\"meta\":10}"; + expected_size = expected_metadata.size(); + expected_ingest_mode = asapo::IngestModeFlags::kTransferData | asapo::IngestModeFlags::kStoreInDatabase ; + + producer.SetCredentials(expected_credentials); + EXPECT_CALL(mock_pull, AddRequest_t(M_CheckSendRequest(asapo::kOpcodeTransferMetaData, + expected_credentials_str, + "", + expected_id, + expected_size, + (std::string(expected_stream)+".meta").c_str(), + expected_stream, + expected_ingest_mode, + 1, + 10), false)).WillOnce(Return( + nullptr)); + + + auto mode = asapo::MetaIngestMode{asapo::MetaIngestOp::kInsert,false}; + auto err = producer.SendStreamMetadata(expected_stream,expected_metadata,mode,nullptr); + + ASSERT_THAT(err, Eq(nullptr)); +} + + TEST_F(ProducerImplTests, ErrorSendingEmptyFileName) { producer.SetCredentials(expected_credentials); 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 59406f7f2606fb5ac28394527a61d3d1d0166799..00a569b9119f800a7c7bc4637850857f239e5a5a 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 @@ -16,7 +16,7 @@ bool ReceiverDataServerRequestHandler::CheckRequest(const ReceiverDataServerRequ *code = kNetErrorWrongRequest; return false; } - int verClient = VersionToNumber(request->header.api_version); + int verClient = VersionToNumber(request->header.receiver_protocol); int verService = VersionToNumber(GetRdsApiVersion()); if (verClient > verService) { *code = kNetErrorNotSupported; @@ -99,7 +99,7 @@ void ReceiverDataServerRequestHandler::HandleInvalidRequest(const ReceiverDataSe log__->Error("wrong request, code:" + std::to_string(receiver_request->header.op_code)); break; case NetworkErrorCode::kNetErrorNotSupported: - log__->Error("unsupported client, version: " + std::string(receiver_request->header.api_version)); + log__->Error("unsupported client, version: " + std::string(receiver_request->header.receiver_protocol)); break; }; diff --git a/receiver/src/request.cpp b/receiver/src/request.cpp index 7db51dfd02f8aa91f097ecab8bfdb8747f9e3add..5b35a3d6d4622820b6dece7b8ca1a5726fe1997a 100644 --- a/receiver/src/request.cpp +++ b/receiver/src/request.cpp @@ -90,7 +90,7 @@ std::string Request::GetStream() const { } std::string Request::GetApiVersion() const { - return request_header_.api_version; + return request_header_.receiver_protocol; } diff --git a/receiver/unittests/receiver_data_server/request_handler/test_request_handler.cpp b/receiver/unittests/receiver_data_server/request_handler/test_request_handler.cpp index fb85f18e56798d664529c1223ad59e39dce1c61d..cceff51bb2163fca548577592608d9166af9dfca 100644 --- a/receiver/unittests/receiver_data_server/request_handler/test_request_handler.cpp +++ b/receiver/unittests/receiver_data_server/request_handler/test_request_handler.cpp @@ -123,7 +123,7 @@ TEST_F(RequestHandlerTests, ProcessRequest_WrongOpCode) { } TEST_F(RequestHandlerTests, ProcessRequest_WrongClientVersion) { - strcpy(request.header.api_version, "v0.2"); + strcpy(request.header.receiver_protocol, "v0.2"); MockSendResponse(asapo::kNetErrorNotSupported, false); EXPECT_CALL(mock_net, HandleAfterError_t(expected_source_id)); diff --git a/receiver/unittests/test_request.cpp b/receiver/unittests/test_request.cpp index 202884985b3a75b619460e737e6e6942eb47518d..5f0a8338cf02ca71676a1789f8af0c834b7b2f0e 100644 --- a/receiver/unittests/test_request.cpp +++ b/receiver/unittests/test_request.cpp @@ -97,7 +97,7 @@ class RequestTests : public Test { generic_request_header.op_code = expected_op_code; generic_request_header.custom_data[asapo::kPosIngestMode] = asapo::kDefaultIngestMode; strcpy(generic_request_header.message, expected_request_message); - strcpy(generic_request_header.api_version, expected_api_version.c_str()); + strcpy(generic_request_header.receiver_protocol, expected_api_version.c_str()); request.reset(new Request{generic_request_header, expected_socket_id, expected_origin_uri, nullptr, nullptr}); request->io__ = std::unique_ptr<asapo::IO> {&mock_io}; ON_CALL(mock_io, Receive_t(expected_socket_id, _, data_size_, _)).WillByDefault(