diff options
author | Geir Storli <geirst@oath.com> | 2017-11-21 14:52:40 +0000 |
---|---|---|
committer | Geir Storli <geirst@oath.com> | 2017-11-22 12:09:09 +0000 |
commit | d84187c71f24fcb7a6b504b13dff5c18c9ebd644 (patch) | |
tree | 0f87983af697418258aefc8c9f411cf39806a615 | |
parent | b4f4418cee4f6fca48c1148cab8dac65ca74d8d9 (diff) |
Add named bucket space to RemoveLocationMessage.
4 files changed, 24 insertions, 2 deletions
diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.cpp b/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.cpp index 7977f13902c..a8ecef79fae 100644 --- a/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.cpp +++ b/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.cpp @@ -12,7 +12,9 @@ RemoveLocationMessage::RemoveLocationMessage( const document::BucketIdFactory& factory, document::select::Parser& parser, const string& documentSelection) - : _documentSelection(documentSelection) + : _documentSelection(documentSelection), + _bucketId(), + _bucketSpace() { document::BucketSelector bucketSel(factory); std::unique_ptr<document::BucketSelector::BucketVector> exprResult( diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.h index a08a553b829..f58f115a8ec 100644 --- a/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.h +++ b/documentapi/src/vespa/documentapi/messagebus/messages/removelocationmessage.h @@ -20,6 +20,8 @@ public: const string& getDocumentSelection() const { return _documentSelection; } const document::BucketId& getBucketId() const { return _bucketId; }; + const string &getBucketSpace() const { return _bucketSpace; } + void setBucketSpace(const string &value) { _bucketSpace = value; } uint32_t getType() const override; string toString() const override { return "removelocationmessage"; } protected: @@ -28,6 +30,7 @@ protected: private: string _documentSelection; document::BucketId _bucketId; + string _bucketSpace; }; } diff --git a/storage/src/tests/storageserver/documentapiconvertertest.cpp b/storage/src/tests/storageserver/documentapiconvertertest.cpp index c55e91a5f87..1f853174699 100644 --- a/storage/src/tests/storageserver/documentapiconvertertest.cpp +++ b/storage/src/tests/storageserver/documentapiconvertertest.cpp @@ -5,6 +5,7 @@ #include <vespa/document/base/testdocrepo.h> #include <vespa/document/bucket/bucketidfactory.h> #include <vespa/document/datatype/documenttype.h> +#include <vespa/document/select/parser.h> #include <vespa/document/test/make_document_bucket.h> #include <vespa/documentapi/documentapi.h> #include <vespa/messagebus/emptyreply.h> @@ -14,6 +15,7 @@ #include <vespa/storageapi/message/datagram.h> #include <vespa/storageapi/message/multioperation.h> #include <vespa/storageapi/message/persistence.h> +#include <vespa/storageapi/message/removelocation.h> #include <vespa/storageapi/message/stat.h> #include <vespa/vespalib/testkit/test_kit.h> @@ -108,6 +110,7 @@ struct DocumentApiConverterTest : public CppUnit::TestFixture void testBatchDocumentUpdate(); void testStatBucket(); void testGetBucketList(); + void testRemoveLocation(); CPPUNIT_TEST_SUITE(DocumentApiConverterTest); CPPUNIT_TEST(testPut); @@ -125,6 +128,7 @@ struct DocumentApiConverterTest : public CppUnit::TestFixture CPPUNIT_TEST(testBatchDocumentUpdate); CPPUNIT_TEST(testStatBucket); CPPUNIT_TEST(testGetBucketList); + CPPUNIT_TEST(testRemoveLocation); CPPUNIT_TEST_SUITE_END(); }; @@ -502,4 +506,16 @@ DocumentApiConverterTest::testGetBucketList() CPPUNIT_ASSERT_EQUAL(Bucket(defaultBucketSpace, BucketId(123)), cmd->getBucket()); } +void +DocumentApiConverterTest::testRemoveLocation() +{ + document::BucketIdFactory factory; + document::select::Parser parser(*_repo, factory); + documentapi::RemoveLocationMessage msg(factory, parser, "id.group == \"mygroup\""); + msg.setBucketSpace(defaultSpaceName); + + auto cmd = toStorageAPI<api::RemoveLocationCommand>(msg); + CPPUNIT_ASSERT_EQUAL(defaultBucket, cmd->getBucket()); +} + } diff --git a/storage/src/vespa/storage/storageserver/documentapiconverter.cpp b/storage/src/vespa/storage/storageserver/documentapiconverter.cpp index 95c35ce988e..c2761b3d832 100644 --- a/storage/src/vespa/storage/storageserver/documentapiconverter.cpp +++ b/storage/src/vespa/storage/storageserver/documentapiconverter.cpp @@ -145,7 +145,8 @@ DocumentApiConverter::toStorageAPI(documentapi::DocumentMessage& fromMsg, case DocumentProtocol::MESSAGE_REMOVELOCATION: { documentapi::RemoveLocationMessage& from(static_cast<documentapi::RemoveLocationMessage&>(fromMsg)); - api::RemoveLocationCommand::UP to(new api::RemoveLocationCommand(from.getDocumentSelection(), document::Bucket(BucketSpace::placeHolder(), document::BucketId(0)))); + document::Bucket bucket(_bucketResolver.bucketSpaceFromName(from.getBucketSpace()), document::BucketId(0)); + api::RemoveLocationCommand::UP to(new api::RemoveLocationCommand(from.getDocumentSelection(), bucket)); toMsg.reset(to.release()); break; } |