diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-11-25 18:17:27 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-11-26 00:23:06 +0000 |
commit | ee2baa1b001a282bd57318a3f0b8881cdcbc3049 (patch) | |
tree | e1bd88266adb509a9ce4006f7d68cbc59db3c295 /storage/src/tests/visiting/visitormanagertest.cpp | |
parent | e1584673531bc771fa94731da337ce311b4ff7d1 (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.cpp | 60 |
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); |