Tests: fix unittest build and include BMemoryRingIO shared tests

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 <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
This commit is contained in:
Niels Sascha Reedijk
2022-09-18 14:11:06 +00:00
parent 98dea60252
commit c68590fd4d
4 changed files with 68 additions and 65 deletions
+61 -61
View File
@@ -27,67 +27,6 @@
#define SMALL_PAYLOAD "shorter"
CppUnit::Test*
MemoryRingIOTest::Suite() {
CppUnit::TestSuite* suite = new CppUnit::TestSuite("MemoryRingIOTest");
BThreadedTestCaller<MemoryRingIOTest>* caller;
MemoryRingIOTest* big = new MemoryRingIOTest(sizeof(BIG_PAYLOAD));
caller = new BThreadedTestCaller<MemoryRingIOTest>(
"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>(
"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>(
"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>(
"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>(
"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>(
"MemoryRingIOTest: RW single threaded with resizing",
&MemoryRingIOTest::ReadWriteSingleTest, single));
suite->addTest(new CppUnit::TestCaller<MemoryRingIOTest>(
"MemoryRingIOTest: Attempt to truncate buffer",
&MemoryRingIOTest::InvalidResizeTest, single));
suite->addTest(new CppUnit::TestCaller<MemoryRingIOTest>(
"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<MemoryRingIOTest>* caller;
MemoryRingIOTest* big = new MemoryRingIOTest(sizeof(BIG_PAYLOAD));
caller = new BThreadedTestCaller<MemoryRingIOTest>(
"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>(
"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>(
"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>(
"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>(
"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>(
"MemoryRingIOTest: RW single threaded with resizing",
&MemoryRingIOTest::ReadWriteSingleTest, single));
suite->addTest(new CppUnit::TestCaller<MemoryRingIOTest>(
"MemoryRingIOTest: Attempt to truncate buffer",
&MemoryRingIOTest::InvalidResizeTest, single));
suite->addTest(new CppUnit::TestCaller<MemoryRingIOTest>(
"MemoryRingIOTest: Wait timeout",
&MemoryRingIOTest::TimeoutTest, single));
parent.addTest("MemoryRingIOTest", suite);
}
+5 -2
View File
@@ -12,14 +12,14 @@
#include <ThreadedTestCase.h>
#include <MemoryRingIO.h>
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();
@@ -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;
}
@@ -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());