summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--documentapi/src/tests/messagebus/messagebus_test.cpp2
-rw-r--r--documentapi/src/tests/messages/messages50test.cpp4
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.cpp14
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.h20
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/policies/storagepolicy.cpp2
-rw-r--r--documentapi/src/vespa/documentapi/messagebus/routablefactories50.cpp5
-rw-r--r--storage/src/tests/storageserver/documentapiconvertertest.cpp39
-rw-r--r--storage/src/vespa/storage/storageserver/documentapiconverter.cpp7
8 files changed, 63 insertions, 30 deletions
diff --git a/documentapi/src/tests/messagebus/messagebus_test.cpp b/documentapi/src/tests/messagebus/messagebus_test.cpp
index aa3fba01ef9..fc4295278da 100644
--- a/documentapi/src/tests/messagebus/messagebus_test.cpp
+++ b/documentapi/src/tests/messagebus/messagebus_test.cpp
@@ -110,7 +110,7 @@ void Test::get_document_message_is_not_sequenced() {
}
void Test::stat_bucket_message_is_not_sequenced() {
- StatBucketMessage message(makeDocumentBucket(document::BucketId(16, 1)), "");
+ StatBucketMessage message(document::BucketId(16, 1), "");
EXPECT_FALSE(message.hasSequenceId());
}
diff --git a/documentapi/src/tests/messages/messages50test.cpp b/documentapi/src/tests/messages/messages50test.cpp
index d4052f30958..a3627522562 100644
--- a/documentapi/src/tests/messages/messages50test.cpp
+++ b/documentapi/src/tests/messages/messages50test.cpp
@@ -134,7 +134,7 @@ Messages50Test::testEmptyBucketsMessage()
bool
Messages50Test::testStatBucketMessage()
{
- StatBucketMessage msg(makeDocumentBucket(document::BucketId(16, 123)), "id.user=123");
+ StatBucketMessage msg(document::BucketId(16, 123), "id.user=123");
EXPECT_EQUAL(MESSAGE_BASE_LENGTH + 27u, serialize("StatBucketMessage", msg));
@@ -142,7 +142,7 @@ Messages50Test::testStatBucketMessage()
mbus::Routable::UP obj = deserialize("StatBucketMessage", DocumentProtocol::MESSAGE_STATBUCKET, lang);
if (EXPECT_TRUE(obj.get() != NULL)) {
StatBucketMessage &ref = static_cast<StatBucketMessage&>(*obj);
- EXPECT_EQUAL(document::BucketId(16, 123), ref.getBucket().getBucketId());
+ EXPECT_EQUAL(document::BucketId(16, 123), ref.getBucketId());
EXPECT_EQUAL("id.user=123", ref.getDocumentSelection());
}
}
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.cpp
index 00aef46cb79..213cc7d9932 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.cpp
@@ -3,20 +3,20 @@
#include "statbucketreply.h"
#include <vespa/documentapi/messagebus/documentprotocol.h>
-using document::BucketSpace;
-
namespace documentapi {
StatBucketMessage::StatBucketMessage() :
DocumentMessage(),
- _bucket(BucketSpace::placeHolder(), document::BucketId()),
- _documentSelection()
+ _bucketId(document::BucketId()),
+ _documentSelection(),
+ _bucketSpace()
{}
-StatBucketMessage::StatBucketMessage(document::Bucket bucket, const string& documentSelection) :
+StatBucketMessage::StatBucketMessage(document::BucketId bucketId, const string& documentSelection) :
DocumentMessage(),
- _bucket(bucket),
- _documentSelection(documentSelection)
+ _bucketId(bucketId),
+ _documentSelection(documentSelection),
+ _bucketSpace()
{}
StatBucketMessage::~StatBucketMessage() {
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.h
index a13d675ee0b..5233205da4a 100644
--- a/documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.h
+++ b/documentapi/src/vespa/documentapi/messagebus/messages/statbucketmessage.h
@@ -2,14 +2,15 @@
#pragma once
#include "documentmessage.h"
-#include <vespa/document/bucket/bucket.h>
+#include <vespa/document/bucket/bucketid.h>
namespace documentapi {
class StatBucketMessage : public DocumentMessage {
private:
- document::Bucket _bucket;
- string _documentSelection;
+ document::BucketId _bucketId;
+ string _documentSelection;
+ string _bucketSpace;
protected:
DocumentReply::UP doCreateReply() const override;
@@ -23,9 +24,9 @@ public:
/**
* Constructs a new message with initial content.
*
- * @param bucket The bucket whose list to retrieve.
+ * @param bucketId The bucket whose list to retrieve.
*/
- StatBucketMessage(document::Bucket bucket, const string& documentSelection);
+ StatBucketMessage(document::BucketId bucket, const string& documentSelection);
~StatBucketMessage();
@@ -34,14 +35,14 @@ public:
*
* @return The bucket id.
*/
- document::Bucket getBucket() const { return _bucket; }
+ document::BucketId getBucketId() const { return _bucketId; }
/**
* Set the bucket to stat.
*
- * @param id The identifier to set.
+ * @param bucketId The identifier to set.
*/
- void setBucket(document::Bucket bucket) { _bucket = bucket; };
+ void setBucketId(document::BucketId bucketId) { _bucketId = bucketId; };
/**
* Returns the document selection used to filter the documents
@@ -57,6 +58,9 @@ public:
* @param value The selection string to set.
*/
void setDocumentSelection(const string &value) { _documentSelection = value; };
+
+ const string &getBucketSpace() const { return _bucketSpace; }
+ void setBucketSpace(const string &value) { _bucketSpace = value; }
uint32_t getType() const override;
string toString() const override { return "statbucketmessage"; }
};
diff --git a/documentapi/src/vespa/documentapi/messagebus/policies/storagepolicy.cpp b/documentapi/src/vespa/documentapi/messagebus/policies/storagepolicy.cpp
index b638fd1cabe..6ab3b1100c4 100644
--- a/documentapi/src/vespa/documentapi/messagebus/policies/storagepolicy.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/policies/storagepolicy.cpp
@@ -139,7 +139,7 @@ StoragePolicy::doSelect(mbus::RoutingContext &context)
break;
case DocumentProtocol::MESSAGE_STATBUCKET:
- id = static_cast<const StatBucketMessage&>(msg).getBucket().getBucketId();
+ id = static_cast<const StatBucketMessage&>(msg).getBucketId();
break;
case DocumentProtocol::MESSAGE_GETBUCKETLIST:
diff --git a/documentapi/src/vespa/documentapi/messagebus/routablefactories50.cpp b/documentapi/src/vespa/documentapi/messagebus/routablefactories50.cpp
index 6876b4c3a71..028db2f02c0 100644
--- a/documentapi/src/vespa/documentapi/messagebus/routablefactories50.cpp
+++ b/documentapi/src/vespa/documentapi/messagebus/routablefactories50.cpp
@@ -837,8 +837,7 @@ RoutableFactories50::StatBucketMessageFactory::doDecode(document::ByteBuffer &bu
DocumentMessage::UP ret(new StatBucketMessage());
StatBucketMessage &msg = static_cast<StatBucketMessage&>(*ret);
- document::Bucket bucket(BucketSpace::placeHolder(), document::BucketId(decodeLong(buf)));
- msg.setBucket(bucket);
+ msg.setBucketId(document::BucketId(decodeLong(buf)));
msg.setDocumentSelection(decodeString(buf));
return ret;
@@ -849,7 +848,7 @@ RoutableFactories50::StatBucketMessageFactory::doEncode(const DocumentMessage &o
{
const StatBucketMessage &msg = static_cast<const StatBucketMessage&>(obj);
- buf.putLong(msg.getBucket().getBucketId().getRawId());
+ buf.putLong(msg.getBucketId().getRawId());
buf.putString(msg.getDocumentSelection());
return true;
diff --git a/storage/src/tests/storageserver/documentapiconvertertest.cpp b/storage/src/tests/storageserver/documentapiconvertertest.cpp
index f43f37714bc..da0852eb298 100644
--- a/storage/src/tests/storageserver/documentapiconvertertest.cpp
+++ b/storage/src/tests/storageserver/documentapiconvertertest.cpp
@@ -14,6 +14,7 @@
#include <vespa/storageapi/message/datagram.h>
#include <vespa/storageapi/message/multioperation.h>
#include <vespa/storageapi/message/persistence.h>
+#include <vespa/storageapi/message/stat.h>
#include <vespa/vespalib/testkit/test_kit.h>
using document::Bucket;
@@ -29,8 +30,9 @@ using document::test::makeDocumentBucket;
namespace storage {
-DocumentId defaultDocId("id:test:text/html::0");
+const DocumentId defaultDocId("id:test:text/html::0");
const BucketSpace defaultBucketSpace(5);
+const vespalib::string defaultSpaceName("myspace");
const Bucket defaultBucket(defaultBucketSpace, BucketId(0));
struct MockBucketResolver : public BucketResolver {
@@ -41,14 +43,14 @@ struct MockBucketResolver : public BucketResolver {
return Bucket(BucketSpace(0), BucketId(0));
}
virtual BucketSpace bucketSpaceFromName(const vespalib::string &bucketSpace) const override {
- if (bucketSpace == "myspace") {
+ if (bucketSpace == defaultSpaceName) {
return defaultBucketSpace;
}
return BucketSpace(0);
}
virtual vespalib::string nameFromBucketSpace(const document::BucketSpace &bucketSpace) const override {
if (bucketSpace == defaultBucketSpace) {
- return "myspace";
+ return defaultSpaceName;
}
return "";
}
@@ -74,6 +76,15 @@ struct DocumentApiConverterTest : public CppUnit::TestFixture
};
template <typename T>
+ std::unique_ptr<T> toStorageAPI(documentapi::DocumentMessage &msg) {
+ auto result = _converter->toStorageAPI(msg, _repo);
+ auto ptr = dynamic_cast<T*>(result.get());
+ CPPUNIT_ASSERT(ptr);
+ result.release();
+ return std::unique_ptr<T>(ptr);
+ }
+
+ template <typename T>
std::unique_ptr<T> toDocumentAPI(api::StorageCommand &cmd) {
auto result = _converter->toDocumentAPI(cmd, _repo);
auto ptr = dynamic_cast<T*>(result.get());
@@ -95,6 +106,7 @@ struct DocumentApiConverterTest : public CppUnit::TestFixture
void testVisitorInfo();
void testMultiOperation();
void testBatchDocumentUpdate();
+ void testStatBucket();
CPPUNIT_TEST_SUITE(DocumentApiConverterTest);
CPPUNIT_TEST(testPut);
@@ -110,6 +122,7 @@ struct DocumentApiConverterTest : public CppUnit::TestFixture
CPPUNIT_TEST(testVisitorInfo);
CPPUNIT_TEST(testMultiOperation);
CPPUNIT_TEST(testBatchDocumentUpdate);
+ CPPUNIT_TEST(testStatBucket);
CPPUNIT_TEST_SUITE_END();
};
@@ -143,7 +156,7 @@ void DocumentApiConverterTest::testPut()
CPPUNIT_ASSERT(mbusput);
CPPUNIT_ASSERT(mbusput->getDocumentSP().get() == doc.get());
CPPUNIT_ASSERT(mbusput->getTimestamp() == 1234);
-};
+}
void DocumentApiConverterTest::testForwardedPut()
{
@@ -236,7 +249,7 @@ void DocumentApiConverterTest::testGet()
void DocumentApiConverterTest::testCreateVisitor()
{
documentapi::CreateVisitorMessage cv("mylib", "myinstance", "control-dest", "data-dest");
- cv.setBucketSpace("myspace");
+ cv.setBucketSpace(defaultSpaceName);
cv.setTimeRemaining(123456);
std::unique_ptr<storage::api::StorageCommand> cmd = _converter->toStorageAPI(cv, _repo);
@@ -251,7 +264,7 @@ void DocumentApiConverterTest::testCreateVisitor()
CPPUNIT_ASSERT_EQUAL(123456u, pc->getTimeout());
auto msg = toDocumentAPI<documentapi::CreateVisitorMessage>(*cmd);
- CPPUNIT_ASSERT_EQUAL(vespalib::string("myspace"), msg->getBucketSpace());
+ CPPUNIT_ASSERT_EQUAL(defaultSpaceName, msg->getBucketSpace());
}
void DocumentApiConverterTest::testCreateVisitorHighTimeout()
@@ -463,4 +476,18 @@ DocumentApiConverterTest::testBatchDocumentUpdate()
CPPUNIT_ASSERT(mbusBatchReply->getDocumentsNotFound()[2] == true);
}
+void
+DocumentApiConverterTest::testStatBucket()
+{
+ documentapi::StatBucketMessage msg(BucketId(123), "");
+ msg.setBucketSpace(defaultSpaceName);
+
+ auto cmd = toStorageAPI<api::StatBucketCommand>(msg);
+ CPPUNIT_ASSERT_EQUAL(Bucket(defaultBucketSpace, BucketId(123)), cmd->getBucket());
+
+ auto mbusMsg = toDocumentAPI<documentapi::StatBucketMessage>(*cmd);
+ CPPUNIT_ASSERT_EQUAL(BucketId(123), mbusMsg->getBucketId());
+ CPPUNIT_ASSERT_EQUAL(defaultSpaceName, mbusMsg->getBucketSpace());
+}
+
}
diff --git a/storage/src/vespa/storage/storageserver/documentapiconverter.cpp b/storage/src/vespa/storage/storageserver/documentapiconverter.cpp
index 86d926bdb26..165c144ef9c 100644
--- a/storage/src/vespa/storage/storageserver/documentapiconverter.cpp
+++ b/storage/src/vespa/storage/storageserver/documentapiconverter.cpp
@@ -118,7 +118,8 @@ DocumentApiConverter::toStorageAPI(documentapi::DocumentMessage& fromMsg,
case DocumentProtocol::MESSAGE_STATBUCKET:
{
documentapi::StatBucketMessage& from(static_cast<documentapi::StatBucketMessage&>(fromMsg));
- toMsg = std::make_unique<api::StatBucketCommand>(from.getBucket(), from.getDocumentSelection());
+ document::Bucket bucket(_bucketResolver.bucketSpaceFromName(from.getBucketSpace()), from.getBucketId());
+ toMsg = std::make_unique<api::StatBucketCommand>(bucket, from.getDocumentSelection());
break;
}
case DocumentProtocol::MESSAGE_GETBUCKETLIST:
@@ -321,7 +322,9 @@ DocumentApiConverter::toDocumentAPI(api::StorageCommand& fromMsg, const document
case api::MessageType::STATBUCKET_ID:
{
api::StatBucketCommand& from(static_cast<api::StatBucketCommand&>(fromMsg));
- toMsg = std::make_unique<documentapi::StatBucketMessage>(from.getBucket(), from.getDocumentSelection());
+ auto statMsg = std::make_unique<documentapi::StatBucketMessage>(from.getBucket().getBucketId(), from.getDocumentSelection());
+ statMsg->setBucketSpace(_bucketResolver.nameFromBucketSpace(from.getBucket().getBucketSpace()));
+ toMsg = std::move(statMsg);
break;
}
default: