From dc7744b33f8266b3dcd92c74650d842d1f13947a Mon Sep 17 00:00:00 2001 From: Geir Storli Date: Tue, 21 Nov 2017 13:48:57 +0000 Subject: Add named bucket space to StatBucketMessage. --- .../storageserver/documentapiconvertertest.cpp | 39 ++++++++++++++++++---- .../storage/storageserver/documentapiconverter.cpp | 7 ++-- 2 files changed, 38 insertions(+), 8 deletions(-) (limited to 'storage') 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 #include #include +#include #include 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 ""; } @@ -73,6 +75,15 @@ struct DocumentApiConverterTest : public CppUnit::TestFixture _converter.reset(new DocumentApiConverter("raw:", _bucketResolver)); }; + template + std::unique_ptr toStorageAPI(documentapi::DocumentMessage &msg) { + auto result = _converter->toStorageAPI(msg, _repo); + auto ptr = dynamic_cast(result.get()); + CPPUNIT_ASSERT(ptr); + result.release(); + return std::unique_ptr(ptr); + } + template std::unique_ptr toDocumentAPI(api::StorageCommand &cmd) { auto result = _converter->toDocumentAPI(cmd, _repo); @@ -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 cmd = _converter->toStorageAPI(cv, _repo); @@ -251,7 +264,7 @@ void DocumentApiConverterTest::testCreateVisitor() CPPUNIT_ASSERT_EQUAL(123456u, pc->getTimeout()); auto msg = toDocumentAPI(*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(msg); + CPPUNIT_ASSERT_EQUAL(Bucket(defaultBucketSpace, BucketId(123)), cmd->getBucket()); + + auto mbusMsg = toDocumentAPI(*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(fromMsg)); - toMsg = std::make_unique(from.getBucket(), from.getDocumentSelection()); + document::Bucket bucket(_bucketResolver.bucketSpaceFromName(from.getBucketSpace()), from.getBucketId()); + toMsg = std::make_unique(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(fromMsg)); - toMsg = std::make_unique(from.getBucket(), from.getDocumentSelection()); + auto statMsg = std::make_unique(from.getBucket().getBucketId(), from.getDocumentSelection()); + statMsg->setBucketSpace(_bucketResolver.nameFromBucketSpace(from.getBucket().getBucketSpace())); + toMsg = std::move(statMsg); break; } default: -- cgit v1.2.3