summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/thread
diff options
context:
space:
mode:
authorJason McDonald <jason.mcdonald@nokia.com>2011-11-24 17:34:51 +1000
committerQt by Nokia <qt-info@nokia.com>2011-11-25 07:56:16 +0100
commite08410ab8db3d7cabf4ef2fc4de40bb6da6d6fef (patch)
tree9d6e154364039ab6cbc7a789ef33b7e0ce038e51 /tests/auto/corelib/thread
parent489a39aacc102e46a5b3fffd5839ed694bb7214f (diff)
Cleanup corelib autotests
Bug trackers come and go, so using bug identifiers in function and test case names will ensure that those names eventually become meaningless. It is better to choose a meaningful name and provide explanatory comments where appropriate. Change-Id: I67c27782ef21b5d4eaab4854079a043c8ef6957b Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
Diffstat (limited to 'tests/auto/corelib/thread')
-rw-r--r--tests/auto/corelib/thread/qmutex/tst_qmutex.cpp29
-rw-r--r--tests/auto/corelib/thread/qthread/tst_qthread.cpp8
-rw-r--r--tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp58
3 files changed, 49 insertions, 46 deletions
diff --git a/tests/auto/corelib/thread/qmutex/tst_qmutex.cpp b/tests/auto/corelib/thread/qmutex/tst_qmutex.cpp
index 82b0c98522..d70dea5e57 100644
--- a/tests/auto/corelib/thread/qmutex/tst_qmutex.cpp
+++ b/tests/auto/corelib/thread/qmutex/tst_qmutex.cpp
@@ -59,7 +59,7 @@ private slots:
void lock_unlock_locked_tryLock();
void stressTest();
void tryLockRace();
- void qtbug16115_trylock();
+ void tryLockDeadlock();
void moreStress();
};
@@ -510,14 +510,17 @@ void tst_QMutex::tryLockRace()
TryLockRaceThread::mutex.unlock();
}
+// The following is a regression test for QTBUG-16115, where QMutex could
+// deadlock after calling tryLock repeatedly.
+
// 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;
+static volatile int tryLockDeadlockCounter;
// Counter for how many times the protected variable has an incorrect value.
-static int qtbug16115_failure_count = 0;
+static int tryLockDeadlockFailureCount = 0;
-void tst_QMutex::qtbug16115_trylock()
+void tst_QMutex::tryLockDeadlock()
{
//Used to deadlock on unix
struct TrylockThread : QThread {
@@ -526,10 +529,10 @@ void tst_QMutex::qtbug16115_trylock()
void run() {
for (int i = 0; i < 100000; ++i) {
if (mut.tryLock(0)) {
- if ((++qtbug16115_trylock_counter) != 1)
- ++qtbug16115_failure_count;
- if ((--qtbug16115_trylock_counter) != 0)
- ++qtbug16115_failure_count;
+ if ((++tryLockDeadlockCounter) != 1)
+ ++tryLockDeadlockFailureCount;
+ if ((--tryLockDeadlockCounter) != 0)
+ ++tryLockDeadlockFailureCount;
mut.unlock();
}
}
@@ -545,16 +548,16 @@ void tst_QMutex::qtbug16115_trylock()
for (int i = 0; i < 100000; ++i) {
mut.lock();
- if ((++qtbug16115_trylock_counter) != 1)
- ++qtbug16115_failure_count;
- if ((--qtbug16115_trylock_counter) != 0)
- ++qtbug16115_failure_count;
+ if ((++tryLockDeadlockCounter) != 1)
+ ++tryLockDeadlockFailureCount;
+ if ((--tryLockDeadlockCounter) != 0)
+ ++tryLockDeadlockFailureCount;
mut.unlock();
}
t1.wait();
t2.wait();
t3.wait();
- QCOMPARE(qtbug16115_failure_count, 0);
+ QCOMPARE(tryLockDeadlockFailureCount, 0);
}
diff --git a/tests/auto/corelib/thread/qthread/tst_qthread.cpp b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
index 540f4b3d1e..42a64ef427 100644
--- a/tests/auto/corelib/thread/qthread/tst_qthread.cpp
+++ b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
@@ -96,8 +96,8 @@ private slots:
void adoptMultipleThreads();
void adoptMultipleThreadsOverlap();
- void QTBUG13810_exitAndStart();
- void QTBUG15378_exitAndExec();
+ void exitAndStart();
+ void exitAndExec();
void connectThreadFinishedSignalToObjectDeleteLaterSlot();
void wait2();
@@ -980,7 +980,7 @@ public:
int m_prop;
};
-void tst_QThread::QTBUG13810_exitAndStart()
+void tst_QThread::exitAndStart()
{
QThread thread;
thread.exit(555); //should do nothing
@@ -1002,7 +1002,7 @@ void tst_QThread::QTBUG13810_exitAndStart()
QCOMPARE(sync1.m_prop, 89);
}
-void tst_QThread::QTBUG15378_exitAndExec()
+void tst_QThread::exitAndExec()
{
class Thread : public QThread {
public:
diff --git a/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp b/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp
index 5858cd98bb..ceb74b3849 100644
--- a/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp
+++ b/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp
@@ -71,9 +71,9 @@ private slots:
void autoDelete();
void adoptedThreads();
void ensureCleanupOrder();
- void QTBUG13877_crashOnExit();
- void QTBUG14579_leakInDestructor();
- void QTBUG14579_resetInDestructor();
+ void crashOnExit();
+ void leakInDestructor();
+ void resetInDestructor();
void valueBased();
};
@@ -288,7 +288,7 @@ void tst_QThreadStorage::ensureCleanupOrder()
QVERIFY(First::order < Second::order);
}
-void tst_QThreadStorage::QTBUG13877_crashOnExit()
+void tst_QThreadStorage::crashOnExit()
{
QProcess process;
#ifdef Q_OS_WIN
@@ -315,45 +315,45 @@ public:
};
QBasicAtomicInt SPointer::count = Q_BASIC_ATOMIC_INITIALIZER(0);
-Q_GLOBAL_STATIC(QThreadStorage<SPointer *>, QTBUG14579_pointers1)
-Q_GLOBAL_STATIC(QThreadStorage<SPointer *>, QTBUG14579_pointers2)
+Q_GLOBAL_STATIC(QThreadStorage<SPointer *>, threadStoragePointers1)
+Q_GLOBAL_STATIC(QThreadStorage<SPointer *>, threadStoragePointers2)
-class QTBUG14579_class
+class ThreadStorageLocalDataTester
{
public:
SPointer member;
- inline ~QTBUG14579_class() {
- QVERIFY(!QTBUG14579_pointers1()->hasLocalData());
- QVERIFY(!QTBUG14579_pointers2()->hasLocalData());
- QTBUG14579_pointers2()->setLocalData(new SPointer);
- QTBUG14579_pointers1()->setLocalData(new SPointer);
- QVERIFY(QTBUG14579_pointers1()->hasLocalData());
- QVERIFY(QTBUG14579_pointers2()->hasLocalData());
+ inline ~ThreadStorageLocalDataTester() {
+ QVERIFY(!threadStoragePointers1()->hasLocalData());
+ QVERIFY(!threadStoragePointers2()->hasLocalData());
+ threadStoragePointers2()->setLocalData(new SPointer);
+ threadStoragePointers1()->setLocalData(new SPointer);
+ QVERIFY(threadStoragePointers1()->hasLocalData());
+ QVERIFY(threadStoragePointers2()->hasLocalData());
}
};
-void tst_QThreadStorage::QTBUG14579_leakInDestructor()
+void tst_QThreadStorage::leakInDestructor()
{
class Thread : public QThread
{
public:
- QThreadStorage<QTBUG14579_class *> &tls;
+ QThreadStorage<ThreadStorageLocalDataTester *> &tls;
- Thread(QThreadStorage<QTBUG14579_class *> &t) : tls(t) { }
+ Thread(QThreadStorage<ThreadStorageLocalDataTester *> &t) : tls(t) { }
void run()
{
QVERIFY(!tls.hasLocalData());
- tls.setLocalData(new QTBUG14579_class);
+ tls.setLocalData(new ThreadStorageLocalDataTester);
QVERIFY(tls.hasLocalData());
}
};
int c = SPointer::count.load();
- QThreadStorage<QTBUG14579_class *> tls;
+ QThreadStorage<ThreadStorageLocalDataTester *> tls;
- QVERIFY(!QTBUG14579_pointers1()->hasLocalData());
+ QVERIFY(!threadStoragePointers1()->hasLocalData());
QThreadStorage<int *> tls2; //add some more tls to make sure ids are not following each other too much
QThreadStorage<int *> tls3;
QVERIFY(!tls2.hasLocalData());
@@ -376,29 +376,29 @@ void tst_QThreadStorage::QTBUG14579_leakInDestructor()
QCOMPARE(int(SPointer::count.load()), c);
}
-class QTBUG14579_reset {
+class ThreadStorageResetLocalDataTester {
public:
SPointer member;
- ~QTBUG14579_reset();
+ ~ThreadStorageResetLocalDataTester();
};
-Q_GLOBAL_STATIC(QThreadStorage<QTBUG14579_reset *>, QTBUG14579_resetTls)
+Q_GLOBAL_STATIC(QThreadStorage<ThreadStorageResetLocalDataTester *>, ThreadStorageResetLocalDataTesterTls)
-QTBUG14579_reset::~QTBUG14579_reset() {
+ThreadStorageResetLocalDataTester::~ThreadStorageResetLocalDataTester() {
//Quite stupid, but WTF::ThreadSpecific<T>::destroy does it.
- QTBUG14579_resetTls()->setLocalData(this);
+ ThreadStorageResetLocalDataTesterTls()->setLocalData(this);
}
-void tst_QThreadStorage::QTBUG14579_resetInDestructor()
+void tst_QThreadStorage::resetInDestructor()
{
class Thread : public QThread
{
public:
void run()
{
- QVERIFY(!QTBUG14579_resetTls()->hasLocalData());
- QTBUG14579_resetTls()->setLocalData(new QTBUG14579_reset);
- QVERIFY(QTBUG14579_resetTls()->hasLocalData());
+ QVERIFY(!ThreadStorageResetLocalDataTesterTls()->hasLocalData());
+ ThreadStorageResetLocalDataTesterTls()->setLocalData(new ThreadStorageResetLocalDataTester);
+ QVERIFY(ThreadStorageResetLocalDataTesterTls()->hasLocalData());
}
};
int c = SPointer::count.load();