summaryrefslogtreecommitdiffstats
path: root/storage/src/tests/frameworkimpl/memory/memorystatusviewertest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'storage/src/tests/frameworkimpl/memory/memorystatusviewertest.cpp')
-rw-r--r--storage/src/tests/frameworkimpl/memory/memorystatusviewertest.cpp170
1 files changed, 0 insertions, 170 deletions
diff --git a/storage/src/tests/frameworkimpl/memory/memorystatusviewertest.cpp b/storage/src/tests/frameworkimpl/memory/memorystatusviewertest.cpp
deleted file mode 100644
index 1ad4b16751d..00000000000
--- a/storage/src/tests/frameworkimpl/memory/memorystatusviewertest.cpp
+++ /dev/null
@@ -1,170 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include <vespa/metrics/metrics.h>
-#include <vespa/metrics/metricmanager.h>
-#include <vespa/storage/frameworkimpl/memory/memorystatusviewer.h>
-#include <vespa/storageframework/defaultimplementation/memory/prioritymemorylogic.h>
-#include <tests/common/teststorageapp.h>
-#include <vespa/vdstestlib/cppunit/macros.h>
-#include <vespa/vespalib/util/exceptions.h>
-#include <boost/lexical_cast.hpp>
-
-namespace storage {
-
-struct MemoryStatusViewerTest : public CppUnit::TestFixture
-{
- static const int maxMemory = 1000;
- std::unique_ptr<TestServiceLayerApp> _node;
- std::unique_ptr<framework::defaultimplementation::MemoryManager> _memMan;
-
- void setUp() override;
-
- void testEmptyState();
- void testSnapshots();
-
- CPPUNIT_TEST_SUITE(MemoryStatusViewerTest);
- CPPUNIT_TEST(testEmptyState);
- CPPUNIT_TEST(testSnapshots);
- CPPUNIT_TEST_SUITE_END();
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(MemoryStatusViewerTest);
-
-void
-MemoryStatusViewerTest::setUp()
-{
- _node.reset(new TestServiceLayerApp(DiskCount(2)));
- framework::defaultimplementation::PriorityMemoryLogic* logic(
- new framework::defaultimplementation::PriorityMemoryLogic(
- _node->getClock(), maxMemory));
- logic->setMinJumpToUpdateMax(1);
- _memMan.reset(new framework::defaultimplementation::MemoryManager(
- framework::defaultimplementation::AllocationLogic::UP(logic)));
-}
-
-void
-MemoryStatusViewerTest::testEmptyState()
-{
- // Add a memory manager, and add a bit of load to it, so it's not
- // totally empty.
- StorageComponent component(_node->getComponentRegister(), "test");
-
- metrics::MetricManager mm;
- MemoryStatusViewer viewer(
- *_memMan, mm, _node->getComponentRegister());
- std::ostringstream actual;
- viewer.reportStatus(actual, framework::HttpUrlPath("/"));
- CPPUNIT_ASSERT_MATCH_REGEX(".*Plotr.LineChart.*", actual.str());
- CPPUNIT_ASSERT_MATCH_REGEX(
- ".*Current: 1970-01-01 00:00:00 Max memory 1000 SnapShot\\(Used 0, w/o cache 0\\).*",
- actual.str());
- CPPUNIT_ASSERT_MATCH_REGEX(
- ".*Last hour: na.*", actual.str());
-}
-
-namespace {
- void waitForProcessedTime(
- const MemoryStatusViewer& viewer, framework::SecondTime time,
- framework::SecondTime timeout = framework::SecondTime(30))
- {
- framework::defaultimplementation::RealClock clock;
- framework::MilliSecTime endTime(
- clock.getTimeInMillis() + timeout.getMillis());
- framework::SecondTime processedTime(0);
- while (clock.getTimeInMillis() < endTime) {
- processedTime = viewer.getProcessedTime();
- if (processedTime >= time) return;
- FastOS_Thread::Sleep(1);
- }
- std::ostringstream ost;
- ost << "Timed out waiting " << timeout << " ms for time " << time
- << " to be processed. Currently time is only processed up to "
- << processedTime;
- throw new vespalib::IllegalStateException(ost.str(), VESPA_STRLOC);
- }
-}
-
-#define ASSERT_MEMORY(output, period, maxmem, used, usedwocache) \
-{ \
- std::string::size_type _pos1_(output.find(period)); \
- std::string::size_type _pos2_(output.find("Max memory", _pos1_)); \
- std::string::size_type _pos3_(output.find("SnapShot", _pos2_)); \
- std::string _maxMemory_(output.substr(_pos2_ + 11, _pos3_ - _pos2_ - 12)); \
- std::string::size_type _pos4_(output.find(",", _pos3_)); \
- std::string _used_(output.substr(_pos3_ + 14, _pos4_ - _pos3_ - 14)); \
- std::string::size_type _pos5_(output.find(")", _pos4_)); \
- std::string _usedwo_(output.substr(_pos4_ + 12, _pos5_ - _pos4_ - 12)); \
- std::ostringstream _failure_; \
- _failure_ << "Wrong match in period " << period << " in output:\n" \
- << output << "\nFor value: "; \
- \
- CPPUNIT_ASSERT_EQUAL_MSG(_failure_.str() + "Max memory", \
- uint64_t(maxmem), boost::lexical_cast<uint64_t>(_maxMemory_)); \
- CPPUNIT_ASSERT_EQUAL_MSG(_failure_.str() + "Used memory", \
- uint64_t(used), boost::lexical_cast<uint64_t>(_used_)); \
- CPPUNIT_ASSERT_EQUAL_MSG(_failure_.str() + "Used memory w/o cache", \
- uint64_t(usedwocache), boost::lexical_cast<uint64_t>(_usedwo_)); \
-}
-
-void
-MemoryStatusViewerTest::testSnapshots()
-{
- // Add a memory manager, and add a bit of load to it, so it's not
- // totally empty.
- StorageComponent component(_node->getComponentRegister(), "test");
- const framework::MemoryAllocationType putAlloc(
- component.getMemoryManager().registerAllocationType(
- framework::MemoryAllocationType("PUT")));
- const framework::MemoryAllocationType getAlloc(
- component.getMemoryManager().registerAllocationType(
- framework::MemoryAllocationType("GET")));
-
- framework::MemoryToken::UP put = _memMan->allocate(putAlloc, 0, 100, 80);
- framework::MemoryToken::UP get = _memMan->allocate(getAlloc, 30, 200, 50);
- framework::MemoryToken::UP get2 = _memMan->allocate(getAlloc, 70, 150, 60);
-
- metrics::MetricManager mm;
- MemoryStatusViewer viewer(*_memMan, mm, _node->getComponentRegister());
-
- _node->getClock().addSecondsToTime(1000);
- viewer.notifyThread();
- waitForProcessedTime(viewer, framework::SecondTime(1000));
-
- std::ostringstream actual;
- viewer.printDebugOutput(actual);
- //std::cerr << actual.str() << "\n";
- ASSERT_MEMORY(actual.str(), "Current", 1000, 450, 450);
- ASSERT_MEMORY(actual.str(), "Last hour", 1000, 450, 450);
- ASSERT_MEMORY(actual.str(), "Last ever", 1000, 450, 450);
-
- put = _memMan->allocate(putAlloc, 0, 50, 80);
- get = _memMan->allocate(getAlloc, 100, 140, 50);
- get2 = _memMan->allocate(getAlloc, 20, 100, 70);
-
- _node->getClock().addSecondsToTime(3600);
- viewer.notifyThread();
- waitForProcessedTime(viewer, framework::SecondTime(4600));
-
- actual.str("");
- viewer.printDebugOutput(actual);
- //std::cerr << actual.str() << "\n";
- ASSERT_MEMORY(actual.str(), "Current", 1000, 290, 290);
- ASSERT_MEMORY(actual.str(), "Last hour", 1000, 540, 540);
- ASSERT_MEMORY(actual.str(), "Last ever", 1000, 540, 540);
-
- get.reset();
-
- _node->getClock().addSecondsToTime(3600);
- viewer.notifyThread();
- waitForProcessedTime(viewer, framework::SecondTime(4600 + 3600));
-
- actual.str("");
- viewer.printDebugOutput(actual);
- //std::cerr << actual.str() << "\n";
- ASSERT_MEMORY(actual.str(), "Current", 1000, 150, 150);
- ASSERT_MEMORY(actual.str(), "Last hour", 1000, 290, 290);
- ASSERT_MEMORY(actual.str(), "Last ever", 1000, 540, 540);
-
-}
-
-} // storage