IVGCVSW-3904 Add more unit tests for send thread with BufferManager
* Add timeout parameter to wait for readable data
* Write all readable data to the profiling connection when ready to read
* Set ready to read when buffer exhaust
* Ensure that readable data get written to profiling connection
before the send thread is stopped
* Add MockWriteProfilingConnection to be able to test WritePacket
* Refactor BufferManager and the unit tests
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: I80ae01bd8d0119a3a3a957069ae8ac521c005a12
diff --git a/src/profiling/test/BufferTests.cpp b/src/profiling/test/BufferTests.cpp
index a2f3c30..7a06843 100644
--- a/src/profiling/test/BufferTests.cpp
+++ b/src/profiling/test/BufferTests.cpp
@@ -130,7 +130,9 @@
unsigned int reservedSize = 0;
// Cannot reserve buffer bigger than maximum buffer size
- BOOST_CHECK_THROW(bufferManager.Reserve(1024, reservedSize), armnn::InvalidArgumentException);
+ auto reservedBuffer = bufferManager.Reserve(1024, reservedSize);
+ BOOST_TEST(reservedSize == 0);
+ BOOST_TEST(!reservedBuffer.get());
}
BOOST_AUTO_TEST_CASE(BufferExhaustionTest)
@@ -144,7 +146,9 @@
BOOST_TEST(packetBuffer.get());
// Cannot reserve buffer when buffer is not available
- BOOST_CHECK_THROW(bufferManager.Reserve(512, reservedSize), BufferExhaustion);
+ auto reservedBuffer = bufferManager.Reserve(512, reservedSize);
+ BOOST_TEST(reservedSize == 0);
+ BOOST_TEST(!reservedBuffer.get());
}
BOOST_AUTO_TEST_CASE(BufferReserveMultipleTest)
@@ -173,7 +177,9 @@
// Cannot reserve when buffer is not available
unsigned int reservedSize3 = 0;
- BOOST_CHECK_THROW(bufferManager.Reserve(512, reservedSize3), BufferExhaustion);
+ auto reservedBuffer = bufferManager.Reserve(512, reservedSize3);
+ BOOST_TEST(reservedSize3 == 0);
+ BOOST_TEST(!reservedBuffer.get());
}
BOOST_AUTO_TEST_CASE(BufferReleaseTest)
@@ -195,7 +201,9 @@
// Cannot reserve when buffer is not available
unsigned int reservedSize2 = 0;
- BOOST_CHECK_THROW(bufferManager.Reserve(512, reservedSize2), BufferExhaustion);
+ auto reservedBuffer = bufferManager.Reserve(512, reservedSize2);
+ BOOST_TEST(reservedSize2 == 0);
+ BOOST_TEST(!reservedBuffer.get());
bufferManager.Release(packetBuffer0);
@@ -222,7 +230,9 @@
BOOST_TEST(packetBuffer1.get());
unsigned int reservedSize2 = 0;
- BOOST_CHECK_THROW(bufferManager.Reserve(512, reservedSize2), BufferExhaustion);
+ auto reservedBuffer = bufferManager.Reserve(512, reservedSize2);
+ BOOST_TEST(reservedSize2 == 0);
+ BOOST_TEST(!reservedBuffer.get());
bufferManager.Commit(packetBuffer0, 256);
@@ -232,7 +242,10 @@
BOOST_TEST(packetBuffer2->GetSize() == 256);
// Buffer not set back to available list after commit
- BOOST_CHECK_THROW(bufferManager.Reserve(512, reservedSize2), BufferExhaustion);
+ unsigned int reservedSize = 0;
+ reservedBuffer = bufferManager.Reserve(512, reservedSize);
+ BOOST_TEST(reservedSize == 0);
+ BOOST_TEST(!reservedBuffer.get());
}
BOOST_AUTO_TEST_CASE(BufferMarkReadTest)
@@ -252,7 +265,9 @@
// Cannot reserve when buffer is not available
unsigned int reservedSize2 = 0;
- BOOST_CHECK_THROW(bufferManager.Reserve(512, reservedSize2), BufferExhaustion);
+ auto reservedBuffer = bufferManager.Reserve(512, reservedSize2);
+ BOOST_TEST(reservedSize2 == 0);
+ BOOST_TEST(!reservedBuffer.get());
bufferManager.Commit(packetBuffer0, 256);
@@ -262,7 +277,9 @@
BOOST_TEST(packetBuffer2->GetSize() == 256);
// Buffer not set back to available list after commit
- BOOST_CHECK_THROW(bufferManager.Reserve(512, reservedSize2), BufferExhaustion);
+ reservedBuffer = bufferManager.Reserve(512, reservedSize2);
+ BOOST_TEST(reservedSize2 == 0);
+ BOOST_TEST(!reservedBuffer.get());
bufferManager.MarkRead(packetBuffer2);