From 83dcf40bc12ea56d92424e8a72cdebf540df5cdb Mon Sep 17 00:00:00 2001 From: Claudio Bisegni <Claudio.Bisegni@lnf.infn.it> Date: Mon, 13 Nov 2017 14:27:50 +0100 Subject: [PATCH] fixed microunit tk --- chaos/common/data/CDataWrapper.cpp | 19 +++++++++++++++---- chaos/common/data/CDataWrapper.h | 3 +++ .../http_adapter/HTTPBaseAdapter.h | 4 ++-- .../http_adapter/HTTPServerAdapter.cpp | 2 +- .../ExternalBSONExtJsonSerialization.cpp | 2 +- .../unit_proxy/UnitProxyHandlerWrapper.cpp | 1 + .../raw_driver/RawDriverUnitProxy.cpp | 14 +++++++------- 7 files changed, 30 insertions(+), 15 deletions(-) diff --git a/chaos/common/data/CDataWrapper.cpp b/chaos/common/data/CDataWrapper.cpp index 0fa52e787..ed9aff2ba 100644 --- a/chaos/common/data/CDataWrapper.cpp +++ b/chaos/common/data/CDataWrapper.cpp @@ -456,7 +456,7 @@ uint32_t CDataWrapper::getValueSize(const std::string& key) const{ return array_len; } case BSON_TYPE_DOCUMENT:{ - return v->value.v_doc.data_len; + return v->value.v_doc.data_len; } default: return 0; @@ -491,7 +491,7 @@ const char * CDataWrapper::getRawValuePtr(const std::string& key) const{ return reinterpret_cast<const char*>(array); } case BSON_TYPE_DOCUMENT:{ - return reinterpret_cast<const char*>(v->value.v_doc.data); + return reinterpret_cast<const char*>(v->value.v_doc.data); } default: return NULL; @@ -548,6 +548,17 @@ string CDataWrapper::getJSONString() const{ bson_free(str_c); return result; } + +//return the json data +string CDataWrapper::getCompliantJSONString() const{ + size_t str_size = 0; + char * str_c = bson_as_json(ACCESS_BSON(bson), + &str_size); + std::string result(str_c); + bson_free(str_c); + return result; +} + //reinitialize the object with bson data void CDataWrapper::setSerializedData(const char* bson_data) { bson_iter_t it; @@ -569,8 +580,8 @@ void CDataWrapper::setSerializedJsonData(const char* json_data) { bson_error_t err; size_t len = (size_t)strlen(json_data); bson =ALLOCATE_BSONT(bson_new_from_json((const uint8_t*)json_data, - len, - &err)); + len, + &err)); CHAOS_ASSERT(bson); } diff --git a/chaos/common/data/CDataWrapper.h b/chaos/common/data/CDataWrapper.h index a0f67f026..29fe0b972 100644 --- a/chaos/common/data/CDataWrapper.h +++ b/chaos/common/data/CDataWrapper.h @@ -267,6 +267,9 @@ namespace chaos { //return the json representation for this data wrapper string getJSONString() const; + //return a compliatn json serialization + string getCompliantJSONString() const; + //reinitialize the object with bson data void setSerializedData(const char* bsonData); diff --git a/chaos/common/external_unit/http_adapter/HTTPBaseAdapter.h b/chaos/common/external_unit/http_adapter/HTTPBaseAdapter.h index 533ba7f23..7b3868dd5 100644 --- a/chaos/common/external_unit/http_adapter/HTTPBaseAdapter.h +++ b/chaos/common/external_unit/http_adapter/HTTPBaseAdapter.h @@ -55,7 +55,7 @@ namespace chaos { chaos::common::data::CDataWrapper err_data_pack; err_data_pack.addInt32Value("error_code", error_code); err_data_pack.addStringValue("error_message", error_message); - const std::string json_error = err_data_pack.getJSONString(); + const std::string json_error = err_data_pack.getCompliantJSONString(); mg_send_head(nc, 400, 0, "Content-Type: application/json"); mg_printf(nc, "%s", json_error.c_str()); } @@ -67,7 +67,7 @@ namespace chaos { chaos::common::data::CDataWrapper err_data_pack; err_data_pack.addInt32Value("error_code", error_code); err_data_pack.addStringValue("error_message", error_message); - const std::string json_error = err_data_pack.getJSONString(); + const std::string json_error = err_data_pack.getCompliantJSONString(); mg_send_websocket_frame(nc, WEBSOCKET_OP_TEXT, json_error.c_str(), json_error.size()); if(close_connection){mg_send_websocket_frame(nc, WEBSOCKET_OP_CLOSE, NULL, 0);} } diff --git a/chaos/common/external_unit/http_adapter/HTTPServerAdapter.cpp b/chaos/common/external_unit/http_adapter/HTTPServerAdapter.cpp index 932be7973..cab2cef1a 100644 --- a/chaos/common/external_unit/http_adapter/HTTPServerAdapter.cpp +++ b/chaos/common/external_unit/http_adapter/HTTPServerAdapter.cpp @@ -265,7 +265,7 @@ void HTTPServerAdapter::sendWSJSONAcceptedConnection(mg_connection *nc, bool close_connection) { chaos::common::data::CDataWrapper err_data_pack; err_data_pack.addInt32Value("accepted_connection", accepted); - const std::string accepted_json = err_data_pack.getJSONString(); + const std::string accepted_json = err_data_pack.getCompliantJSONString(); mg_send_websocket_frame(nc, WEBSOCKET_OP_TEXT, accepted_json.c_str(), accepted_json.size()); if(close_connection){mg_send_websocket_frame(nc, WEBSOCKET_OP_CLOSE, NULL, 0);} } diff --git a/chaos/common/external_unit/serialization/ExternalBSONExtJsonSerialization.cpp b/chaos/common/external_unit/serialization/ExternalBSONExtJsonSerialization.cpp index e54f0c5f9..d498a521a 100644 --- a/chaos/common/external_unit/serialization/ExternalBSONExtJsonSerialization.cpp +++ b/chaos/common/external_unit/serialization/ExternalBSONExtJsonSerialization.cpp @@ -32,7 +32,7 @@ ExternalBSONExtJsonSerialization::ExternalBSONExtJsonSerialization(){} ExternalBSONExtJsonSerialization::~ExternalBSONExtJsonSerialization(){} ChaosUniquePtr<CDataBuffer> ExternalBSONExtJsonSerialization::serialize(const CDataWrapper& cdw_in) { - const std::string json_result = cdw_in.getJSONString(); + const std::string json_result = cdw_in.getCompliantJSONString(); return ChaosUniquePtr<CDataBuffer>(new CDataBuffer(json_result.c_str(), (uint32_t)json_result.size(), true)); } diff --git a/chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.cpp b/chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.cpp index c1f5bdb5a..3e48eb62e 100644 --- a/chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.cpp +++ b/chaos_micro_unit_toolkit/connection/unit_proxy/UnitProxyHandlerWrapper.cpp @@ -111,6 +111,7 @@ int UnitProxyHandlerWrapper::eventLoop(int32_t milliseconds_wait) { while ( base_unit->hasMoreMessage()) { RemoteMessageUniquePtr msg = base_unit->getNextMessage(); + std::cout << msg->message->toString(); if(msg->isError()) { UPError err_msg = {msg->getErrorCode(), msg->getErrorMessage(), diff --git a/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/RawDriverUnitProxy.cpp b/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/RawDriverUnitProxy.cpp index ce1eaaa65..79b12d549 100644 --- a/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/RawDriverUnitProxy.cpp +++ b/chaos_micro_unit_toolkit/connection/unit_proxy/raw_driver/RawDriverUnitProxy.cpp @@ -26,10 +26,10 @@ using namespace chaos::micro_unit_toolkit::connection; using namespace chaos::micro_unit_toolkit::connection::unit_proxy; using namespace chaos::micro_unit_toolkit::connection::unit_proxy::raw_driver; -#define AUTHORIZATION_KEY "authorization_key" -#define AUTHORIZATION_STATE "authorization_state" -#define MESSAGE "message" -#define REQUEST_IDENTIFICATION "request_id" +#define AUTHORIZATION_KEY "authorization_key" +#define AUTHORIZATION_STATE "authorization_state" +#define MESSAGE "msg" +#define REQUEST_IDENTIFICATION "req_id" const ProxyType RawDriverUnitProxy::proxy_type = ProxyTypeRawDriver; @@ -60,7 +60,7 @@ bool RawDriverUnitProxy::manageAutorizationPhase() { int RawDriverUnitProxy::sendMessage(DataPackUniquePtr& message_data) { DataPackUniquePtr message(new DataPack()); - message->addDataPack("message", *message_data); + message->addDataPack(MESSAGE, *message_data); return AbstractUnitProxy::sendMessage(message); } @@ -68,7 +68,7 @@ int RawDriverUnitProxy::sendAnswer(RemoteMessageUniquePtr& message, DataPackUniquePtr& message_data) { if(message->is_request == false) return - 1; DataPackUniquePtr answer(new DataPack()); - answer->addInt32("request_id", message->message_id); - answer->addDataPack("message", *message_data); + answer->addInt32(REQUEST_IDENTIFICATION, message->message_id); + answer->addDataPack(MESSAGE, *message_data); return AbstractUnitProxy::sendMessage(answer); } -- GitLab