aboutsummaryrefslogtreecommitdiffstats
path: root/storage/src/tests/visiting/visitormanagertest.cpp
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-11-25 18:17:27 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-11-26 00:23:06 +0000
commitee2baa1b001a282bd57318a3f0b8881cdcbc3049 (patch)
treee1bd88266adb509a9ce4006f7d68cbc59db3c295 /storage/src/tests/visiting/visitormanagertest.cpp
parente1584673531bc771fa94731da337ce311b4ff7d1 (diff)
As we have have now removed the expensive Route member we can further compact the message objects.
- Compact StorageMessageAddress to 16 bytes by - using reference to cluster name. - Use small enums for protocol and node type. - Avoid having StorageMessage as separate allocation. - Avoid default values
Diffstat (limited to 'storage/src/tests/visiting/visitormanagertest.cpp')
-rw-r--r--storage/src/tests/visiting/visitormanagertest.cpp60
1 files changed, 22 insertions, 38 deletions
diff --git a/storage/src/tests/visiting/visitormanagertest.cpp b/storage/src/tests/visiting/visitormanagertest.cpp
index 7943790f13d..6b222d3c4ed 100644
--- a/storage/src/tests/visiting/visitormanagertest.cpp
+++ b/storage/src/tests/visiting/visitormanagertest.cpp
@@ -36,7 +36,8 @@ namespace storage {
namespace {
using msg_ptr_vector = std::vector<api::StorageMessage::SP>;
-
+vespalib::string _Storage;
+api::StorageMessageAddress _Address(&_Storage, lib::NodeType::STORAGE, 0);
}
struct VisitorManagerTest : Test {
@@ -101,7 +102,6 @@ VisitorManagerTest::initializeTest()
_top->open();
// Adding some documents so database isn't empty
- api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 0);
std::string content(
"To be, or not to be: that is the question:\n"
"Whether 'tis nobler in the mind to suffer\n"
@@ -152,7 +152,7 @@ VisitorManagerTest::initializeTest()
document::BucketId bid(16, i);
auto cmd = std::make_shared<api::CreateBucketCommand>(makeDocumentBucket(bid));
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
cmd->setSourceIndex(0);
_top->sendDown(cmd);
_top->waitForMessages(1, 60);
@@ -167,7 +167,7 @@ VisitorManagerTest::initializeTest()
document::BucketId bid(16, i);
auto cmd = std::make_shared<api::PutCommand>(makeDocumentBucket(bid), _documents[i], i+1);
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
_top->sendDown(cmd);
_top->waitForMessages(1, 60);
const msg_ptr_vector replies = _top->getRepliesOnce();
@@ -182,13 +182,12 @@ void
VisitorManagerTest::addSomeRemoves(bool removeAll)
{
framework::defaultimplementation::FakeClock clock;
- api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 0);
for (uint32_t i=0; i<docCount; i += (removeAll ? 1 : 4)) {
// Add it to the database
document::BucketId bid(16, i % 10);
auto cmd = std::make_shared<api::RemoveCommand>(
makeDocumentBucket(bid), _documents[i]->getId(), clock.getTimeInMicros().getTime() + docCount + i + 1);
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
_top->sendDown(cmd);
_top->waitForMessages(1, 60);
const msg_ptr_vector replies = _top->getRepliesOnce();
@@ -345,10 +344,9 @@ int getTotalSerializedSize(const std::vector<document::Document::SP>& docs)
TEST_F(VisitorManagerTest, normal_usage) {
ASSERT_NO_FATAL_FAILURE(initializeTest());
- api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 0);
auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "DumpVisitor", "testvis", "");
cmd->addBucketToBeVisited(document::BucketId(16, 3));
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
cmd->setControlDestination("foo/bar");
_top->sendDown(cmd);
std::vector<document::Document::SP > docs;
@@ -369,10 +367,9 @@ TEST_F(VisitorManagerTest, normal_usage) {
TEST_F(VisitorManagerTest, resending) {
ASSERT_NO_FATAL_FAILURE(initializeTest());
- api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 0);
auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "DumpVisitor", "testvis", "");
cmd->addBucketToBeVisited(document::BucketId(16, 3));
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
cmd->setControlDestination("foo/bar");
_top->sendDown(cmd);
std::vector<document::Document::SP > docs;
@@ -416,11 +413,10 @@ TEST_F(VisitorManagerTest, resending) {
TEST_F(VisitorManagerTest, visit_empty_bucket) {
ASSERT_NO_FATAL_FAILURE(initializeTest());
addSomeRemoves(true);
- api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 0);
auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "DumpVisitor", "testvis", "");
cmd->addBucketToBeVisited(document::BucketId(16, 3));
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
_top->sendDown(cmd);
// All data has been replied to, expecting to get a create visitor reply
@@ -429,12 +425,11 @@ TEST_F(VisitorManagerTest, visit_empty_bucket) {
TEST_F(VisitorManagerTest, multi_bucket_visit) {
ASSERT_NO_FATAL_FAILURE(initializeTest());
- api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 0);
auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "DumpVisitor", "testvis", "");
for (uint32_t i=0; i<10; ++i) {
cmd->addBucketToBeVisited(document::BucketId(16, i));
}
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
cmd->setDataDestination("fooclient.0");
_top->sendDown(cmd);
std::vector<document::Document::SP> docs;
@@ -451,10 +446,9 @@ TEST_F(VisitorManagerTest, multi_bucket_visit) {
TEST_F(VisitorManagerTest, no_buckets) {
ASSERT_NO_FATAL_FAILURE(initializeTest());
- api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 0);
auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "DumpVisitor", "testvis", "");
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
_top->sendDown(cmd);
// Should get one reply; a CreateVisitorReply with error since no
@@ -472,9 +466,8 @@ TEST_F(VisitorManagerTest, no_buckets) {
TEST_F(VisitorManagerTest, visit_puts_and_removes) {
ASSERT_NO_FATAL_FAILURE(initializeTest());
addSomeRemoves();
- api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 0);
auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "DumpVisitor", "testvis", "");
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
cmd->setVisitRemoves();
for (uint32_t i=0; i<10; ++i) {
cmd->addBucketToBeVisited(document::BucketId(16, i));
@@ -496,14 +489,13 @@ TEST_F(VisitorManagerTest, visit_puts_and_removes) {
TEST_F(VisitorManagerTest, visit_with_timeframe_and_selection) {
ASSERT_NO_FATAL_FAILURE(initializeTest());
- api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 0);
auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "DumpVisitor", "testvis", "testdoctype1.headerval < 2");
cmd->setFromTime(3);
cmd->setToTime(8);
for (uint32_t i=0; i<10; ++i) {
cmd->addBucketToBeVisited(document::BucketId(16, i));
}
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
_top->sendDown(cmd);
std::vector<document::Document::SP> docs;
std::vector<document::DocumentId> docIds;
@@ -525,7 +517,6 @@ TEST_F(VisitorManagerTest, visit_with_timeframe_and_selection) {
TEST_F(VisitorManagerTest, visit_with_timeframe_and_bogus_selection) {
ASSERT_NO_FATAL_FAILURE(initializeTest());
- api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 0);
auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "DumpVisitor", "testvis",
"DocType(testdoctype1---///---) XXX BAD Field(headerval) < 2");
cmd->setFromTime(3);
@@ -533,7 +524,7 @@ TEST_F(VisitorManagerTest, visit_with_timeframe_and_bogus_selection) {
for (uint32_t i=0; i<10; ++i) {
cmd->addBucketToBeVisited(document::BucketId(16, i));
}
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
_top->sendDown(cmd);
_top->waitForMessages(1, 60);
@@ -566,11 +557,10 @@ TEST_F(VisitorManagerTest, visit_with_timeframe_and_bogus_selection) {
TEST_F(VisitorManagerTest, visitor_callbacks) {
ASSERT_NO_FATAL_FAILURE(initializeTest());
std::ostringstream replydata;
- api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 0);
auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "TestVisitor", "testvis", "");
cmd->addBucketToBeVisited(document::BucketId(16, 3));
cmd->addBucketToBeVisited(document::BucketId(16, 5));
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
_top->sendDown(cmd);
// Wait until we have started the visitor
@@ -607,7 +597,6 @@ TEST_F(VisitorManagerTest, visitor_callbacks) {
TEST_F(VisitorManagerTest, visitor_cleanup) {
ASSERT_NO_FATAL_FAILURE(initializeTest());
- api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 0);
// Start a bunch of invalid visitors
for (uint32_t i=0; i<10; ++i) {
@@ -615,7 +604,7 @@ TEST_F(VisitorManagerTest, visitor_cleanup) {
ost << "testvis" << i;
auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "InvalidVisitor", ost.str(), "");
cmd->addBucketToBeVisited(document::BucketId(16, 3));
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
cmd->setQueueTimeout(0ms);
_top->sendDown(cmd);
_top->waitForMessages(i+1, 60);
@@ -627,7 +616,7 @@ TEST_F(VisitorManagerTest, visitor_cleanup) {
ost << "testvis" << (i + 10);
auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "DumpVisitor", ost.str(), "");
cmd->addBucketToBeVisited(document::BucketId(16, 3));
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
cmd->setQueueTimeout(0ms);
_top->sendDown(cmd);
}
@@ -696,7 +685,7 @@ TEST_F(VisitorManagerTest, visitor_cleanup) {
ost << "testvis" << (i + 24);
auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "DumpVisitor", ost.str(), "");
cmd->addBucketToBeVisited(document::BucketId(16, 3));
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
cmd->setQueueTimeout(0ms);
_top->sendDown(cmd);
}
@@ -723,12 +712,11 @@ TEST_F(VisitorManagerTest, visitor_cleanup) {
TEST_F(VisitorManagerTest, abort_on_failed_visitor_info) {
ASSERT_NO_FATAL_FAILURE(initializeTest());
- api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 0);
{
auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "DumpVisitor", "testvis", "");
cmd->addBucketToBeVisited(document::BucketId(16, 3));
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
cmd->setQueueTimeout(0ms);
_top->sendDown(cmd);
}
@@ -757,13 +745,12 @@ TEST_F(VisitorManagerTest, abort_on_failed_visitor_info) {
TEST_F(VisitorManagerTest, abort_on_field_path_error) {
initializeTest();
- api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 0);
// Use bogus field path to force error to happen
auto cmd = std::make_shared<api::CreateVisitorCommand>(
makeBucketSpace(), "DumpVisitor", "testvis", "testdoctype1.headerval{bogus} == 1234");
cmd->addBucketToBeVisited(document::BucketId(16, 3));
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
cmd->setQueueTimeout(0ms);
_top->sendDown(cmd);
@@ -772,7 +759,6 @@ TEST_F(VisitorManagerTest, abort_on_field_path_error) {
TEST_F(VisitorManagerTest, visitor_queue_timeout) {
ASSERT_NO_FATAL_FAILURE(initializeTest());
- api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 0);
_manager->enforceQueueUsage();
{
@@ -780,7 +766,7 @@ TEST_F(VisitorManagerTest, visitor_queue_timeout) {
auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "DumpVisitor", "testvis", "");
cmd->addBucketToBeVisited(document::BucketId(16, 3));
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
cmd->setQueueTimeout(1ms);
cmd->setTimeout(100 * 1000 * 1000ms);
_top->sendDown(cmd);
@@ -801,11 +787,10 @@ TEST_F(VisitorManagerTest, visitor_queue_timeout) {
TEST_F(VisitorManagerTest, visitor_processing_timeout) {
ASSERT_NO_FATAL_FAILURE(initializeTest());
- api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 0);
auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "DumpVisitor", "testvis", "");
cmd->addBucketToBeVisited(document::BucketId(16, 3));
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
cmd->setQueueTimeout(0ms);
cmd->setTimeout(100ms);
_top->sendDown(cmd);
@@ -827,10 +812,9 @@ api::StorageMessage::Id
sendCreateVisitor(vespalib::duration timeout, DummyStorageLink& top, uint8_t priority = 127) {
std::ostringstream ost;
ost << "testvis" << ++nextVisitor;
- api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 0);
auto cmd = std::make_shared<api::CreateVisitorCommand>(makeBucketSpace(), "DumpVisitor", ost.str(), "");
cmd->addBucketToBeVisited(document::BucketId(16, 3));
- cmd->setAddress(address);
+ cmd->setAddress(_Address);
cmd->setQueueTimeout(timeout);
cmd->setPriority(priority);
top.sendDown(cmd);