diff --git a/src/tests/kits/shared/MemoryRingIOTest.cpp b/src/tests/kits/shared/MemoryRingIOTest.cpp index f7e7ba81d9..7efe121d96 100644 --- a/src/tests/kits/shared/MemoryRingIOTest.cpp +++ b/src/tests/kits/shared/MemoryRingIOTest.cpp @@ -27,67 +27,6 @@ #define SMALL_PAYLOAD "shorter" -CppUnit::Test* -MemoryRingIOTest::Suite() { - CppUnit::TestSuite* suite = new CppUnit::TestSuite("MemoryRingIOTest"); - BThreadedTestCaller* caller; - - MemoryRingIOTest* big = new MemoryRingIOTest(sizeof(BIG_PAYLOAD)); - caller = new BThreadedTestCaller( - "MemoryRingIOTest: RW threaded, big buffer", big); - caller->addThread("WR", &MemoryRingIOTest::WriteTest); - caller->addThread("RD", &MemoryRingIOTest::ReadTest); - suite->addTest(caller); - - MemoryRingIOTest* full = new MemoryRingIOTest(sizeof(FULL_PAYLOAD)); - caller = new BThreadedTestCaller( - "MemoryRingIOTest: RW threaded, medium buffer", full); - caller->addThread("WR", &MemoryRingIOTest::WriteTest); - caller->addThread("RD", &MemoryRingIOTest::ReadTest); - suite->addTest(caller); - - MemoryRingIOTest* small = new MemoryRingIOTest(sizeof(SMALL_PAYLOAD)); - caller = new BThreadedTestCaller( - "MemoryRingIOTest: RW threaded, small buffer", small); - caller->addThread("WR", &MemoryRingIOTest::WriteTest); - caller->addThread("RD", &MemoryRingIOTest::ReadTest); - suite->addTest(caller); - - MemoryRingIOTest* endWrite = new MemoryRingIOTest(sizeof(FULL_PAYLOAD)); - caller = new BThreadedTestCaller( - "MemoryRingIOTest: RW threaded, reader set end reached on writer wait", - endWrite); - caller->addThread("WR #1", &MemoryRingIOTest::BusyWriterTest); - caller->addThread("WR #2", &MemoryRingIOTest::BusyWriterTest); - caller->addThread("WR #3", &MemoryRingIOTest::BusyWriterTest); - caller->addThread("RD", &MemoryRingIOTest::_DisableWriteOnFullBuffer); - suite->addTest(caller); - - MemoryRingIOTest* endRead = new MemoryRingIOTest(sizeof(FULL_PAYLOAD)); - caller = new BThreadedTestCaller( - "MemoryRingIOTest: RW threaded, writer set end reached on reader wait", - endRead); - caller->addThread("RD #1", &MemoryRingIOTest::BusyReaderTest); - caller->addThread("RD #2", &MemoryRingIOTest::BusyReaderTest); - caller->addThread("RD #3", &MemoryRingIOTest::BusyReaderTest); - caller->addThread("WR", &MemoryRingIOTest::_DisableWriteOnEmptyBuffer); - suite->addTest(caller); - - MemoryRingIOTest* single = new MemoryRingIOTest(0); - suite->addTest(new CppUnit::TestCaller( - "MemoryRingIOTest: RW single threaded with resizing", - &MemoryRingIOTest::ReadWriteSingleTest, single)); - suite->addTest(new CppUnit::TestCaller( - "MemoryRingIOTest: Attempt to truncate buffer", - &MemoryRingIOTest::InvalidResizeTest, single)); - suite->addTest(new CppUnit::TestCaller( - "MemoryRingIOTest: Wait timeout", - &MemoryRingIOTest::TimeoutTest, single)); - - return suite; -} - - static void ReadCheck(BMemoryRingIO& ring, const void* cmp, size_t size) { @@ -221,3 +160,64 @@ MemoryRingIOTest::_DisableWriteOnEmptyBuffer() /* this should unblock the other thread */ fRing.SetWriteDisabled(true); } + + +/* static */ void +MemoryRingIOTest::AddTests(BTestSuite& parent) { + CppUnit::TestSuite* suite = new CppUnit::TestSuite("MemoryRingIOTest"); + BThreadedTestCaller* caller; + + MemoryRingIOTest* big = new MemoryRingIOTest(sizeof(BIG_PAYLOAD)); + caller = new BThreadedTestCaller( + "MemoryRingIOTest: RW threaded, big buffer", big); + caller->addThread("WR", &MemoryRingIOTest::WriteTest); + caller->addThread("RD", &MemoryRingIOTest::ReadTest); + suite->addTest(caller); + + MemoryRingIOTest* full = new MemoryRingIOTest(sizeof(FULL_PAYLOAD)); + caller = new BThreadedTestCaller( + "MemoryRingIOTest: RW threaded, medium buffer", full); + caller->addThread("WR", &MemoryRingIOTest::WriteTest); + caller->addThread("RD", &MemoryRingIOTest::ReadTest); + suite->addTest(caller); + + MemoryRingIOTest* small = new MemoryRingIOTest(sizeof(SMALL_PAYLOAD)); + caller = new BThreadedTestCaller( + "MemoryRingIOTest: RW threaded, small buffer", small); + caller->addThread("WR", &MemoryRingIOTest::WriteTest); + caller->addThread("RD", &MemoryRingIOTest::ReadTest); + suite->addTest(caller); + + MemoryRingIOTest* endWrite = new MemoryRingIOTest(sizeof(FULL_PAYLOAD)); + caller = new BThreadedTestCaller( + "MemoryRingIOTest: RW threaded, reader set end reached on writer wait", + endWrite); + caller->addThread("WR #1", &MemoryRingIOTest::BusyWriterTest); + caller->addThread("WR #2", &MemoryRingIOTest::BusyWriterTest); + caller->addThread("WR #3", &MemoryRingIOTest::BusyWriterTest); + caller->addThread("RD", &MemoryRingIOTest::_DisableWriteOnFullBuffer); + suite->addTest(caller); + + MemoryRingIOTest* endRead = new MemoryRingIOTest(sizeof(FULL_PAYLOAD)); + caller = new BThreadedTestCaller( + "MemoryRingIOTest: RW threaded, writer set end reached on reader wait", + endRead); + caller->addThread("RD #1", &MemoryRingIOTest::BusyReaderTest); + caller->addThread("RD #2", &MemoryRingIOTest::BusyReaderTest); + caller->addThread("RD #3", &MemoryRingIOTest::BusyReaderTest); + caller->addThread("WR", &MemoryRingIOTest::_DisableWriteOnEmptyBuffer); + suite->addTest(caller); + + MemoryRingIOTest* single = new MemoryRingIOTest(0); + suite->addTest(new CppUnit::TestCaller( + "MemoryRingIOTest: RW single threaded with resizing", + &MemoryRingIOTest::ReadWriteSingleTest, single)); + suite->addTest(new CppUnit::TestCaller( + "MemoryRingIOTest: Attempt to truncate buffer", + &MemoryRingIOTest::InvalidResizeTest, single)); + suite->addTest(new CppUnit::TestCaller( + "MemoryRingIOTest: Wait timeout", + &MemoryRingIOTest::TimeoutTest, single)); + + parent.addTest("MemoryRingIOTest", suite); +} diff --git a/src/tests/kits/shared/MemoryRingIOTest.h b/src/tests/kits/shared/MemoryRingIOTest.h index 204ea6d5dd..0cc509db93 100644 --- a/src/tests/kits/shared/MemoryRingIOTest.h +++ b/src/tests/kits/shared/MemoryRingIOTest.h @@ -12,14 +12,14 @@ #include #include +class BTestSuite; + class MemoryRingIOTest : public BThreadedTestCase { public: MemoryRingIOTest(size_t bufferSize) : fRing(bufferSize) {}; - static CppUnit::Test* Suite(); - void WriteTest(); void ReadTest(); void BusyWriterTest(); @@ -28,6 +28,9 @@ public: void InvalidResizeTest(); void TimeoutTest(); + static void AddTests(BTestSuite& parent); + + protected: void _DisableWriteOnFullBuffer(); void _DisableWriteOnEmptyBuffer(); diff --git a/src/tests/kits/shared/SharedTestAddon.cpp b/src/tests/kits/shared/SharedTestAddon.cpp index 2bd70c0be9..654f76d819 100644 --- a/src/tests/kits/shared/SharedTestAddon.cpp +++ b/src/tests/kits/shared/SharedTestAddon.cpp @@ -17,6 +17,7 @@ #include "JsonToMessageTest.h" #include "KeymapTest.h" #include "LRUCacheTest.h" +#include "MemoryRingIOTest.h" BTestSuite* @@ -33,6 +34,7 @@ getTestSuite() JsonToMessageTest::AddTests(*suite); KeymapTest::AddTests(*suite); LRUCacheTest::AddTests(*suite); + MemoryRingIOTest::AddTests(*suite); return suite; } diff --git a/src/tests/kits/support/SupportKitTestAddon.cpp b/src/tests/kits/support/SupportKitTestAddon.cpp index 70bd748cd5..5f614a08fa 100644 --- a/src/tests/kits/support/SupportKitTestAddon.cpp +++ b/src/tests/kits/support/SupportKitTestAddon.cpp @@ -7,7 +7,6 @@ #include "blocker/LockerTest.h" #include "bmemoryio/MemoryIOTest.h" #include "bmemoryio/MallocIOTest.h" -#include "bmemoryio/MemoryRingIOTest.h" #include "bstring/StringTest.h" #include "bblockcache/BlockCacheTest.h" #include "ByteOrderTest.h" @@ -26,7 +25,6 @@ getTestSuite() suite->addTest("BLocker", LockerTestSuite()); suite->addTest("BMemoryIO", MemoryIOTestSuite()); suite->addTest("BMallocIO", MallocIOTestSuite()); - suite->addTest("BMemoryRingIO", MemoryRingIOTest::Suite()); suite->addTest("BString", StringTestSuite()); suite->addTest("BBlockCache", BlockCacheTestSuite()); suite->addTest("ByteOrder", ByteOrderTestSuite());