diff options
author | Tor Brede Vekterli <vekterli@oath.com> | 2018-04-13 13:57:34 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@oath.com> | 2018-04-13 14:28:47 +0000 |
commit | 4686a565d3ed12334260502c9aaedb15e5f0114c (patch) | |
tree | eb670725eb24fbc9a9be3fcb61c267e86c93abd1 /storage/src/tests | |
parent | 0946f06ad072f84d552eeaef7b36c74f5575435a (diff) |
Add request size metric for Put, Update, Remove and Get commands
Request size is approximated by the network payload size for the commands.
Diffstat (limited to 'storage/src/tests')
-rw-r--r-- | storage/src/tests/persistence/filestorage/filestormanagertest.cpp | 76 |
1 files changed, 75 insertions, 1 deletions
diff --git a/storage/src/tests/persistence/filestorage/filestormanagertest.cpp b/storage/src/tests/persistence/filestorage/filestormanagertest.cpp index 3bdc622aa66..838df87662f 100644 --- a/storage/src/tests/persistence/filestorage/filestormanagertest.cpp +++ b/storage/src/tests/persistence/filestorage/filestormanagertest.cpp @@ -48,7 +48,11 @@ try{ \ namespace storage { namespace { - spi::LoadType defaultLoadType(0, "default"); + +spi::LoadType defaultLoadType(0, "default"); + +struct TestFileStorComponents; + } struct FileStorManagerTest : public CppUnit::TestFixture { @@ -97,6 +101,10 @@ struct FileStorManagerTest : public CppUnit::TestFixture { void testStateChange(); void testRepairNotifiesDistributorOnChange(); void testDiskMove(); + void put_command_size_is_added_to_metric(); + void update_command_size_is_added_to_metric(); + void remove_command_size_is_added_to_metric(); + void get_command_size_is_added_to_metric(); CPPUNIT_TEST_SUITE(FileStorManagerTest); CPPUNIT_TEST(testPut); @@ -131,6 +139,10 @@ struct FileStorManagerTest : public CppUnit::TestFixture { CPPUNIT_TEST(testStateChange); CPPUNIT_TEST(testRepairNotifiesDistributorOnChange); CPPUNIT_TEST(testDiskMove); + CPPUNIT_TEST(put_command_size_is_added_to_metric); + CPPUNIT_TEST(update_command_size_is_added_to_metric); + CPPUNIT_TEST(remove_command_size_is_added_to_metric); + CPPUNIT_TEST(get_command_size_is_added_to_metric); CPPUNIT_TEST_SUITE_END(); void createBucket(document::BucketId bid, uint16_t disk) @@ -215,6 +227,15 @@ struct FileStorManagerTest : public CppUnit::TestFixture { FileStorHandler& filestorHandler, const document::BucketId& bucket, uint32_t docNum); + + template <typename Metric> + void assert_request_size_set(TestFileStorComponents& c, + std::shared_ptr<api::StorageMessage> cmd, + const Metric& metric); + + auto& thread_metrics_of(FileStorManager& manager) { + return manager._metrics->disks[0]->threads[0]; + } }; CPPUNIT_TEST_SUITE_REGISTRATION(FileStorManagerTest); @@ -2679,4 +2700,57 @@ FileStorManagerTest::testCreateBucketSetsActiveFlagInDatabaseAndReply() } } +template <typename Metric> +void FileStorManagerTest::assert_request_size_set(TestFileStorComponents& c, std::shared_ptr<api::StorageMessage> cmd, const Metric& metric) { + api::StorageMessageAddress address("storage", lib::NodeType::STORAGE, 3); + cmd->setApproxByteSize(54321); + cmd->setAddress(address); + c.top.sendDown(cmd); + c.top.waitForMessages(1, _waitTime); + CPPUNIT_ASSERT_EQUAL(static_cast<int64_t>(cmd->getApproxByteSize()), metric.request_size.getLast()); +} + +void FileStorManagerTest::put_command_size_is_added_to_metric() { + TestFileStorComponents c(*this, "put_command_size_is_added_to_metric"); + document::BucketId bucket(16, 4000); + createBucket(bucket, 0); + auto cmd = std::make_shared<api::PutCommand>( + makeDocumentBucket(bucket), _node->getTestDocMan().createRandomDocument(), api::Timestamp(12345)); + + assert_request_size_set(c, std::move(cmd), thread_metrics_of(*c.manager)->put[defaultLoadType]); +} + +void FileStorManagerTest::update_command_size_is_added_to_metric() { + TestFileStorComponents c(*this, "update_command_size_is_added_to_metric"); + document::BucketId bucket(16, 4000); + createBucket(bucket, 0); + auto update = std::make_shared<document::DocumentUpdate>( + _node->getTestDocMan().createRandomDocument()->getType(), + document::DocumentId("id:foo:testdoctype1::bar")); + auto cmd = std::make_shared<api::UpdateCommand>( + makeDocumentBucket(bucket), std::move(update), api::Timestamp(123456)); + + assert_request_size_set(c, std::move(cmd), thread_metrics_of(*c.manager)->update[defaultLoadType]); +} + +void FileStorManagerTest::remove_command_size_is_added_to_metric() { + TestFileStorComponents c(*this, "remove_command_size_is_added_to_metric"); + document::BucketId bucket(16, 4000); + createBucket(bucket, 0); + auto cmd = std::make_shared<api::RemoveCommand>( + makeDocumentBucket(bucket), document::DocumentId("id:foo:testdoctype1::bar"), api::Timestamp(123456)); + + assert_request_size_set(c, std::move(cmd), thread_metrics_of(*c.manager)->remove[defaultLoadType]); +} + +void FileStorManagerTest::get_command_size_is_added_to_metric() { + TestFileStorComponents c(*this, "get_command_size_is_added_to_metric"); + document::BucketId bucket(16, 4000); + createBucket(bucket, 0); + auto cmd = std::make_shared<api::GetCommand>( + makeDocumentBucket(bucket), document::DocumentId("id:foo:testdoctype1::bar"), "[all]"); + + assert_request_size_set(c, std::move(cmd), thread_metrics_of(*c.manager)->get[defaultLoadType]); +} + } // storage |