diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2009-07-03 11:24:19 (GMT) |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2009-07-03 11:24:19 (GMT) |
commit | d010f184de1fd47ec2766bd7cd3a5dccd3b543e6 (patch) | |
tree | d0e4c04b8882f08c21e7709ffd51c7bbcb510a14 /tests/auto/qobjectrace | |
parent | 19efe6331326567b6530d67509454c500630a3d7 (diff) | |
download | Qt-d010f184de1fd47ec2766bd7cd3a5dccd3b543e6.zip Qt-d010f184de1fd47ec2766bd7cd3a5dccd3b543e6.tar.gz Qt-d010f184de1fd47ec2766bd7cd3a5dccd3b543e6.tar.bz2 |
Symbian fixes to qobjectrace autotest.
Pre-emptively XFailed the panicing cases; should be reverted once
root cause is fixed (see task 257411).
Diffstat (limited to 'tests/auto/qobjectrace')
-rw-r--r-- | tests/auto/qobjectrace/qobjectrace.pro | 2 | ||||
-rw-r--r-- | tests/auto/qobjectrace/tst_qobjectrace.cpp | 31 |
2 files changed, 30 insertions, 3 deletions
diff --git a/tests/auto/qobjectrace/qobjectrace.pro b/tests/auto/qobjectrace/qobjectrace.pro index 3339654..322adff 100644 --- a/tests/auto/qobjectrace/qobjectrace.pro +++ b/tests/auto/qobjectrace/qobjectrace.pro @@ -1,3 +1,5 @@ load(qttest_p4) SOURCES += tst_qobjectrace.cpp QT = core + +TARGET.EPOCHEAPSIZE = 20000000 40000000 diff --git a/tests/auto/qobjectrace/tst_qobjectrace.cpp b/tests/auto/qobjectrace/tst_qobjectrace.cpp index 87fef48..a9b0d8c 100644 --- a/tests/auto/qobjectrace/tst_qobjectrace.cpp +++ b/tests/auto/qobjectrace/tst_qobjectrace.cpp @@ -43,7 +43,10 @@ #include <QtCore> #include <QtTest/QtTest> -enum { OneMinute = 60 * 1000, TwoMinutes = OneMinute * 2 }; +enum { OneMinute = 60 * 1000, + TwoMinutes = OneMinute * 2, + TenMinutes = OneMinute * 10, + TwentyFiveMinutes = OneMinute * 25 }; class tst_QObjectRace: public QObject { @@ -125,6 +128,11 @@ private slots: void tst_QObjectRace::moveToThreadRace() { +#if defined(Q_OS_SYMBIAN) + // ### FIXME: task 257411 - remove xfail once this is fixed + QEXPECT_FAIL("", "Symbian event dispatcher can't handle this kind of race, see task: 257411", Abort); + QVERIFY(false); +#endif RaceObject *object = new RaceObject; enum { ThreadCount = 10 }; @@ -139,6 +147,7 @@ void tst_QObjectRace::moveToThreadRace() for (int i = 0; i < ThreadCount; ++i) threads[i]->start(); QVERIFY(threads[0]->wait(TwoMinutes)); + // the other threads should finish pretty quickly now for (int i = 1; i < ThreadCount; ++i) QVERIFY(threads[i]->wait(30000)); @@ -192,8 +201,24 @@ public: } }; +#if defined(Q_OS_SYMBIAN) +// Symbian needs "a bit" more time +# define EXTRA_THREAD_WAIT TenMinutes +# define MAIN_THREAD_WAIT TwentyFiveMinutes +#else +# define EXTRA_THREAD_WAIT 3000 +# define MAIN_THREAD_WAIT TwoMinutes +#endif + void tst_QObjectRace::destroyRace() { +#if defined(Q_OS_SYMBIAN) && defined(Q_CC_NOKIAX86) + // ### FIXME: task 257411 - remove xfail once this is fixed. + // Oddly enough, this seems to work properly in HW, if given enough time and memory. + QEXPECT_FAIL("", "Symbian event dispatcher can't handle this kind of race on emulator, see task: 257411", Abort); + QVERIFY(false); +#endif + enum { ThreadCount = 10, ObjectCountPerThread = 733, ObjectCount = ThreadCount * ObjectCountPerThread }; @@ -226,10 +251,10 @@ void tst_QObjectRace::destroyRace() for (int i = 0; i < ThreadCount; ++i) threads[i]->start(); - QVERIFY(threads[0]->wait(TwoMinutes)); + QVERIFY(threads[0]->wait(MAIN_THREAD_WAIT)); // the other threads should finish pretty quickly now for (int i = 1; i < ThreadCount; ++i) - QVERIFY(threads[i]->wait(3000)); + QVERIFY(threads[i]->wait(EXTRA_THREAD_WAIT)); for (int i = 0; i < ThreadCount; ++i) delete threads[i]; |