Index: src/libchcore/Tests/TDataBufferManagerTest.cpp =================================================================== diff -u -N -r2e23b5892ef4d4bb1ee2c6cde893004a71a11510 -r2cc200f4b40dedfdebafab18bf07c733be47da8a --- src/libchcore/Tests/TDataBufferManagerTest.cpp (.../TDataBufferManagerTest.cpp) (revision 2e23b5892ef4d4bb1ee2c6cde893004a71a11510) +++ src/libchcore/Tests/TDataBufferManagerTest.cpp (.../TDataBufferManagerTest.cpp) (revision 2cc200f4b40dedfdebafab18bf07c733be47da8a) @@ -3,6 +3,38 @@ #include "gmock/gmock.h" #include "../TDataBuffer.h" +// fixtures +class BasicBufferFixture : public ::testing::Test +{ +protected: + virtual void SetUp() + { + size_t stMaxMemory = 1048034; + + chcore::TDataBufferManager::CheckBufferConfig(stMaxMemory); + tBufferManager.Initialize(stMaxMemory); + } + + chcore::TDataBufferManager tBufferManager; +}; + +class DetailedBufferFixture : public ::testing::Test +{ +protected: + virtual void SetUp() + { + size_t stMaxMemory = 1048034; + size_t stPageSize = 262144; + size_t stBufferSize = 65536; + + chcore::TDataBufferManager::CheckBufferConfig(stMaxMemory, stPageSize, stBufferSize); + + tBufferManager.Initialize(stMaxMemory, stPageSize, stBufferSize); + } + + chcore::TDataBufferManager tBufferManager; +}; + /////////////////////////////////////////////////////////////////////////////// // TSimpleDataBuffer @@ -55,7 +87,7 @@ TEST(TDataBufferManager, CheckBufferConfigExt) { // detailed config - default values - size_t stMaxMem = 0; + size_t stMaxMem(0); size_t stPageSize(0); size_t stChunkSize(0); EXPECT_EQ(chcore::TDataBufferManager::CheckBufferConfig(stMaxMem, stPageSize, stChunkSize), false); @@ -93,22 +125,8 @@ EXPECT_EQ(tBufferManager.GetMaxMemorySize(), chcore::TDataBufferManager::DefaultPageSize); } -class TInitializedBufferManager : public ::testing::Test +TEST_F(BasicBufferFixture, FailedResize) { -protected: - virtual void SetUp() - { - size_t stMaxMemory = 1048034; - - chcore::TDataBufferManager::CheckBufferConfig(stMaxMemory); - tBufferManager.Initialize(stMaxMemory); - } - - chcore::TDataBufferManager tBufferManager; -}; - -TEST_F(TInitializedBufferManager, FailedResize) -{ EXPECT_TRUE(tBufferManager.IsInitialized()); size_t stCurrentMaxSize = tBufferManager.GetMaxMemorySize(); @@ -122,7 +140,7 @@ EXPECT_EQ(stCurrentBufferSize, tBufferManager.GetSimpleBufferSize()); } -TEST_F(TInitializedBufferManager, ResizeToSameSizeWithSimpleBufferChecks) +TEST_F(BasicBufferFixture, ResizeToSameSizeWithSimpleBufferChecks) { EXPECT_TRUE(tBufferManager.IsInitialized()); EXPECT_EQ((tBufferManager.GetMaxMemorySize() / tBufferManager.GetSimpleBufferSize()), tBufferManager.GetCountOfFreeBuffers()); @@ -140,34 +158,8 @@ EXPECT_EQ((tBufferManager.GetMaxMemorySize() / tBufferManager.GetSimpleBufferSize()), tBufferManager.GetCountOfFreeBuffers()); } -class TInitializedBufferManager2 : public ::testing::Test +TEST_F(DetailedBufferFixture, SmallBufferOperations) { -protected: - virtual void SetUp() - { - size_t stMaxMemory = 1048034; - size_t stPageSize = 262144; - size_t stBufferSize = 65536; - - chcore::TDataBufferManager::CheckBufferConfig(stMaxMemory, stPageSize, stBufferSize); - - tBufferManager.Initialize(stMaxMemory, stPageSize, stBufferSize); - } - - chcore::TDataBufferManager tBufferManager; -}; - -TEST_F(TInitializedBufferManager2, SmallBufferOperations) -{ - // verify we get what we wanted to have - EXPECT_TRUE(tBufferManager.IsInitialized()); - EXPECT_EQ(tBufferManager.GetMaxMemorySize(), 1*1024*1024); - EXPECT_EQ(tBufferManager.GetPageSize(), 262144); - EXPECT_EQ(tBufferManager.GetSimpleBufferSize(), 65536); - EXPECT_EQ(tBufferManager.GetRealAllocatedMemorySize(), 262144); // only one page should be allocated at the moment - EXPECT_EQ(tBufferManager.GetCountOfFreeBuffersNA(), 4); - EXPECT_EQ(tBufferManager.GetCountOfFreeBuffers(), 16); - // get a single buffer, check internals chcore::TSimpleDataBuffer tBuffer; EXPECT_TRUE(tBufferManager.GetFreeBuffer(tBuffer)); @@ -179,17 +171,8 @@ EXPECT_EQ(tBufferManager.GetCountOfFreeBuffers(), 15); } -TEST_F(TInitializedBufferManager2, WithoutAdditionalAllocTest) +TEST_F(DetailedBufferFixture, WithoutAdditionalAllocTest) { - // verify we get what we wanted to have - EXPECT_TRUE(tBufferManager.IsInitialized()); - EXPECT_EQ(tBufferManager.GetMaxMemorySize(), 1*1024*1024); - EXPECT_EQ(tBufferManager.GetPageSize(), 262144); - EXPECT_EQ(tBufferManager.GetSimpleBufferSize(), 65536); - EXPECT_EQ(tBufferManager.GetRealAllocatedMemorySize(), 262144); // only one page should be allocated at the moment - EXPECT_EQ(tBufferManager.GetCountOfFreeBuffersNA(), 4); - EXPECT_EQ(tBufferManager.GetCountOfFreeBuffers(), 16); - // do this in separate scope to allow auto-release of buffers at the end { std::vector vBuffers; @@ -209,26 +192,19 @@ EXPECT_TRUE(tBufferManager.HasFreeBuffer()); } + // check that everything was freed EXPECT_EQ(tBufferManager.GetCountOfFreeBuffersNA(), 4); EXPECT_EQ(tBufferManager.GetCountOfFreeBuffers(), 16); EXPECT_EQ(tBufferManager.GetRealAllocatedMemorySize(), 262144); // only one page should be allocated at the moment EXPECT_TRUE(tBufferManager.HasFreeBuffer()); EXPECT_TRUE(tBufferManager.HasFreeBufferNA()); } -TEST_F(TInitializedBufferManager2, FullBufferTest) +TEST_F(DetailedBufferFixture, FullBufferTest) { - // verify we get what we wanted to have - EXPECT_TRUE(tBufferManager.IsInitialized()); - EXPECT_EQ(tBufferManager.GetMaxMemorySize(), 1*1024*1024); - EXPECT_EQ(tBufferManager.GetPageSize(), 262144); - EXPECT_EQ(tBufferManager.GetSimpleBufferSize(), 65536); - EXPECT_EQ(tBufferManager.GetRealAllocatedMemorySize(), 262144); // only one page should be allocated at the moment - EXPECT_EQ(tBufferManager.GetCountOfFreeBuffersNA(), 4); - EXPECT_EQ(tBufferManager.GetCountOfFreeBuffers(), 16); - // do this in separate scope to allow auto-release of buffers at the end { + // retrieve all the buffers that are inside std::vector vBuffers; for(size_t stIndex = 0; stIndex < 16; ++stIndex) { @@ -238,34 +214,28 @@ vBuffers.push_back(spBuf); } + // ensure everything was taken EXPECT_EQ(tBufferManager.GetCountOfFreeBuffersNA(), 0); EXPECT_EQ(tBufferManager.GetCountOfFreeBuffers(), 0); EXPECT_EQ(tBufferManager.GetRealAllocatedMemorySize(), 1024*1024); // only one page should be allocated at the moment EXPECT_FALSE(tBufferManager.HasFreeBufferNA()); EXPECT_FALSE(tBufferManager.HasFreeBuffer()); + // try to get one more buffer chcore::TSimpleDataBuffer tFailBuffer; EXPECT_FALSE(tBufferManager.GetFreeBuffer(tFailBuffer)); } + // ensure everything was freed as expected EXPECT_EQ(tBufferManager.GetCountOfFreeBuffers(), 16); EXPECT_EQ(tBufferManager.GetCountOfFreeBuffersNA(), 16); EXPECT_EQ(tBufferManager.GetRealAllocatedMemorySize(), 1024*1024); // only one page should be allocated at the moment EXPECT_TRUE(tBufferManager.HasFreeBufferNA()); EXPECT_TRUE(tBufferManager.HasFreeBuffer()); } -TEST_F(TInitializedBufferManager2, FullBufferWithResizeTest) +TEST_F(DetailedBufferFixture, FullBufferWithResizeTest) { - // verify we get what we wanted to have - EXPECT_TRUE(tBufferManager.IsInitialized()); - EXPECT_EQ(tBufferManager.GetMaxMemorySize(), 1*1024*1024); - EXPECT_EQ(tBufferManager.GetPageSize(), 262144); - EXPECT_EQ(tBufferManager.GetSimpleBufferSize(), 65536); - EXPECT_EQ(tBufferManager.GetRealAllocatedMemorySize(), 262144); // only one page should be allocated at the moment - EXPECT_EQ(tBufferManager.GetCountOfFreeBuffersNA(), 4); - EXPECT_EQ(tBufferManager.GetCountOfFreeBuffers(), 16); - // do this in separate scope to allow auto-release of buffers at the end { // get all buffers @@ -278,11 +248,7 @@ vBuffers.push_back(spBuf); } - // ensure nothing's left - chcore::TSimpleDataBuffer tFailBuffer; - EXPECT_FALSE(tBufferManager.GetFreeBuffer(tFailBuffer)); - - // now resize to half the size + // now resize to quarter the size size_t stNewSize = 262144; tBufferManager.CheckResizeSize(stNewSize); EXPECT_NO_FATAL_FAILURE(tBufferManager.ChangeMaxMemorySize(stNewSize)); @@ -293,15 +259,16 @@ EXPECT_EQ(tBufferManager.GetRealAllocatedMemorySize(), 1024*1024); // only one page should be allocated at the moment EXPECT_FALSE(tBufferManager.HasFreeBufferNA()); EXPECT_FALSE(tBufferManager.HasFreeBuffer()); - EXPECT_EQ(tBufferManager.GetMaxMemorySize(), 256*1024); + EXPECT_EQ(tBufferManager.GetMaxMemorySize(), 256*1024); // only a single page is available - // get rid of the small buffers (except one) + // get rid of the small buffers (except for one) for(size_t stIndex = 0; stIndex < 15; ++stIndex) { vBuffers.erase(vBuffers.end() - 1); } - // now only two pages should be left in buffer manage EXPECT_EQ(tBufferManager.GetCountOfFreeBuffers(), 3); + // now only one page should be left + EXPECT_EQ(tBufferManager.GetCountOfFreeBuffers(), 3); EXPECT_EQ(tBufferManager.GetCountOfFreeBuffersNA(), 3); EXPECT_EQ(tBufferManager.GetRealAllocatedMemorySize(), 256*1024); // only one page should be allocated at the moment EXPECT_TRUE(tBufferManager.HasFreeBufferNA());