QPIDIT-22: Updated AMQP and types test to latest Proton C++ API.
Project: http://git-wip-us.apache.org/repos/asf/qpid-interop-test/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-interop-test/commit/901635ad Tree: http://git-wip-us.apache.org/repos/asf/qpid-interop-test/tree/901635ad Diff: http://git-wip-us.apache.org/repos/asf/qpid-interop-test/diff/901635ad Branch: refs/heads/master Commit: 901635ad72f222ad11892dbc3163150afbca2349 Parents: ab9f27a Author: Kim van der Riet <kp...@apache.org> Authored: Thu Mar 17 12:59:19 2016 -0400 Committer: Kim van der Riet <kp...@apache.org> Committed: Thu Mar 17 12:59:19 2016 -0400 ---------------------------------------------------------------------- .../qpid-proton-cpp/src/qpidit/QpidItErrors.cpp | 5 +- .../qpid-proton-cpp/src/qpidit/QpidItErrors.hpp | 2 +- .../src/qpidit/shim/AmqpReceiver.cpp | 12 +- .../src/qpidit/shim/AmqpSender.cpp | 10 +- .../src/qpidit/shim/JmsReceiver.cpp | 36 +++--- .../src/qpidit/shim/JmsReceiver.hpp | 2 +- .../src/qpidit/shim/JmsSender.cpp | 76 ++++++------ .../src/qpidit/shim/JmsSender.hpp | 4 +- .../qpid-interop-test/jms/jms_message_tests.py | 119 +++++++++++++++++++ 9 files changed, 193 insertions(+), 73 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/901635ad/shims/qpid-proton-cpp/src/qpidit/QpidItErrors.cpp ---------------------------------------------------------------------- diff --git a/shims/qpid-proton-cpp/src/qpidit/QpidItErrors.cpp b/shims/qpid-proton-cpp/src/qpidit/QpidItErrors.cpp index 9287fdc..0545263 100644 --- a/shims/qpid-proton-cpp/src/qpidit/QpidItErrors.cpp +++ b/shims/qpid-proton-cpp/src/qpidit/QpidItErrors.cpp @@ -22,6 +22,7 @@ #include "qpidit/QpidItErrors.hpp" #include <json/reader.h> +#include <string.h> namespace qpidit { @@ -64,8 +65,8 @@ namespace qpidit // --- IncorrectMessageBodyLengthError --- - IncorrectMessageBodyLengthError::IncorrectMessageBodyLengthError(int expected, int found) : - std::runtime_error(MSG("Incorrect body length found in message body: expected: " << expected + IncorrectMessageBodyLengthError::IncorrectMessageBodyLengthError(const std::string& context, int expected, int found) : + std::runtime_error(MSG(context << ": Incorrect body length found in message body: expected: " << expected << "; found " << found)) {} http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/901635ad/shims/qpid-proton-cpp/src/qpidit/QpidItErrors.hpp ---------------------------------------------------------------------- diff --git a/shims/qpid-proton-cpp/src/qpidit/QpidItErrors.hpp b/shims/qpid-proton-cpp/src/qpidit/QpidItErrors.hpp index 2beaecb..3632af6 100644 --- a/shims/qpid-proton-cpp/src/qpidit/QpidItErrors.hpp +++ b/shims/qpid-proton-cpp/src/qpidit/QpidItErrors.hpp @@ -74,7 +74,7 @@ namespace qpidit class IncorrectMessageBodyLengthError: public std::runtime_error { public: - IncorrectMessageBodyLengthError(int expected, int found); + IncorrectMessageBodyLengthError(const std::string& context, int expected, int found); virtual ~IncorrectMessageBodyLengthError() throw(); }; http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/901635ad/shims/qpid-proton-cpp/src/qpidit/shim/AmqpReceiver.cpp ---------------------------------------------------------------------- diff --git a/shims/qpid-proton-cpp/src/qpidit/shim/AmqpReceiver.cpp b/shims/qpid-proton-cpp/src/qpidit/shim/AmqpReceiver.cpp index 25985fa..66795f3 100644 --- a/shims/qpid-proton-cpp/src/qpidit/shim/AmqpReceiver.cpp +++ b/shims/qpid-proton-cpp/src/qpidit/shim/AmqpReceiver.cpp @@ -23,8 +23,8 @@ #include <iostream> #include <json/json.h> +#include <proton/types.hpp> #include "proton/container.hpp" -#include "proton/decimal.hpp" #include "proton/event.hpp" #include "qpidit/QpidItErrors.hpp" @@ -126,13 +126,13 @@ namespace qpidit _receivedValueList.append(oss.str()); } else if (_amqpType.compare("binary") == 0) { checkMessageType(msg, proton::BINARY); - _receivedValueList.append(msg.body().get<proton::amqp_binary>()); + _receivedValueList.append(std::string(msg.body().get<proton::binary>())); } else if (_amqpType.compare("string") == 0) { checkMessageType(msg, proton::STRING); - _receivedValueList.append(msg.body().get<proton::amqp_string>()); + _receivedValueList.append(msg.body().get<std::string>()); } else if (_amqpType.compare("symbol") == 0) { checkMessageType(msg, proton::SYMBOL); - _receivedValueList.append(msg.body().get<proton::amqp_symbol>()); + _receivedValueList.append(msg.body().get<proton::symbol>()); } else if (_amqpType.compare("list") == 0) { checkMessageType(msg, proton::LIST); Json::Value jsonList(Json::arrayValue); @@ -166,7 +166,7 @@ namespace qpidit //static Json::Value& AmqpReceiver::getMap(Json::Value& jsonMap, const proton::value& val) { std::map<proton::value, proton::value> msgMap; - val.decode() >> proton::to_map(msgMap); + val.get(msgMap); for (std::map<proton::value, proton::value>::const_iterator i = msgMap.begin(); i != msgMap.end(); ++i) { switch (i->second.type()) { case proton::LIST: @@ -196,7 +196,7 @@ namespace qpidit //static Json::Value& AmqpReceiver::getSequence(Json::Value& jsonList, const proton::value& val) { std::vector<proton::value> msgList; - val.decode() >> proton::to_sequence(msgList); + val.get(msgList); for (std::vector<proton::value>::const_iterator i=msgList.begin(); i!=msgList.end(); ++i) { switch ((*i).type()) { case proton::LIST: http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/901635ad/shims/qpid-proton-cpp/src/qpidit/shim/AmqpSender.cpp ---------------------------------------------------------------------- diff --git a/shims/qpid-proton-cpp/src/qpidit/shim/AmqpSender.cpp b/shims/qpid-proton-cpp/src/qpidit/shim/AmqpSender.cpp index 9b3613c..e1c8bf7 100644 --- a/shims/qpid-proton-cpp/src/qpidit/shim/AmqpSender.cpp +++ b/shims/qpid-proton-cpp/src/qpidit/shim/AmqpSender.cpp @@ -154,24 +154,24 @@ namespace qpidit msg.body(val); } else if (_amqpType.compare("binary") == 0) { //setStringValue<proton::amqp_binary>(msg, testValue.asString()); - proton::amqp_binary val(testValue.asString()); + proton::binary val(testValue.asString()); msg.body(val); } else if (_amqpType.compare("string") == 0) { //setStringValue<proton::amqp_string>(msg, testValue.asString()); - proton::amqp_string val(testValue.asString()); + std::string val(testValue.asString()); msg.body(val); } else if (_amqpType.compare("symbol") == 0) { //setStringValue<proton::amqp_symbol>(msg, testValue.asString()); - proton::amqp_symbol val(testValue.asString()); + proton::symbol val(testValue.asString()); msg.body(val); } else if (_amqpType.compare("list") == 0) { std::vector<proton::value> list; processList(list, testValue); - msg.body(proton::as<proton::LIST>(list)); + msg.body(list); } else if (_amqpType.compare("map") == 0) { std::map<std::string, proton::value> map; processMap(map, testValue); - msg.body(proton::as<proton::MAP>(map)); + msg.body(map); } else if (_amqpType.compare("array") == 0) { /* std::vector<proton::value> array; http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/901635ad/shims/qpid-proton-cpp/src/qpidit/shim/JmsReceiver.cpp ---------------------------------------------------------------------- diff --git a/shims/qpid-proton-cpp/src/qpidit/shim/JmsReceiver.cpp b/shims/qpid-proton-cpp/src/qpidit/shim/JmsReceiver.cpp index 2320824..1ec3083 100644 --- a/shims/qpid-proton-cpp/src/qpidit/shim/JmsReceiver.cpp +++ b/shims/qpid-proton-cpp/src/qpidit/shim/JmsReceiver.cpp @@ -34,7 +34,7 @@ namespace qpidit { typedef enum {JMS_MESSAGE_TYPE=0, JMS_OBJECTMESSAGE_TYPE, JMS_MAPMESSAGE_TYPE, JMS_BYTESMESSAGE_TYPE, JMS_STREAMMESSAGE_TYPE, JMS_TEXTMESSAGE_TYPE} jmsMessageType_t; //static - proton::amqp_symbol JmsReceiver::s_jmsMessageTypeAnnotationKey("x-opt-jms-msg-type"); + proton::symbol JmsReceiver::s_jmsMessageTypeAnnotationKey("x-opt-jms-msg-type"); std::map<std::string, int8_t>JmsReceiver::s_jmsMessageTypeAnnotationValues = initializeJmsMessageTypeAnnotationMap(); @@ -66,7 +66,7 @@ namespace qpidit void JmsReceiver::on_message(proton::event &e) { proton::message& msg = e.message(); if (_received < _expected) { - switch (msg.message_annotations()[proton::amqp_symbol("x-opt-jms-msg-type")].get<int8_t>()) { + switch (msg.message_annotations()[proton::symbol("x-opt-jms-msg-type")].get<int8_t>()) { case JMS_MESSAGE_TYPE: receiveJmsMessage(msg); break; @@ -142,7 +142,7 @@ namespace qpidit } else if (subType.compare("byte") == 0) { _receivedSubTypeList.append(Json::Value(toHexStr<int8_t>(val.get<int8_t>()))); } else if (subType.compare("bytes") == 0) { - _receivedSubTypeList.append(Json::Value(val.get<proton::amqp_binary>())); + _receivedSubTypeList.append(Json::Value(std::string(val.get<proton::binary>()))); } else if (subType.compare("char") == 0) { std::ostringstream oss; oss << (char)val.get<wchar_t>(); @@ -160,7 +160,7 @@ namespace qpidit } else if (subType.compare("short") == 0) { _receivedSubTypeList.append(Json::Value(toHexStr<int16_t>(val.get<int16_t>()))); } else if (subType.compare("string") == 0) { - _receivedSubTypeList.append(Json::Value(val.get<proton::amqp_string>())); + _receivedSubTypeList.append(Json::Value(val.get<std::string>())); } else { throw qpidit::UnknownJmsMessageSubTypeError(subType); } @@ -172,46 +172,46 @@ namespace qpidit throw qpidit::IncorrectMessageBodyTypeError(_jmsMessageType, "JMS_BYTESMESSAGE_TYPE"); } std::string subType(_subTypeList[_subTypeIndex]); - proton::amqp_binary body = msg.body().get<proton::amqp_binary>(); + proton::binary body = msg.body().get<proton::binary>(); if (subType.compare("boolean") == 0) { - if (body.size() != 1) throw IncorrectMessageBodyLengthError(1, body.size()); + if (body.size() != 1) throw IncorrectMessageBodyLengthError("JmsReceiver::receiveJmsBytesMessage, subType=boolean", 1, body.size()); _receivedSubTypeList.append(body[0] ? Json::Value("True") : Json::Value("False")); } else if (subType.compare("byte") == 0) { - if (body.size() != sizeof(int8_t)) throw IncorrectMessageBodyLengthError(sizeof(int8_t), body.size()); + if (body.size() != sizeof(int8_t)) throw IncorrectMessageBodyLengthError("JmsReceiver::receiveJmsBytesMessage, subType=byte", sizeof(int8_t), body.size()); int8_t val = *((int8_t*)body.data()); _receivedSubTypeList.append(Json::Value(toHexStr<int8_t>(val))); } else if (subType.compare("bytes") == 0) { - _receivedSubTypeList.append(Json::Value(body)); + _receivedSubTypeList.append(Json::Value(std::string(body))); } else if (subType.compare("char") == 0) { - if (body.size() != sizeof(uint16_t)) throw IncorrectMessageBodyLengthError(sizeof(uint16_t), body.size()); + if (body.size() != sizeof(uint16_t)) throw IncorrectMessageBodyLengthError("JmsReceiver::receiveJmsBytesMessage, subType=char", sizeof(uint16_t), body.size()); // TODO: This is ugly: ignoring first byte - handle UTF-16 correctly char c = body[1]; std::ostringstream oss; oss << c; _receivedSubTypeList.append(Json::Value(oss.str())); } else if (subType.compare("double") == 0) { - if (body.size() != sizeof(int64_t)) throw IncorrectMessageBodyLengthError(sizeof(int64_t), body.size()); + if (body.size() != sizeof(int64_t)) throw IncorrectMessageBodyLengthError("JmsReceiver::receiveJmsBytesMessage, subType=double", sizeof(int64_t), body.size()); int64_t val = be64toh(*((int64_t*)body.data())); _receivedSubTypeList.append(Json::Value(toHexStr<int64_t>(val, true, false))); } else if (subType.compare("float") == 0) { - if (body.size() != sizeof(int32_t)) throw IncorrectMessageBodyLengthError(sizeof(int32_t), body.size()); + if (body.size() != sizeof(int32_t)) throw IncorrectMessageBodyLengthError("JmsReceiver::receiveJmsBytesMessage, subType=float", sizeof(int32_t), body.size()); int32_t val = be32toh(*((int32_t*)body.data())); _receivedSubTypeList.append(Json::Value(toHexStr<int32_t>(val, true, false))); } else if (subType.compare("long") == 0) { - if (body.size() != sizeof(int64_t)) throw IncorrectMessageBodyLengthError(sizeof(int64_t), body.size()); + if (body.size() != sizeof(int64_t)) throw IncorrectMessageBodyLengthError("JmsReceiver::receiveJmsBytesMessage, subType=long", sizeof(int64_t), body.size()); int64_t val = be64toh(*((int64_t*)body.data())); _receivedSubTypeList.append(Json::Value(toHexStr<int64_t>(val))); } else if (subType.compare("int") == 0) { - if (body.size() != sizeof(int32_t)) throw IncorrectMessageBodyLengthError(sizeof(int32_t), body.size()); + if (body.size() != sizeof(int32_t)) throw IncorrectMessageBodyLengthError("JmsReceiver::receiveJmsBytesMessage, subType=int", sizeof(int32_t), body.size()); int32_t val = be32toh(*((int32_t*)body.data())); _receivedSubTypeList.append(Json::Value(toHexStr<int32_t>(val))); } else if (subType.compare("short") == 0) { - if (body.size() != sizeof(int16_t)) throw IncorrectMessageBodyLengthError(sizeof(int16_t), body.size()); + if (body.size() != sizeof(int16_t)) throw IncorrectMessageBodyLengthError("JmsReceiver::receiveJmsBytesMessage, subType=short", sizeof(int16_t), body.size()); int16_t val = be16toh(*((int16_t*)body.data())); _receivedSubTypeList.append(Json::Value(toHexStr<int16_t>(val))); } else if (subType.compare("string") == 0) { // TODO: decode string size in first two bytes and check string size - _receivedSubTypeList.append(Json::Value(body.substr(2))); + _receivedSubTypeList.append(Json::Value(std::string(body).substr(2))); } else { throw qpidit::UnknownJmsMessageSubTypeError(subType); } @@ -230,7 +230,7 @@ namespace qpidit } else if (subType.compare("byte") == 0) { _receivedSubTypeList.append(Json::Value(toHexStr<int8_t>(i->get<int8_t>()))); } else if (subType.compare("bytes") == 0) { - _receivedSubTypeList.append(Json::Value(i->get<proton::amqp_binary>())); + _receivedSubTypeList.append(Json::Value(std::string(i->get<proton::binary>()))); } else if (subType.compare("char") == 0) { std::ostringstream oss; oss << (char)i->get<wchar_t>(); @@ -248,7 +248,7 @@ namespace qpidit } else if (subType.compare("short") == 0) { _receivedSubTypeList.append(Json::Value(toHexStr<int16_t>(i->get<int16_t>()))); } else if (subType.compare("string") == 0) { - _receivedSubTypeList.append(Json::Value(i->get<proton::amqp_string>())); + _receivedSubTypeList.append(Json::Value(i->get<std::string>())); } else { throw qpidit::UnknownJmsMessageSubTypeError(subType); } @@ -260,7 +260,7 @@ namespace qpidit if(_jmsMessageType.compare("JMS_TEXTMESSAGE_TYPE") != 0) { throw qpidit::IncorrectMessageBodyTypeError(_jmsMessageType, "JMS_TEXTMESSAGE_TYPE"); } - _receivedSubTypeList.append(Json::Value(msg.body().get<proton::amqp_string>())); + _receivedSubTypeList.append(Json::Value(msg.body().get<std::string>())); } //static http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/901635ad/shims/qpid-proton-cpp/src/qpidit/shim/JmsReceiver.hpp ---------------------------------------------------------------------- diff --git a/shims/qpid-proton-cpp/src/qpidit/shim/JmsReceiver.hpp b/shims/qpid-proton-cpp/src/qpidit/shim/JmsReceiver.hpp index 22bd337..dda1204 100644 --- a/shims/qpid-proton-cpp/src/qpidit/shim/JmsReceiver.hpp +++ b/shims/qpid-proton-cpp/src/qpidit/shim/JmsReceiver.hpp @@ -37,7 +37,7 @@ namespace qpidit class JmsReceiver : public proton::handler { protected: - static proton::amqp_symbol s_jmsMessageTypeAnnotationKey; + static proton::symbol s_jmsMessageTypeAnnotationKey; static std::map<std::string, int8_t>s_jmsMessageTypeAnnotationValues; const std::string _brokerUrl; http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/901635ad/shims/qpid-proton-cpp/src/qpidit/shim/JmsSender.cpp ---------------------------------------------------------------------- diff --git a/shims/qpid-proton-cpp/src/qpidit/shim/JmsSender.cpp b/shims/qpid-proton-cpp/src/qpidit/shim/JmsSender.cpp index e1874d9..3d81cc4 100644 --- a/shims/qpid-proton-cpp/src/qpidit/shim/JmsSender.cpp +++ b/shims/qpid-proton-cpp/src/qpidit/shim/JmsSender.cpp @@ -36,7 +36,7 @@ namespace qpidit { typedef enum {JMS_MESSAGE_TYPE=0, JMS_OBJECTMESSAGE_TYPE, JMS_MAPMESSAGE_TYPE, JMS_BYTESMESSAGE_TYPE, JMS_STREAMMESSAGE_TYPE, JMS_TEXTMESSAGE_TYPE} jmsMessageType_t; //static - proton::amqp_symbol JmsSender::s_jmsMessageTypeAnnotationKey("x-opt-jms-msg-type"); + proton::symbol JmsSender::s_jmsMessageTypeAnnotationKey("x-opt-jms-msg-type"); std::map<std::string, int8_t>JmsSender::s_jmsMessageTypeAnnotationValues = initializeJmsMessageTypeAnnotationMap(); JmsSender::JmsSender(const std::string& brokerUrl, @@ -112,59 +112,59 @@ namespace qpidit } proton::message& JmsSender::setBytesMessage(proton::message& msg, const std::string& subType, const std::string& testValueStr) { - proton::amqp_binary bin; + proton::binary bin; if (subType.compare("boolean") == 0) { - if (testValueStr.compare("False") == 0) bin.assign("\x00", 1); - else if (testValueStr.compare("True") == 0) bin.assign("\x01", 1); + if (testValueStr.compare("False") == 0) bin.push_back(char(0)); + else if (testValueStr.compare("True") == 0) bin.push_back(char(1)); else throw InvalidTestValueError(subType, testValueStr); } else if (subType.compare("byte") == 0) { uint8_t val = getIntegralValue<int8_t>(testValueStr); - bin.assign((char*)&val, sizeof(val)); + bin.push_back(char(val)); } else if (subType.compare("bytes") == 0) { - bin.assign(testValueStr); + bin.assign(testValueStr.begin(), testValueStr.end()); } else if (subType.compare("char") == 0) { char val[2]; val[0] = 0; if (testValueStr[0] == '\\') { // Format: '\xNN' - val[1] = (char)getIntegralValue<char>(testValueStr.substr(2)); + bin.push_back(getIntegralValue<char>(testValueStr.substr(2))); } else { // Format: 'c' - val[1] = testValueStr[0]; + bin.push_back(testValueStr[0]); } - bin.assign(val, sizeof(val)); } else if (subType.compare("double") == 0) { uint64_t val; try { val = htobe64(std::strtoul(testValueStr.data(), NULL, 16)); } catch (const std::exception& e) { throw qpidit::InvalidTestValueError("double", testValueStr); } - bin.assign((char*)&val, sizeof(val)); + bin.assign(sizeof(val), val); } else if (subType.compare("float") == 0) { uint32_t val; try { val = htobe32((uint32_t)std::strtoul(testValueStr.data(), NULL, 16)); } catch (const std::exception& e) { throw qpidit::InvalidTestValueError("float", testValueStr); } - bin.assign((char*)&val, sizeof(val)); + bin.assign(sizeof(val), val); } else if (subType.compare("long") == 0) { uint64_t val = htobe64(getIntegralValue<uint64_t>(testValueStr)); - bin.assign((char*)&val, sizeof(val)); + bin.assign(sizeof(val), val); } else if (subType.compare("int") == 0) { uint32_t val = htobe32(getIntegralValue<uint32_t>(testValueStr)); - bin.assign((char*)&val, sizeof(val)); + bin.assign(sizeof(val), val); } else if (subType.compare("short") == 0) { uint16_t val = htobe16(getIntegralValue<int16_t>(testValueStr)); - bin.assign((char*)&val, sizeof(val)); + bin.assign(sizeof(val), val); } else if (subType.compare("string") == 0) { std::ostringstream oss; uint16_t strlen = htobe16((uint16_t)testValueStr.size()); oss.write((char*)&strlen, sizeof(strlen)); oss << testValueStr; - bin.assign(oss.str()); + std::string os = oss.str(); + bin.assign(os.begin(), os.end()); } else { throw qpidit::UnknownJmsMessageSubTypeError(subType); } msg.body(bin); msg.inferred(true); - msg.content_type(proton::amqp_symbol("application/octet-stream")); - msg.message_annotations()[proton::amqp_symbol("x-opt-jms-msg-type")] = s_jmsMessageTypeAnnotationValues["JMS_BYTESMESSAGE_TYPE"]; + msg.content_type(proton::symbol("application/octet-stream")); + msg.message_annotations()[proton::symbol("x-opt-jms-msg-type")] = s_jmsMessageTypeAnnotationValues["JMS_BYTESMESSAGE_TYPE"]; return msg; } @@ -180,7 +180,7 @@ namespace qpidit } else if (subType.compare("byte") == 0) { m[mapKey] = int8_t(getIntegralValue<int8_t>(testValueStr)); } else if (subType.compare("bytes") == 0) { - m[mapKey] = proton::amqp_binary(testValueStr); + m[mapKey] = proton::binary(testValueStr); } else if (subType.compare("char") == 0) { wchar_t val; if (testValueStr[0] == '\\') { // Format: '\xNN' @@ -200,34 +200,34 @@ namespace qpidit } else if (subType.compare("short") == 0) { m[mapKey] = getIntegralValue<int16_t>(testValueStr); } else if (subType.compare("string") == 0) { - m[mapKey] = proton::amqp_string(testValueStr); + m[mapKey] = testValueStr; } else { throw qpidit::UnknownJmsMessageSubTypeError(subType); } msg.inferred(false); msg.body(m); - msg.message_annotations()[proton::amqp_symbol("x-opt-jms-msg-type")] = s_jmsMessageTypeAnnotationValues["JMS_MAPMESSAGE_TYPE"]; + msg.message_annotations()[proton::symbol("x-opt-jms-msg-type")] = s_jmsMessageTypeAnnotationValues["JMS_MAPMESSAGE_TYPE"]; return msg; } proton::message& JmsSender::setObjectMessage(proton::message& msg, const std::string& subType, const Json::Value& testValue) { msg.body(getJavaObjectBinary(subType, testValue.asString())); msg.inferred(true); - msg.content_type(proton::amqp_symbol("application/x-java-serialized-object")); - msg.message_annotations()[proton::amqp_symbol("x-opt-jms-msg-type")] = s_jmsMessageTypeAnnotationValues["JMS_OBJECTMESSAGE_TYPE"]; + msg.content_type(proton::symbol("application/x-java-serialized-object")); + msg.message_annotations()[proton::symbol("x-opt-jms-msg-type")] = s_jmsMessageTypeAnnotationValues["JMS_OBJECTMESSAGE_TYPE"]; return msg; } proton::message& JmsSender::setStreamMessage(proton::message& msg, const std::string& subType, const std::string& testValueStr) { std::vector<proton::value> l; if (subType.compare("boolean") == 0) { - if (testValueStr.compare("False") == 0) l.push_back(proton::value(false)); - else if (testValueStr.compare("True") == 0) l.push_back(proton::value(true)); + if (testValueStr.compare("False") == 0) l.push_back(false); + else if (testValueStr.compare("True") == 0) l.push_back(true); else throw InvalidTestValueError(subType, testValueStr); } else if (subType.compare("byte") == 0) { - l.push_back(proton::value(int8_t(getIntegralValue<int8_t>(testValueStr)))); + l.push_back(int8_t(getIntegralValue<int8_t>(testValueStr))); } else if (subType.compare("bytes") == 0) { - l.push_back(proton::value(proton::amqp_binary(testValueStr))); + l.push_back(proton::binary(testValueStr)); } else if (subType.compare("char") == 0) { wchar_t val; if (testValueStr[0] == '\\') { // Format: '\xNN' @@ -235,45 +235,45 @@ namespace qpidit } else { // Format: 'c' val = testValueStr[0]; } - l.push_back(proton::value(val)); + l.push_back(val); } else if (subType.compare("double") == 0) { - l.push_back(proton::value(getFloatValue<double, uint64_t>(testValueStr))); + l.push_back(getFloatValue<double, uint64_t>(testValueStr)); } else if (subType.compare("float") == 0) { - l.push_back(proton::value(getFloatValue<float, uint32_t>(testValueStr))); + l.push_back(getFloatValue<float, uint32_t>(testValueStr)); } else if (subType.compare("int") == 0) { - l.push_back(proton::value(getIntegralValue<int32_t>(testValueStr))); + l.push_back(getIntegralValue<int32_t>(testValueStr)); } else if (subType.compare("long") == 0) { - l.push_back(proton::value(getIntegralValue<int64_t>(testValueStr))); + l.push_back(getIntegralValue<int64_t>(testValueStr)); } else if (subType.compare("short") == 0) { - l.push_back(proton::value(getIntegralValue<int16_t>(testValueStr))); + l.push_back(getIntegralValue<int16_t>(testValueStr)); } else if (subType.compare("string") == 0) { - l.push_back(proton::value(proton::amqp_string(testValueStr))); + l.push_back(testValueStr); } else { throw qpidit::UnknownJmsMessageSubTypeError(subType); } msg.body(l); msg.inferred(true); - msg.message_annotations()[proton::amqp_symbol("x-opt-jms-msg-type")] = s_jmsMessageTypeAnnotationValues["JMS_STREAMMESSAGE_TYPE"]; + msg.message_annotations()[proton::symbol("x-opt-jms-msg-type")] = s_jmsMessageTypeAnnotationValues["JMS_STREAMMESSAGE_TYPE"]; return msg; } proton::message& JmsSender::setTextMessage(proton::message& msg, const Json::Value& testValue) { msg.body(testValue.asString()); msg.inferred(false); - msg.message_annotations()[proton::amqp_symbol("x-opt-jms-msg-type")] = s_jmsMessageTypeAnnotationValues["JMS_TEXTMESSAGE_TYPE"]; + msg.message_annotations()[proton::symbol("x-opt-jms-msg-type")] = s_jmsMessageTypeAnnotationValues["JMS_TEXTMESSAGE_TYPE"]; return msg; } //static - proton::amqp_binary JmsSender::getJavaObjectBinary(const std::string& javaClassName, const std::string& valAsString) { - proton::amqp_binary javaObjectBinary; + proton::binary JmsSender::getJavaObjectBinary(const std::string& javaClassName, const std::string& valAsString) { + proton::binary javaObjectBinary; char buf[1024]; int bytesRead; FILE* fp = ::popen("java -cp target/JavaObjUtils.jar org.apache.qpid.interop_test.obj_util.JavaObjToBytes javaClassStr", "rb"); if (fp == NULL) { throw qpidit::PopenError(errno); } do { bytesRead = ::fread(buf, 1, sizeof(buf), fp); - javaObjectBinary.append(buf, bytesRead); + javaObjectBinary.insert(javaObjectBinary.end(), &buf[0], &buf[bytesRead-1]); } while (bytesRead == sizeof(buf)); int status = ::pclose(fp); if (status == -1) { http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/901635ad/shims/qpid-proton-cpp/src/qpidit/shim/JmsSender.hpp ---------------------------------------------------------------------- diff --git a/shims/qpid-proton-cpp/src/qpidit/shim/JmsSender.hpp b/shims/qpid-proton-cpp/src/qpidit/shim/JmsSender.hpp index 913f400..5ad5e86 100644 --- a/shims/qpid-proton-cpp/src/qpidit/shim/JmsSender.hpp +++ b/shims/qpid-proton-cpp/src/qpidit/shim/JmsSender.hpp @@ -39,7 +39,7 @@ namespace qpidit class JmsSender : public proton::handler { protected: - static proton::amqp_symbol s_jmsMessageTypeAnnotationKey; + static proton::symbol s_jmsMessageTypeAnnotationKey; static std::map<std::string, int8_t>s_jmsMessageTypeAnnotationValues; const std::string _brokerUrl; @@ -63,7 +63,7 @@ namespace qpidit proton::message& setStreamMessage(proton::message& msg, const std::string& subType, const std::string& testValue); proton::message& setTextMessage(proton::message& msg, const Json::Value& testValue); - static proton::amqp_binary getJavaObjectBinary(const std::string& javaClassName, const std::string& valAsString); + static proton::binary getJavaObjectBinary(const std::string& javaClassName, const std::string& valAsString); static uint32_t getTotalNumMessages(const Json::Value& testValueMap); static std::map<std::string, int8_t> initializeJmsMessageTypeAnnotationMap(); http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/901635ad/src/py/qpid-interop-test/jms/jms_message_tests.py ---------------------------------------------------------------------- diff --git a/src/py/qpid-interop-test/jms/jms_message_tests.py b/src/py/qpid-interop-test/jms/jms_message_tests.py index 244b235..b92d98c 100755 --- a/src/py/qpid-interop-test/jms/jms_message_tests.py +++ b/src/py/qpid-interop-test/jms/jms_message_tests.py @@ -51,10 +51,129 @@ class JmsMessageTypes(TestTypeMap): TYPE_SUBMAP = { 'boolean': ['True', 'False'], + 'byte': ['-0x80', + '-0x1', + '0x0', + '0x7f'], + 'bytes': [b'', + b'12345', + b'Hello, world', + b'\\x01\\x02\\x03\\x04\\x05abcde\\x80\\x81\\xfe\\xff', + b'The quick brown fox jumped over the lazy dog 0123456789.' * 100], + 'char': ['a', + 'Z', + '\x01', + '\x7f'], + 'double': ['0x0000000000000000', # 0.0 + '0x8000000000000000', # -0.0 + '0x400921fb54442eea', # pi (3.14159265359) positive decimal + '0xc005bf0a8b145fcf', # -e (-2.71828182846) negative decimal + '0x0000000000000001', # Smallest positive denormalized number + '0x8000000000000001', # Smallest negative denormalized number + '0x000fffffffffffff', # Largest positive denormalized number + '0x8010000000000000', # Largest negative denormalized number + '0x7fefffffffffffff', # Largest positive normalized number + '0xffefffffffffffff', # Largest negative normalized number + '0x7ff0000000000000', # +Infinity + '0xfff0000000000000', # -Infinity + '0x7ff8000000000000'], # +NaN + 'float': ['0x00000000', # 0.0 + '0x80000000', # -0.0 + '0x40490fdb', # pi (3.14159265359) positive decimal + '0xc02df854', # -e (-2.71828182846) negative decimal + '0x00000001', # Smallest positive denormalized number + '0x80000001', # Smallest negative denormalized number + '0x007fffff', # Largest positive denormalized number + '0x807fffff', # Largest negative denormalized number + '0x00800000', # Smallest positive normalized number + '0x80800000', # Smallest negative normalized number + '0x7f7fffff', # Largest positive normalized number + '0xff7fffff', # Largest negative normalized number + #'0x7f800000', # +Infinity # PROTON-1149 - fails on RHEL7 + #'0xff800000', # -Infinity # PROTON-1149 - fails on RHEL7 + '0x7fc00000'], # +NaN + 'int': ['-0x80000000', + '-0x81', + '-0x80', + '-0x1', + '0x0', + '0x7f', + '0x80', + '0x7fffffff'], + 'long': ['-0x8000000000000000', + '-0x81', + '-0x80', + '-0x1', + '0x0', + '0x7f', + '0x80', + '0x7fffffffffffffff'], + 'short': ['-0x8000', + '-0x1', + '0x0', + '0x7fff'], + 'string': ['', + 'Hello, world', + '"Hello, world"', + "Charlie's \"peach\"", + 'Charlie\'s "peach"', + 'The quick brown fox jumped over the lazy dog 0123456789.' * 100] } TYPE_MAP = { 'JMS_BYTESMESSAGE_TYPE': TYPE_SUBMAP, + 'JMS_MAPMESSAGE_TYPE': TYPE_SUBMAP, +# 'JMS_OBJECTMESSAGE_TYPE': { +# 'java.lang.Boolean': ['true', +# 'false'], +# 'java.lang.Byte': ['-128', +# '0', +# '127'], +# 'java.lang.Character': [u'a', +# u'Z'], +# 'java.lang.Double': ['0.0', +# '3.141592654', +# '-2.71828182846'], +# 'java.lang.Float': ['0.0', +# '3.14159', +# '-2.71828'], +# 'java.lang.Integer': ['-2147483648', +# '-129', +# '-128', +# '-1', +# '0', +# '127', +# '128', +# '2147483647'], +# 'java.lang.Long' : ['-9223372036854775808', +# '-129', +# '-128', +# '-1', +# '0', +# '127', +# '128', +# '9223372036854775807'], +# 'java.lang.Short': ['-32768', +# '-129', +# '-128', +# '-1', +# '0', +# '127', +# '128', +# '32767'], +# 'java.lang.String': [u'', +# u'Hello, world', +# u'"Hello, world"', +# u"Charlie's \"peach\"", +# u'Charlie\'s "peach"'] +# }, + 'JMS_STREAMMESSAGE_TYPE': TYPE_SUBMAP, + 'JMS_TEXTMESSAGE_TYPE': {'text': ['', + 'Hello, world', + '"Hello, world"', + "Charlie's \"peach\"", + 'Charlie\'s "peach"', + 'The quick brown fox jumped over the lazy dog 0123456789.' * 100]} } BROKER_SKIP = {} --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org