From c68590fd4d27a5f69d7740edb7a59449aa9cbb9b Mon Sep 17 00:00:00 2001 From: Niels Sascha Reedijk Date: Sun, 18 Sep 2022 11:26:26 +0100 Subject: [PATCH] Tests: fix unittest build and include BMemoryRingIO shared tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When change 2966 was merged as hrev56269, it was decided to first introduce this in libshared instead of libbe.so. The test was moved accordingly, but not all the code in the unittests was properly updated. This change completes it. Note that the test currently crashes, so it needs more investigation whether that is a test issue or a BMemoryRingIO issue. Fixing this is beyond the scope of this change. Change-Id: I0f61d1dd013da904b3e4545db11fefa9da2da0a2 Reviewed-on: https://review.haiku-os.org/c/haiku/+/5676 Tested-by: Commit checker robot Reviewed-by: Jérôme Duval --- src/tests/kits/shared/MemoryRingIOTest.cpp | 122 +++++++++--------- src/tests/kits/shared/MemoryRingIOTest.h | 7 +- src/tests/kits/shared/SharedTestAddon.cpp | 2 + .../kits/support/SupportKitTestAddon.cpp | 2 - 4 files changed, 68 insertions(+), 65 deletions(-) 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());