Remove Q_ASSERT from QMutex autotest
Rather than aborting in debug mode and doing nothing in release mode when the invariant is violated, count the failures and fail the test gracefully. Change-Id: Ie193460c478ddde540b6b15aafdce32f471b4b2b Task-number: QTBUG-17582 Reviewed-by: Rohan McGovern (cherry picked from commit f18e0e01468899731bc3777649d69fd6d0041012)
This commit is contained in:
parent
83fcb8023a
commit
3aa7455eab
@ -534,7 +534,12 @@ void tst_QMutex::tryLockRace()
|
||||
TryLockRaceThread::mutex.unlock();
|
||||
}
|
||||
|
||||
// Variable that will be protected by the mutex. Volatile so that the
|
||||
// the optimiser doesn't mess with it based on the increment-then-decrement
|
||||
// usage pattern.
|
||||
static volatile int qtbug16115_trylock_counter;
|
||||
// Counter for how many times the protected variable has an incorrect value.
|
||||
static int qtbug16115_failure_count = 0;
|
||||
|
||||
void tst_QMutex::qtbug16115_trylock()
|
||||
{
|
||||
@ -545,8 +550,10 @@ void tst_QMutex::qtbug16115_trylock()
|
||||
void run() {
|
||||
for (int i = 0; i < 1000000; ++i) {
|
||||
if (mut.tryLock(0)) {
|
||||
Q_ASSERT((++qtbug16115_trylock_counter) == 1);
|
||||
Q_ASSERT((--qtbug16115_trylock_counter) == 0);
|
||||
if ((++qtbug16115_trylock_counter) != 1)
|
||||
++qtbug16115_failure_count;
|
||||
if ((--qtbug16115_trylock_counter) != 0)
|
||||
++qtbug16115_failure_count;
|
||||
mut.unlock();
|
||||
}
|
||||
}
|
||||
@ -562,13 +569,16 @@ void tst_QMutex::qtbug16115_trylock()
|
||||
|
||||
for (int i = 0; i < 1000000; ++i) {
|
||||
mut.lock();
|
||||
Q_ASSERT((++qtbug16115_trylock_counter) == 1);
|
||||
Q_ASSERT((--qtbug16115_trylock_counter) == 0);
|
||||
if ((++qtbug16115_trylock_counter) != 1)
|
||||
++qtbug16115_failure_count;
|
||||
if ((--qtbug16115_trylock_counter) != 0)
|
||||
++qtbug16115_failure_count;
|
||||
mut.unlock();
|
||||
}
|
||||
t1.wait();
|
||||
t2.wait();
|
||||
t3.wait();
|
||||
QCOMPARE(qtbug16115_failure_count, 0);
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QMutex)
|
||||
|
Loading…
Reference in New Issue
Block a user