summaryrefslogtreecommitdiffstats
path: root/documentapi/src/tests/messages/messages50test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'documentapi/src/tests/messages/messages50test.cpp')
-rw-r--r--documentapi/src/tests/messages/messages50test.cpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/documentapi/src/tests/messages/messages50test.cpp b/documentapi/src/tests/messages/messages50test.cpp
index db82bdce54d..b50f30c1f91 100644
--- a/documentapi/src/tests/messages/messages50test.cpp
+++ b/documentapi/src/tests/messages/messages50test.cpp
@@ -31,6 +31,7 @@ Messages50Test::Messages50Test()
putTest(DocumentProtocol::MESSAGE_GETBUCKETSTATE, TEST_METHOD(Messages50Test::testGetBucketStateMessage));
putTest(DocumentProtocol::MESSAGE_GETDOCUMENT, TEST_METHOD(Messages50Test::testGetDocumentMessage));
putTest(DocumentProtocol::MESSAGE_MAPVISITOR, TEST_METHOD(Messages50Test::testMapVisitorMessage));
+ putTest(DocumentProtocol::MESSAGE_MULTIOPERATION, TEST_METHOD(Messages50Test::testMultiOperationMessage));
putTest(DocumentProtocol::MESSAGE_PUTDOCUMENT, TEST_METHOD(Messages50Test::testPutDocumentMessage));
putTest(DocumentProtocol::MESSAGE_QUERYRESULT, TEST_METHOD(Messages50Test::testQueryResultMessage));
putTest(DocumentProtocol::MESSAGE_REMOVEDOCUMENT, TEST_METHOD(Messages50Test::testRemoveDocumentMessage));
@@ -50,6 +51,7 @@ Messages50Test::Messages50Test()
putTest(DocumentProtocol::REPLY_GETBUCKETSTATE, TEST_METHOD(Messages50Test::testGetBucketStateReply));
putTest(DocumentProtocol::REPLY_GETDOCUMENT, TEST_METHOD(Messages50Test::testGetDocumentReply));
putTest(DocumentProtocol::REPLY_MAPVISITOR, TEST_METHOD(Messages50Test::testMapVisitorReply));
+ putTest(DocumentProtocol::REPLY_MULTIOPERATION, TEST_METHOD(Messages50Test::testMultiOperationReply));
putTest(DocumentProtocol::REPLY_PUTDOCUMENT, TEST_METHOD(Messages50Test::testPutDocumentReply));
putTest(DocumentProtocol::REPLY_QUERYRESULT, TEST_METHOD(Messages50Test::testQueryResultReply));
putTest(DocumentProtocol::REPLY_REMOVEDOCUMENT, TEST_METHOD(Messages50Test::testRemoveDocumentReply));
@@ -323,6 +325,41 @@ Messages50Test::testDocumentSummaryMessage()
}
bool
+Messages50Test::testMultiOperationMessage()
+{
+ document::Document::SP doc =
+ createDoc(getTypeRepo(), "testdoc", "doc:scheme:foo");
+ std::vector<char> buffer(1024);
+ document::BucketIdFactory factory;
+
+ vdslib::WritableDocumentList doclist(getTypeRepoSp(),
+ &buffer[0], buffer.size());
+ ASSERT_TRUE(doclist.addPut(*doc));
+
+ size_t n = MESSAGE_BASE_LENGTH;
+ n += sizeof(uint32_t); // routable object type
+ n += sizeof(uint64_t); // bucket id
+ n += sizeof(uint32_t); // bytes in docblock
+ n += sizeof(uint32_t); // num operations
+ n += sizeof(vdslib::DocumentList::MetaEntry);
+ n += doc->serialize()->getLength();
+ n += 1; // boolean keepTimeStamps
+
+ MultiOperationMessage msg(document::BucketId(16, factory.getBucketId(doc->getId()).getRawId()), doclist);
+ EXPECT_EQUAL(n, serialize("MultiOperationMessage", msg));
+ for (uint32_t lang = 0; lang < NUM_LANGUAGES; ++lang) {
+ mbus::Routable::UP obj = deserialize("MultiOperationMessage", DocumentProtocol::MESSAGE_MULTIOPERATION, lang);
+ if (EXPECT_TRUE(obj.get() != NULL)) {
+ MultiOperationMessage &ref = static_cast<MultiOperationMessage&>(*obj);
+ EXPECT_EQUAL((uint32_t)1, ref.getOperations().size());
+ EXPECT_EQUAL(*doc, *dynamic_cast<document::Document*>(ref.getOperations().begin()->getDocument().get()));
+ EXPECT_EQUAL(document::BucketId(16, factory.getBucketId(doc->getId()).getRawId()), ref.getBucketId());
+ }
+ }
+ return true;
+}
+
+bool
Messages50Test::testGetDocumentMessage()
{
GetDocumentMessage tmp(document::DocumentId("doc:scheme:"), 0);
@@ -664,6 +701,25 @@ Messages50Test::testSearchResultMessage()
return true;
}
+
+bool
+Messages50Test::testMultiOperationReply()
+{
+ WriteDocumentReply reply(DocumentProtocol::REPLY_MULTIOPERATION);
+ reply.setHighestModificationTimestamp(30);
+
+ EXPECT_EQUAL(13u, serialize("MultiOperationReply", reply));
+
+ for (uint32_t lang = 0; lang < NUM_LANGUAGES; ++lang) {
+ mbus::Routable::UP obj = deserialize("MultiOperationReply", DocumentProtocol::REPLY_MULTIOPERATION, lang);
+ if (EXPECT_TRUE(obj.get() != NULL)) {
+ WriteDocumentReply &ref = static_cast<WriteDocumentReply&>(*obj);
+ EXPECT_EQUAL(30u, ref.getHighestModificationTimestamp());
+ }
+ }
+ return true;
+}
+
bool
Messages50Test::testUpdateDocumentMessage()
{