Index: src/libchcore/Tests/TOverlappedReaderWriterTests.cpp =================================================================== diff -u -N -rb941384e121190b6107f1c99b3233667e3daf4ce -rdcbfdc95eedacd24d8b1d78fa507029ce12a5a63 --- src/libchcore/Tests/TOverlappedReaderWriterTests.cpp (.../TOverlappedReaderWriterTests.cpp) (revision b941384e121190b6107f1c99b3233667e3daf4ce) +++ src/libchcore/Tests/TOverlappedReaderWriterTests.cpp (.../TOverlappedReaderWriterTests.cpp) (revision dcbfdc95eedacd24d8b1d78fa507029ce12a5a63) @@ -1,495 +1,8 @@ #include "stdafx.h" #include "gtest/gtest.h" #include "gmock/gmock.h" -#include "../TOverlappedReaderWriter.h" #include "../TOverlappedDataBuffer.h" #include "../TCoreException.h" #include "../../liblogger/TLogFileData.h" #include "../GTestMacros.h" - -using namespace chcore; - -TEST(TOverlappedReaderWriterTests, DefaultConstructor_SanityTest) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared()); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - - EXPECT_EQ(nullptr, tReaderWriter.GetReader()->GetEmptyBuffer()); - EXPECT_EQ(nullptr, tReaderWriter.GetWriter()->GetWriteBuffer()); - EXPECT_EQ(nullptr, tReaderWriter.GetWriter()->GetFinishedBuffer()); - - EXPECT_NE(nullptr, tReaderWriter.GetReader()->GetEventReadPossibleHandle()); - EXPECT_NE(nullptr, tReaderWriter.GetWriter()->GetEventWritePossibleHandle()); - EXPECT_NE(nullptr, tReaderWriter.GetWriter()->GetEventWriteFinishedHandle()); - - EXPECT_TIMEOUT(tReaderWriter.GetReader()->GetEventReadPossibleHandle()); - EXPECT_TIMEOUT(tReaderWriter.GetWriter()->GetEventWritePossibleHandle()); - EXPECT_TIMEOUT(tReaderWriter.GetWriter()->GetEventWriteFinishedHandle()); - - EXPECT_FALSE(tReaderWriter.GetReader()->IsDataSourceFinished()); -// EXPECT_FALSE(tReaderWriter.IsDataWritingFinished()); - - EXPECT_EQ(0, spBuffers->GetTotalBufferCount()); - EXPECT_EQ(0, spBuffers->GetSingleBufferSize()); -} - -TEST(TOverlappedReaderWriterTests, AllocatingConstructor_SanityTest) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - - EXPECT_NE(nullptr, tReaderWriter.GetReader()->GetEmptyBuffer()); - EXPECT_EQ(nullptr, tReaderWriter.GetWriter()->GetWriteBuffer()); - EXPECT_EQ(nullptr, tReaderWriter.GetWriter()->GetFinishedBuffer()); - - EXPECT_NE(nullptr, tReaderWriter.GetReader()->GetEventReadPossibleHandle()); - EXPECT_NE(nullptr, tReaderWriter.GetWriter()->GetEventWritePossibleHandle()); - EXPECT_NE(nullptr, tReaderWriter.GetWriter()->GetEventWriteFinishedHandle()); - - EXPECT_SIGNALED(tReaderWriter.GetReader()->GetEventReadPossibleHandle()); - EXPECT_TIMEOUT(tReaderWriter.GetWriter()->GetEventWritePossibleHandle()); - EXPECT_TIMEOUT(tReaderWriter.GetWriter()->GetEventWriteFinishedHandle()); - - EXPECT_FALSE(tReaderWriter.GetReader()->IsDataSourceFinished()); -// EXPECT_FALSE(tReaderWriter.IsDataWritingFinished()); -} - -TEST(TOverlappedReaderWriterTests, AllocatingConstructor_CheckBufferSizes) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - TOverlappedDataBuffer* pBuffers[3] = { tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer() }; - - EXPECT_EQ(3, spBuffers->GetTotalBufferCount()); - EXPECT_EQ(32768, spBuffers->GetSingleBufferSize()); - - EXPECT_EQ(32768, pBuffers[0]->GetBufferSize()); - EXPECT_EQ(32768, pBuffers[1]->GetBufferSize()); - EXPECT_EQ(32768, pBuffers[2]->GetBufferSize()); -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// -TEST(TOverlappedReaderWriterTests, ReinitializeBuffer_FailsWithBuffersInUse) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - - tReaderWriter.GetReader()->GetEmptyBuffer(); - - EXPECT_THROW(spBuffers->ReinitializeBuffers(3, 65536), TCoreException); -} - -TEST(TOverlappedReaderWriterTests, ReinitializeBuffer_ZeroLengthBuffers) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - - EXPECT_THROW(spBuffers->ReinitializeBuffers(3, 0), TCoreException); -} - -TEST(TOverlappedReaderWriterTests, ReinitializeBuffer_SameSizeSameCount) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - spBuffers->ReinitializeBuffers(3, 32768); - - TOverlappedDataBuffer* pBuffers[3] = { tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer() }; - - EXPECT_EQ(3, spBuffers->GetTotalBufferCount()); - EXPECT_EQ(32768, spBuffers->GetSingleBufferSize()); - - EXPECT_EQ(32768, pBuffers[0]->GetBufferSize()); - EXPECT_EQ(32768, pBuffers[1]->GetBufferSize()); - EXPECT_EQ(32768, pBuffers[2]->GetBufferSize()); -} - -TEST(TOverlappedReaderWriterTests, ReinitializeBuffer_IncreaseSize) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - spBuffers->ReinitializeBuffers(3, 65536); - - TOverlappedDataBuffer* pBuffers[3] = { tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer() }; - - EXPECT_EQ(3, spBuffers->GetTotalBufferCount()); - EXPECT_EQ(65536, spBuffers->GetSingleBufferSize()); - - EXPECT_EQ(65536, pBuffers[0]->GetBufferSize()); - EXPECT_EQ(65536, pBuffers[1]->GetBufferSize()); - EXPECT_EQ(65536, pBuffers[2]->GetBufferSize()); -} - -TEST(TOverlappedReaderWriterTests, ReinitializeBuffer_DecreaseSize) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 65536)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - spBuffers->ReinitializeBuffers(3, 32768); - - TOverlappedDataBuffer* pBuffers[3] = { tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer() }; - - EXPECT_EQ(3, spBuffers->GetTotalBufferCount()); - EXPECT_EQ(32768, spBuffers->GetSingleBufferSize()); - - EXPECT_EQ(32768, pBuffers[0]->GetBufferSize()); - EXPECT_EQ(32768, pBuffers[1]->GetBufferSize()); - EXPECT_EQ(32768, pBuffers[2]->GetBufferSize()); -} - -TEST(TOverlappedReaderWriterTests, ReinitializeBuffer_IncreaseCount) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - spBuffers->ReinitializeBuffers(5, 32768); - - EXPECT_EQ(5, spBuffers->GetTotalBufferCount()); - EXPECT_EQ(32768, spBuffers->GetSingleBufferSize()); - - TOverlappedDataBuffer* pBuffers[5] = { tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer() }; - - EXPECT_EQ(32768, pBuffers[0]->GetBufferSize()); - EXPECT_EQ(32768, pBuffers[1]->GetBufferSize()); - EXPECT_EQ(32768, pBuffers[2]->GetBufferSize()); - EXPECT_EQ(32768, pBuffers[3]->GetBufferSize()); - EXPECT_EQ(32768, pBuffers[4]->GetBufferSize()); -} - -TEST(TOverlappedReaderWriterTests, ReinitializeBuffer_DecreaseCount) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(5, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - spBuffers->ReinitializeBuffers(3, 32768); - - EXPECT_EQ(3, spBuffers->GetTotalBufferCount()); - EXPECT_EQ(32768, spBuffers->GetSingleBufferSize()); - - TOverlappedDataBuffer* pBuffers[3] = { tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer() }; - - EXPECT_EQ(32768, pBuffers[0]->GetBufferSize()); - EXPECT_EQ(32768, pBuffers[1]->GetBufferSize()); - EXPECT_EQ(32768, pBuffers[2]->GetBufferSize()); -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// -TEST(TOverlappedReaderWriterTests, GetEmptyBuffer) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - - EXPECT_SIGNALED(tReaderWriter.GetReader()->GetEventReadPossibleHandle()); - - EXPECT_NE(nullptr, tReaderWriter.GetReader()->GetEmptyBuffer()); - EXPECT_SIGNALED(tReaderWriter.GetReader()->GetEventReadPossibleHandle()); - - EXPECT_NE(nullptr, tReaderWriter.GetReader()->GetEmptyBuffer()); - EXPECT_SIGNALED(tReaderWriter.GetReader()->GetEventReadPossibleHandle()); - - EXPECT_NE(nullptr, tReaderWriter.GetReader()->GetEmptyBuffer()); - EXPECT_TIMEOUT(tReaderWriter.GetReader()->GetEventReadPossibleHandle()); - - EXPECT_EQ(nullptr, tReaderWriter.GetReader()->GetEmptyBuffer()); -} - -TEST(TOverlappedReaderWriterTests, AddEmptyBuffer) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - - TOverlappedDataBuffer* pBuffers[3] = { tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer() }; - - EXPECT_TIMEOUT(tReaderWriter.GetReader()->GetEventReadPossibleHandle()); - - tReaderWriter.GetReader()->AddEmptyBuffer(pBuffers[0], false); - EXPECT_SIGNALED(tReaderWriter.GetReader()->GetEventReadPossibleHandle()); - - tReaderWriter.GetReader()->AddEmptyBuffer(pBuffers[1], false); - EXPECT_SIGNALED(tReaderWriter.GetReader()->GetEventReadPossibleHandle()); - - tReaderWriter.GetReader()->AddEmptyBuffer(pBuffers[2], false); - EXPECT_SIGNALED(tReaderWriter.GetReader()->GetEventReadPossibleHandle()); -} - -TEST(TOverlappedReaderWriterTests, AddEmptyBuffer_Null) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - - EXPECT_THROW(tReaderWriter.GetReader()->AddEmptyBuffer(nullptr, false), TCoreException); -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// -TEST(TOverlappedReaderWriterTests, AddFullBuffer_GetFullBuffer) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - TOverlappedDataBuffer* pBuffer = tReaderWriter.GetReader()->GetEmptyBuffer(); - - tReaderWriter.GetReader()->AddFullBuffer(pBuffer); - EXPECT_SIGNALED(tReaderWriter.GetWriter()->GetEventWritePossibleHandle()); - - tReaderWriter.GetWriter()->GetWriteBuffer(); - EXPECT_TIMEOUT(tReaderWriter.GetWriter()->GetEventWritePossibleHandle()); -} - -TEST(TOverlappedReaderWriterTests, GetFullBuffer_WrongOrder) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - TOverlappedDataBuffer* pBuffers[3] = { tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer() }; - - tReaderWriter.GetReader()->AddFullBuffer(pBuffers[1]); - EXPECT_EQ(nullptr, tReaderWriter.GetWriter()->GetWriteBuffer()); - - tReaderWriter.GetReader()->AddFullBuffer(pBuffers[2]); - EXPECT_EQ(nullptr, tReaderWriter.GetWriter()->GetWriteBuffer()); - - tReaderWriter.GetReader()->AddFullBuffer(pBuffers[0]); - EXPECT_NE(nullptr, tReaderWriter.GetWriter()->GetWriteBuffer()); -} - -TEST(TOverlappedReaderWriterTests, AddFullBuffer_HandlingSrcEof) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - TOverlappedDataBuffer* pBuffers[3] = { tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer() }; - - pBuffers[1]->SetLastPart(true); - - tReaderWriter.GetReader()->AddFullBuffer(pBuffers[0]); - EXPECT_FALSE(tReaderWriter.GetReader()->IsDataSourceFinished()); - - tReaderWriter.GetReader()->AddFullBuffer(pBuffers[1]); - EXPECT_TRUE(tReaderWriter.GetReader()->IsDataSourceFinished()); -} - -TEST(TOverlappedReaderWriterTests, AddFullBuffer_HandlingDstEof) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - TOverlappedDataBuffer* pBuffers[3] = { tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer() }; - - pBuffers[2]->SetLastPart(true); - - tReaderWriter.GetReader()->AddFullBuffer(pBuffers[0]); - tReaderWriter.GetReader()->AddFullBuffer(pBuffers[1]); - tReaderWriter.GetReader()->AddFullBuffer(pBuffers[2]); - - tReaderWriter.GetWriter()->GetWriteBuffer(); -// EXPECT_FALSE(tReaderWriter.IsDataWritingFinished()); - - tReaderWriter.GetWriter()->GetWriteBuffer(); -// EXPECT_FALSE(tReaderWriter.IsDataWritingFinished()); - - // getting the last buffer (marked as eof) causes setting the data-writing-finished flag - tReaderWriter.GetWriter()->GetWriteBuffer(); -// EXPECT_TRUE(tReaderWriter.IsDataWritingFinished()); -} - -TEST(TOverlappedReaderWriterTests, AddFullBuffer_Null) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - - EXPECT_THROW(tReaderWriter.GetReader()->AddFullBuffer(nullptr), TCoreException); -} - -TEST(TOverlappedReaderWriterTests, AddFullBuffer_SameBufferTwice) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - TOverlappedDataBuffer* pBuffer = tReaderWriter.GetReader()->GetEmptyBuffer(); - - pBuffer->InitForRead(0, 1280); - pBuffer->SetBytesTransferred(1230); - pBuffer->SetStatusCode(0); - - tReaderWriter.GetReader()->AddFullBuffer(pBuffer); - EXPECT_THROW(tReaderWriter.GetReader()->AddFullBuffer(pBuffer), TCoreException); -} - -TEST(TOverlappedReaderWriterTests, GetFullBuffer_AddFullBuffer_OutOfOrder) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - TOverlappedDataBuffer* pBuffers[3] = { tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer() }; - - pBuffers[0]->InitForRead(0, 1000); - pBuffers[0]->SetBytesTransferred(1000); - pBuffers[0]->SetStatusCode(0); - - pBuffers[1]->InitForRead(1000, 1200); - pBuffers[1]->SetBytesTransferred(1200); - pBuffers[1]->SetStatusCode(0); - - pBuffers[2]->InitForRead(2200, 1400); - pBuffers[2]->SetBytesTransferred(800); - pBuffers[2]->SetStatusCode(0); - pBuffers[2]->SetLastPart(true); - - EXPECT_TIMEOUT(tReaderWriter.GetWriter()->GetEventWritePossibleHandle()); - - tReaderWriter.GetReader()->AddFullBuffer(pBuffers[1]); - EXPECT_TIMEOUT(tReaderWriter.GetWriter()->GetEventWritePossibleHandle()); - - tReaderWriter.GetReader()->AddFullBuffer(pBuffers[2]); - EXPECT_TIMEOUT(tReaderWriter.GetWriter()->GetEventWritePossibleHandle()); - - tReaderWriter.GetReader()->AddFullBuffer(pBuffers[0]); - EXPECT_SIGNALED(tReaderWriter.GetWriter()->GetEventWritePossibleHandle()); -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// -TEST(TOverlappedReaderWriterTests, AddFinishedBuffer_OutOfOrder_Signals) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - TOverlappedDataBuffer* pBuffers[3] = { tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer() }; - - pBuffers[0]->InitForRead(0, 1000); - pBuffers[0]->SetBytesTransferred(1000); - pBuffers[0]->SetStatusCode(0); - - pBuffers[1]->InitForRead(1000, 1200); - pBuffers[1]->SetBytesTransferred(1200); - pBuffers[1]->SetStatusCode(0); - - pBuffers[2]->InitForRead(2200, 1400); - pBuffers[2]->SetBytesTransferred(800); - pBuffers[2]->SetStatusCode(0); - pBuffers[2]->SetLastPart(true); - - tReaderWriter.GetWriter()->AddFinishedBuffer(pBuffers[1]); - EXPECT_TIMEOUT(tReaderWriter.GetWriter()->GetEventWriteFinishedHandle()); - tReaderWriter.GetWriter()->AddFinishedBuffer(pBuffers[2]); - EXPECT_TIMEOUT(tReaderWriter.GetWriter()->GetEventWriteFinishedHandle()); - tReaderWriter.GetWriter()->AddFinishedBuffer(pBuffers[0]); - EXPECT_SIGNALED(tReaderWriter.GetWriter()->GetEventWriteFinishedHandle()); -} - -TEST(TOverlappedReaderWriterTests, GetFinishedBuffer_Signals) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - TOverlappedDataBuffer* pBuffers[3] = { tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer() }; - - pBuffers[0]->InitForRead(0, 4096); - pBuffers[0]->SetBytesTransferred(4096); - pBuffers[0]->SetStatusCode(0); - - pBuffers[1]->InitForRead(4096, 4096); - pBuffers[1]->SetBytesTransferred(4096); - pBuffers[1]->SetStatusCode(0); - - pBuffers[2]->InitForRead(8192, 4096); - pBuffers[2]->SetBytesTransferred(800); - pBuffers[2]->SetStatusCode(0); - pBuffers[2]->SetLastPart(true); - - tReaderWriter.GetWriter()->AddFinishedBuffer(pBuffers[1]); - tReaderWriter.GetWriter()->AddFinishedBuffer(pBuffers[2]); - tReaderWriter.GetWriter()->AddFinishedBuffer(pBuffers[0]); - - TOverlappedDataBuffer* pBuffer = tReaderWriter.GetWriter()->GetFinishedBuffer(); - EXPECT_SIGNALED(tReaderWriter.GetWriter()->GetEventWriteFinishedHandle()); - - pBuffer = tReaderWriter.GetWriter()->GetFinishedBuffer(); - EXPECT_SIGNALED(tReaderWriter.GetWriter()->GetEventWriteFinishedHandle()); - - pBuffer = tReaderWriter.GetWriter()->GetFinishedBuffer(); - EXPECT_TIMEOUT(tReaderWriter.GetWriter()->GetEventWriteFinishedHandle()); -} - -TEST(TOverlappedReaderWriterTests, GetFinishedBuffer_WrongOrder) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - TOverlappedDataBuffer* pBuffers[3] = { tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer(), tReaderWriter.GetReader()->GetEmptyBuffer() }; - - pBuffers[0]->InitForRead(0, 1000); - pBuffers[0]->SetBytesTransferred(1000); - pBuffers[0]->SetStatusCode(0); - - pBuffers[1]->InitForRead(1000, 1200); - pBuffers[1]->SetBytesTransferred(1200); - pBuffers[1]->SetStatusCode(0); - - pBuffers[2]->InitForRead(2200, 1400); - pBuffers[2]->SetBytesTransferred(800); - pBuffers[2]->SetStatusCode(0); - pBuffers[2]->SetLastPart(true); - - tReaderWriter.GetWriter()->AddFinishedBuffer(pBuffers[1]); - EXPECT_EQ(nullptr, tReaderWriter.GetWriter()->GetFinishedBuffer()); - - tReaderWriter.GetWriter()->AddFinishedBuffer(pBuffers[2]); - EXPECT_EQ(nullptr, tReaderWriter.GetWriter()->GetFinishedBuffer()); - - tReaderWriter.GetWriter()->AddFinishedBuffer(pBuffers[0]); - EXPECT_NE(nullptr, tReaderWriter.GetWriter()->GetFinishedBuffer()); -} - -TEST(TOverlappedReaderWriterTests, AddFinishedBuffer_Null) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - - EXPECT_THROW(tReaderWriter.GetWriter()->AddFinishedBuffer(nullptr), TCoreException); -} - -TEST(TOverlappedReaderWriterTests, AddFinishedBuffer_SameBufferTwice) -{ - logger::TLogFileDataPtr spLogData(std::make_shared()); - - TOverlappedMemoryPoolPtr spBuffers(std::make_shared(3, 32768)); - TOverlappedReaderWriter tReaderWriter(spLogData, spBuffers, 0, 4096); - TOverlappedDataBuffer* pBuffer = tReaderWriter.GetReader()->GetEmptyBuffer(); - tReaderWriter.GetWriter()->AddFinishedBuffer(pBuffer); - EXPECT_THROW(tReaderWriter.GetWriter()->AddFinishedBuffer(pBuffer), TCoreException); -} +#include "../TOverlappedMemoryPool.h"