gtest tweaks

refactor concurency test conu=sumer thread runner to generate timeouts at excessive attempts (32ms*runlength)
threadsafefreelist reporting augs
scripttest object name conflict resolutions
skip testing platform window creation if no monitor was found
This commit is contained in:
AzaezelX 2023-07-13 17:16:50 -05:00
parent cb766f2878
commit dfd3e65ba4
5 changed files with 32 additions and 24 deletions

View file

@ -91,18 +91,6 @@ public:
ValueRef val = new Value(i, tick);
mDeque.pushBack(val);
}
// WORKAROUND: due to a bug in the Deque, we lose an item, and thus the test will loop forever. We currently
// don't have a timeout solution, so instead push som extra elements just to make sure Consumer
// doesn't get stuck.
for(U32 i = mValues.size(); i < mValues.size() + 5; i++)
{
U32 tick = Platform::getRealMilliseconds();
ValueRef val = new Value(i, tick);
mDeque.pushBack(val);
}
}
};
@ -115,10 +103,27 @@ public:
virtual void run(void*)
{
for(U32 i = 0; i < mValues.size(); i++)
S32 timeOut = mValues.size() * 32;
U32 endTime = Platform::getRealMilliseconds() + timeOut;
for (U32 i = 0; i < mValues.size(); i++)
{
ValueRef value;
while(!mDeque.tryPopFront(value));
bool timedOut = false;
while (!mDeque.tryPopFront(value))
{
if (timeOut && Platform::getRealMilliseconds() >= endTime)
{
timedOut = true;
break;
}
};
ASSERT_FALSE(timedOut)
<< "consumer thread timed out!";
if (timedOut) return;
EXPECT_EQ(i, value->mIndex);
EXPECT_EQ(value->mTick, mValues[i]);
}