aboutsummaryrefslogtreecommitdiffstats
path: root/storage/src/tests/bucketmover/bucketmovertest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'storage/src/tests/bucketmover/bucketmovertest.cpp')
-rw-r--r--storage/src/tests/bucketmover/bucketmovertest.cpp176
1 files changed, 0 insertions, 176 deletions
diff --git a/storage/src/tests/bucketmover/bucketmovertest.cpp b/storage/src/tests/bucketmover/bucketmovertest.cpp
deleted file mode 100644
index e360819c5d7..00000000000
--- a/storage/src/tests/bucketmover/bucketmovertest.cpp
+++ /dev/null
@@ -1,176 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include <vespa/storage/bucketdb/storbucketdb.h>
-#include <vespa/storage/common/bucketmessages.h>
-#include <vespa/storage/bucketmover/bucketmover.h>
-#include <vespa/document/test/make_bucket_space.h>
-#include <vespa/document/test/make_document_bucket.h>
-#include <tests/common/dummystoragelink.h>
-#include <tests/common/teststorageapp.h>
-#include <vespa/config/common/exceptions.h>
-#include <gtest/gtest.h>
-
-bool debug = false;
-
-using document::test::makeBucketSpace;
-using document::test::makeDocumentBucket;
-
-namespace storage::bucketmover {
-
-struct BucketMoverTest : public ::testing::Test {
-public:
- void SetUp() override;
- void TearDown() override;
-
- std::unique_ptr<TestServiceLayerApp> _node;
- std::unique_ptr<ServiceLayerComponent> _component;
- std::unique_ptr<BucketMover> _bucketMover;
- DummyStorageLink* after;
-
- void addBucket(const document::BucketId& id, uint16_t idealDiff);
-};
-
-void
-BucketMoverTest::TearDown()
-{
- _node.reset(0);
-}
-
-void
-BucketMoverTest::SetUp()
-{
- try {
- _node.reset(new TestServiceLayerApp(DiskCount(4)));
- _node->setupDummyPersistence();
- } catch (config::InvalidConfigException& e) {
- fprintf(stderr, "%s\n", e.what());
- }
-
- _component.reset(new ServiceLayerComponent(_node->getComponentRegister(), "foo"));
- _bucketMover.reset(new BucketMover("raw:", _node->getComponentRegister()));
- after = new DummyStorageLink();
- _bucketMover->push_back(StorageLink::UP(after));
-}
-
-void
-BucketMoverTest::addBucket(const document::BucketId& id,
- uint16_t idealDiff)
-{
- StorBucketDatabase::WrappedEntry entry(
- _component->getBucketDatabase(makeBucketSpace()).get(
- id,
- "",
- StorBucketDatabase::CREATE_IF_NONEXISTING));
-
- entry->setBucketInfo(api::BucketInfo(1,1,1));
-
- uint16_t idealDisk = _component->getIdealPartition(makeDocumentBucket(id));
- entry->disk = (idealDisk + idealDiff) % _component->getDiskCount();
- entry.write();
-}
-
-TEST_F(BucketMoverTest, testNormalUsage)
-{
- for (uint32_t i = 1; i < 4; ++i) {
- addBucket(document::BucketId(16, i), 1);
- }
- for (uint32_t i = 4; i < 6; ++i) {
- addBucket(document::BucketId(16, i), 0);
- }
-
- _bucketMover->open();
- _bucketMover->tick();
-
- std::vector<api::StorageMessage::SP> msgs = after->getCommandsOnce();
- EXPECT_EQ(
- std::string("BucketDiskMoveCommand("
- "BucketId(0x4000000000000002), source 3, target 2)"),
- msgs[0]->toString());
- EXPECT_EQ(
- std::string("BucketDiskMoveCommand("
- "BucketId(0x4000000000000001), source 2, target 1)"),
- msgs[1]->toString());
- EXPECT_EQ(
- std::string("BucketDiskMoveCommand("
- "BucketId(0x4000000000000003), source 1, target 0)"),
- msgs[2]->toString());
-
- for (uint32_t i = 0; i < 2; ++i) {
- after->sendUp(std::shared_ptr<api::StorageMessage>(
- ((api::StorageCommand*)msgs[i].get())->
- makeReply().release()));
- }
-
- _bucketMover->tick();
- EXPECT_EQ(0, (int)after->getNumCommands());
-
- _bucketMover->finishCurrentRun();
-}
-
-TEST_F(BucketMoverTest, testMaxPending)
-{
- for (uint32_t i = 1; i < 100; ++i) {
- addBucket(document::BucketId(16, i), 1);
- }
- for (uint32_t i = 101; i < 200; ++i) {
- addBucket(document::BucketId(16, i), 0);
- }
-
- _bucketMover->open();
- _bucketMover->tick();
-
- std::vector<api::StorageMessage::SP> msgs = after->getCommandsOnce();
- // 5 is the max pending default config.
- ASSERT_EQ(5, (int)msgs.size());
-
- after->sendUp(std::shared_ptr<api::StorageMessage>(
- ((api::StorageCommand*)msgs[3].get())->
- makeReply().release()));
-
- _bucketMover->tick();
-
- std::vector<api::StorageMessage::SP> msgs2 = after->getCommandsOnce();
- ASSERT_EQ(1, (int)msgs2.size());
-}
-
-TEST_F(BucketMoverTest, testErrorHandling)
-{
- for (uint32_t i = 1; i < 100; ++i) {
- addBucket(document::BucketId(16, i), 1);
- }
- for (uint32_t i = 101; i < 200; ++i) {
- addBucket(document::BucketId(16, i), 0);
- }
-
- _bucketMover->open();
- _bucketMover->tick();
-
- std::vector<api::StorageMessage::SP> msgs = after->getCommandsOnce();
- // 5 is the max pending default config.
- ASSERT_EQ(5, (int)msgs.size());
-
- BucketDiskMoveCommand& cmd = static_cast<BucketDiskMoveCommand&>(*msgs[0]);
- uint32_t targetDisk = cmd.getDstDisk();
-
- std::unique_ptr<api::StorageReply> reply(cmd.makeReply().release());
- reply->setResult(api::ReturnCode(api::ReturnCode::INTERNAL_FAILURE, "foobar"));
- after->sendUp(std::shared_ptr<api::StorageMessage>(reply.release()));
-
- for (uint32_t i = 1; i < msgs.size(); ++i) {
- after->sendUp(std::shared_ptr<api::StorageMessage>(
- ((api::StorageCommand*)msgs[i].get())->
- makeReply().release()));
- }
-
- _bucketMover->tick();
-
- std::vector<api::StorageMessage::SP> msgs2 = after->getCommandsOnce();
- ASSERT_EQ(5, (int)msgs2.size());
-
- for (uint32_t i = 0; i < msgs2.size(); ++i) {
- BucketDiskMoveCommand& bdm = static_cast<BucketDiskMoveCommand&>(*msgs2[i]);
- EXPECT_NE(bdm.getDstDisk(), targetDisk);
- }
-}
-
-}