diff options
author | Rohan McGovern <rohan.mcgovern@nokia.com> | 2012-05-31 13:02:17 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-31 05:37:28 +0200 |
commit | b63e101a90b677dcb192214aef35a107620c5f3c (patch) | |
tree | e3e2cd01ce6c3978c82bd81334f4810f6d486afd /tests | |
parent | c09b5f5ad869e97f0b1eac93ca79d472a0405294 (diff) |
Make tst_qnetworkdiskcache parallel-safe
Use a QTemporaryDir for a unique test cache directory for each process,
rather than a fixed path.
Change-Id: I64df8422d01282bbc108e942947c1b55368bd941
Reviewed-by: Toby Tomkins <toby.tomkins@nokia.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/network/access/qnetworkdiskcache/qnetworkdiskcache.pro | 1 | ||||
-rw-r--r-- | tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp | 60 |
2 files changed, 35 insertions, 26 deletions
diff --git a/tests/auto/network/access/qnetworkdiskcache/qnetworkdiskcache.pro b/tests/auto/network/access/qnetworkdiskcache/qnetworkdiskcache.pro index f1a75e7ed6..cb773ab0f1 100644 --- a/tests/auto/network/access/qnetworkdiskcache/qnetworkdiskcache.pro +++ b/tests/auto/network/access/qnetworkdiskcache/qnetworkdiskcache.pro @@ -1,4 +1,5 @@ CONFIG += testcase +CONFIG += parallel_test TARGET = tst_qnetworkdiskcache QT -= gui QT += network testlib diff --git a/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp b/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp index 8a3c52cf72..af26802124 100644 --- a/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp +++ b/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp @@ -51,6 +51,9 @@ class tst_QNetworkDiskCache : public QObject { Q_OBJECT +public: + tst_QNetworkDiskCache(); + public slots: void initTestCase(); void cleanupTestCase(); @@ -80,6 +83,9 @@ private slots: void sync(); void crashWhenParentingCache(); + +private: + QTemporaryDir tempDir; }; // FIXME same as in tst_qnetworkreply.cpp .. could be unified @@ -146,9 +152,9 @@ public: qint64 call_expire() { return SubQNetworkDiskCache::expire(); } - void setupWithOne(const QUrl &url, const QNetworkCacheMetaData &metaData = QNetworkCacheMetaData()) + void setupWithOne(const QString &path, const QUrl &url, const QNetworkCacheMetaData &metaData = QNetworkCacheMetaData()) { - setCacheDirectory(QDir::tempPath() + "/diskCache"); + setCacheDirectory(path); QIODevice *d = 0; if (metaData.isValid()) { @@ -167,19 +173,19 @@ public: } }; +tst_QNetworkDiskCache::tst_QNetworkDiskCache() + : tempDir(QDir::tempPath() + "/tst_qnetworkdiskcache.XXXXXX") +{ +} + // This will be called before the first test function is executed. // It is only called once. void tst_QNetworkDiskCache::initTestCase() { + QVERIFY(tempDir.isValid()); + SubQNetworkDiskCache cache; - cache.setCacheDirectory(QDir::tempPath() + "/diskCache"); - cache.clear(); - QString s = QDir::tempPath() + "/diskCache/"; - QDir dir; - dir.rmdir(s + "data7"); // the number is the internal cache version - dir.rmdir(s + "prepared"); - dir.rmdir(s); - dir.rmdir(s + "http"); // delete directory used by 4.7 and earlier (would make the tests fail) + cache.setCacheDirectory(tempDir.path()); } // This will be called after the last test function is executed. @@ -226,14 +232,14 @@ void tst_QNetworkDiskCache::qnetworkdiskcache() QNetworkCacheMetaData metaData; metaData.setUrl(url); badCache.prepare(metaData); - badCache.setCacheDirectory(QDir::tempPath() + "/diskCache"); + badCache.setCacheDirectory(tempDir.path()); badCache.prepare(metaData); } void tst_QNetworkDiskCache::prepare() { SubQNetworkDiskCache cache; - cache.setCacheDirectory(QDir::tempPath() + "/diskCache"); + cache.setCacheDirectory(tempDir.path()); QUrl url(EXAMPLE_URL); QNetworkCacheMetaData metaData; @@ -247,7 +253,7 @@ void tst_QNetworkDiskCache::prepare() void tst_QNetworkDiskCache::cacheSize() { SubQNetworkDiskCache cache; - cache.setCacheDirectory(QDir::tempPath() + "/diskCache"); + cache.setCacheDirectory(tempDir.path()); QCOMPARE(cache.cacheSize(), qint64(0)); QUrl url(EXAMPLE_URL); @@ -276,7 +282,7 @@ void tst_QNetworkDiskCache::clear() { SubQNetworkDiskCache cache; QUrl url(EXAMPLE_URL); - cache.setupWithOne(url); + cache.setupWithOne(tempDir.path(), url); QVERIFY(cache.cacheSize() > qint64(0)); QString cacheDirectory = cache.cacheDirectory(); @@ -315,7 +321,7 @@ void tst_QNetworkDiskCache::data() QFETCH(QNetworkCacheMetaData, data); SubQNetworkDiskCache cache; QUrl url(EXAMPLE_URL); - cache.setupWithOne(url, data); + cache.setupWithOne(tempDir.path(), url, data); for (int i = 0; i < 3; ++i) { QIODevice *d = cache.data(url); @@ -340,7 +346,7 @@ void tst_QNetworkDiskCache::metaData() metaData.setExpirationDate(QDateTime::currentDateTime()); metaData.setSaveToDisk(true); - cache.setupWithOne(url, metaData); + cache.setupWithOne(tempDir.path(), url, metaData); for (int i = 0; i < 3; ++i) { QNetworkCacheMetaData cacheMetaData = cache.metaData(url); @@ -354,7 +360,7 @@ void tst_QNetworkDiskCache::remove() { SubQNetworkDiskCache cache; QUrl url(EXAMPLE_URL); - cache.setupWithOne(url); + cache.setupWithOne(tempDir.path(), url); QString cacheDirectory = cache.cacheDirectory(); QCOMPARE(countFiles(cacheDirectory).count(), NUM_SUBDIRECTORIES + 3); cache.remove(url); @@ -384,7 +390,7 @@ void tst_QNetworkDiskCache::updateMetaData() { QUrl url(EXAMPLE_URL); SubQNetworkDiskCache cache; - cache.setupWithOne(url); + cache.setupWithOne(tempDir.path(), url); QNetworkCacheMetaData metaData = cache.metaData(url); metaData.setLastModified(QDateTime::currentDateTime()); @@ -398,7 +404,7 @@ void tst_QNetworkDiskCache::fileMetaData() { SubQNetworkDiskCache cache; QUrl url(EXAMPLE_URL); - cache.setupWithOne(url); + cache.setupWithOne(tempDir.path(), url); url.setPassword(QString()); url.setFragment(QString()); @@ -425,10 +431,10 @@ void tst_QNetworkDiskCache::fileMetaData() void tst_QNetworkDiskCache::expire() { SubQNetworkDiskCache cache; - cache.setCacheDirectory(QDir::tempPath() + "/diskCache"); + cache.setCacheDirectory(tempDir.path()); QCOMPARE(cache.call_expire(), (qint64)0); QUrl url(EXAMPLE_URL); - cache.setupWithOne(url); + cache.setupWithOne(tempDir.path(), url); QVERIFY(cache.call_expire() > (qint64)0); qint64 limit = (1024 * 1024 / 4) * 5; cache.setMaximumCacheSize(limit); @@ -477,7 +483,7 @@ void tst_QNetworkDiskCache::oldCacheVersionFile() QFETCH(int, pass); SubQNetworkDiskCache cache; QUrl url(EXAMPLE_URL); - cache.setupWithOne(url); + cache.setupWithOne(tempDir.path(), url); if (pass == 0) { QString name; @@ -525,9 +531,10 @@ class Runner : public QThread { public: - Runner() + Runner(const QString& cachePath) : QThread() , other(0) + , cachePath(cachePath) {} void run() @@ -550,7 +557,7 @@ public: metaData2.setExpirationDate(dt); QNetworkDiskCache cache; - cache.setCacheDirectory(QDir::tempPath() + "/diskCache"); + cache.setCacheDirectory(cachePath); int read = 0; @@ -620,6 +627,7 @@ public: QDateTime dt; bool write; Runner *other; + QString cachePath; }; void tst_QNetworkDiskCache::crashWhenParentingCache() @@ -656,11 +664,11 @@ void tst_QNetworkDiskCache::sync() QTime midnight(0, 0, 0); qsrand(midnight.secsTo(QTime::currentTime())); - Runner reader; + Runner reader(tempDir.path()); reader.dt = QDateTime::currentDateTime(); reader.write = false; - Runner writer; + Runner writer(tempDir.path()); writer.dt = reader.dt; writer.write = true; |