diff options
-rw-r--r-- | tests/auto/corelib/io/qprocess/.gitignore | 1 | ||||
-rw-r--r-- | tests/auto/corelib/io/qprocess/qprocess.pri | 1 | ||||
-rw-r--r-- | tests/auto/corelib/io/qprocess/tst_qprocess.cpp | 51 | ||||
-rw-r--r-- | tests/benchmarks/corelib/io/io.pro | 1 | ||||
-rw-r--r-- | tests/benchmarks/corelib/io/qprocess/.gitignore | 2 | ||||
-rw-r--r-- | tests/benchmarks/corelib/io/qprocess/qprocess.pro | 3 | ||||
-rw-r--r-- | tests/benchmarks/corelib/io/qprocess/test/test.pro | 5 | ||||
-rw-r--r-- | tests/benchmarks/corelib/io/qprocess/testProcessLoopback/main.cpp (renamed from tests/auto/corelib/io/qprocess/testProcessLoopback/main.cpp) | 0 | ||||
-rw-r--r-- | tests/benchmarks/corelib/io/qprocess/testProcessLoopback/testProcessLoopback.pro (renamed from tests/auto/corelib/io/qprocess/testProcessLoopback/testProcessLoopback.pro) | 0 | ||||
-rw-r--r-- | tests/benchmarks/corelib/io/qprocess/tst_bench_qprocess.cpp | 109 |
10 files changed, 120 insertions, 53 deletions
diff --git a/tests/auto/corelib/io/qprocess/.gitignore b/tests/auto/corelib/io/qprocess/.gitignore index a273810042..7dcb25dede 100644 --- a/tests/auto/corelib/io/qprocess/.gitignore +++ b/tests/auto/corelib/io/qprocess/.gitignore @@ -11,7 +11,6 @@ testProcessEcho/testProcessEcho testProcessEcho2/testProcessEcho2 testProcessEcho3/testProcessEcho3 testProcessEnvironment/testProcessEnvironment -testProcessLoopback/testProcessLoopback testProcessNormal/testProcessNormal testProcessOutput/testProcessOutput testProcessSpacesArgs/nospace diff --git a/tests/auto/corelib/io/qprocess/qprocess.pri b/tests/auto/corelib/io/qprocess/qprocess.pri index 299432db77..d139b3dcef 100644 --- a/tests/auto/corelib/io/qprocess/qprocess.pri +++ b/tests/auto/corelib/io/qprocess/qprocess.pri @@ -4,7 +4,6 @@ SUBPROGRAMS = \ testProcessEcho2 \ testProcessEcho3 \ testProcessEnvironment \ - testProcessLoopback \ testProcessNormal \ testProcessOutput \ testProcessDeadWhileReading \ diff --git a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp index a294dca506..9ec5eb489e 100644 --- a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp +++ b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp @@ -87,7 +87,6 @@ private slots: void echoTest_data(); void echoTest(); void echoTest2(); - void echoTest_performance(); #if defined Q_OS_WIN void echoTestGui(); void batFiles_data(); @@ -493,56 +492,6 @@ void tst_QProcess::echoTest2() process = 0; } -//----------------------------------------------------------------------------- -void tst_QProcess::echoTest_performance() -{ -#ifdef Q_OS_WINCE - QSKIP("Reading and writing to a process is not supported on Qt/CE"); -#endif - - QProcess process; - process.start("testProcessLoopback/testProcessLoopback"); - - QByteArray array; - array.resize(1024 * 1024); - for (int j = 0; j < array.size(); ++j) - array[j] = 'a' + (j % 20); - - QVERIFY(process.waitForStarted()); - - QTime stopWatch; - stopWatch.start(); - - qint64 totalBytes = 0; - QByteArray dump; - QSignalSpy readyReadSpy(&process, SIGNAL(readyRead())); - QVERIFY(readyReadSpy.isValid()); - while (stopWatch.elapsed() < 2000) { - process.write(array); - while (process.bytesToWrite() > 0) { - int readCount = readyReadSpy.count(); - QVERIFY(process.waitForBytesWritten(5000)); - if (readyReadSpy.count() == readCount) - QVERIFY(process.waitForReadyRead(5000)); - } - - while (process.bytesAvailable() < array.size()) - QVERIFY2(process.waitForReadyRead(5000), qPrintable(process.errorString())); - dump = process.readAll(); - totalBytes += dump.size(); - } - - qDebug() << "Elapsed time:" << stopWatch.elapsed() << "ms;" - << "transfer rate:" << totalBytes / (1048.576) / stopWatch.elapsed() - << "MB/s"; - - for (int j = 0; j < array.size(); ++j) - QCOMPARE(char(dump.at(j)), char('a' + (j % 20))); - - process.closeWriteChannel(); - QVERIFY(process.waitForFinished()); -} - #if defined Q_OS_WIN //----------------------------------------------------------------------------- void tst_QProcess::echoTestGui() diff --git a/tests/benchmarks/corelib/io/io.pro b/tests/benchmarks/corelib/io/io.pro index 15ae0d2101..863843f2c6 100644 --- a/tests/benchmarks/corelib/io/io.pro +++ b/tests/benchmarks/corelib/io/io.pro @@ -5,5 +5,6 @@ SUBDIRS = \ qfile \ #qfileinfo \ # FIXME: broken qiodevice \ + qprocess \ qtemporaryfile diff --git a/tests/benchmarks/corelib/io/qprocess/.gitignore b/tests/benchmarks/corelib/io/qprocess/.gitignore new file mode 100644 index 0000000000..0d88a2c739 --- /dev/null +++ b/tests/benchmarks/corelib/io/qprocess/.gitignore @@ -0,0 +1,2 @@ +tst_bench_qprocess +testProcessLoopback/testProcessLoopback diff --git a/tests/benchmarks/corelib/io/qprocess/qprocess.pro b/tests/benchmarks/corelib/io/qprocess/qprocess.pro new file mode 100644 index 0000000000..c49542f616 --- /dev/null +++ b/tests/benchmarks/corelib/io/qprocess/qprocess.pro @@ -0,0 +1,3 @@ +TEMPLATE = subdirs +CONFIG += ordered +SUBDIRS = testProcessLoopback test diff --git a/tests/benchmarks/corelib/io/qprocess/test/test.pro b/tests/benchmarks/corelib/io/qprocess/test/test.pro new file mode 100644 index 0000000000..eaae0c8254 --- /dev/null +++ b/tests/benchmarks/corelib/io/qprocess/test/test.pro @@ -0,0 +1,5 @@ +TARGET = ../tst_bench_qprocess +SOURCES += ../tst_bench_qprocess.cpp + +QT = core core-private testlib +DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/corelib/io/qprocess/testProcessLoopback/main.cpp b/tests/benchmarks/corelib/io/qprocess/testProcessLoopback/main.cpp index 2b27cbe900..2b27cbe900 100644 --- a/tests/auto/corelib/io/qprocess/testProcessLoopback/main.cpp +++ b/tests/benchmarks/corelib/io/qprocess/testProcessLoopback/main.cpp diff --git a/tests/auto/corelib/io/qprocess/testProcessLoopback/testProcessLoopback.pro b/tests/benchmarks/corelib/io/qprocess/testProcessLoopback/testProcessLoopback.pro index 3940ddbf98..3940ddbf98 100644 --- a/tests/auto/corelib/io/qprocess/testProcessLoopback/testProcessLoopback.pro +++ b/tests/benchmarks/corelib/io/qprocess/testProcessLoopback/testProcessLoopback.pro diff --git a/tests/benchmarks/corelib/io/qprocess/tst_bench_qprocess.cpp b/tests/benchmarks/corelib/io/qprocess/tst_bench_qprocess.cpp new file mode 100644 index 0000000000..141805c6e2 --- /dev/null +++ b/tests/benchmarks/corelib/io/qprocess/tst_bench_qprocess.cpp @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtTest/QtTest> +#include <QtCore/QProcess> + +class tst_QProcess : public QObject +{ + Q_OBJECT + +#ifndef QT_NO_PROCESS +private slots: + + void echoTest_performance(); + +#endif // QT_NO_PROCESS +}; + +#ifndef QT_NO_PROCESS +#ifndef Q_OS_WINCE +// Reading and writing to a process is not supported on Qt/CE +void tst_QProcess::echoTest_performance() +{ + QProcess process; + process.start("testProcessLoopback/testProcessLoopback"); + + QByteArray array; + array.resize(1024 * 1024); + for (int j = 0; j < array.size(); ++j) + array[j] = 'a' + (j % 20); + + QVERIFY(process.waitForStarted()); + + QTime stopWatch; + stopWatch.start(); + + qint64 totalBytes = 0; + QByteArray dump; + QSignalSpy readyReadSpy(&process, SIGNAL(readyRead())); + QVERIFY(readyReadSpy.isValid()); + while (stopWatch.elapsed() < 2000) { + process.write(array); + while (process.bytesToWrite() > 0) { + int readCount = readyReadSpy.count(); + QVERIFY(process.waitForBytesWritten(5000)); + if (readyReadSpy.count() == readCount) + QVERIFY(process.waitForReadyRead(5000)); + } + + while (process.bytesAvailable() < array.size()) + QVERIFY2(process.waitForReadyRead(5000), qPrintable(process.errorString())); + dump = process.readAll(); + totalBytes += dump.size(); + } + + qDebug() << "Elapsed time:" << stopWatch.elapsed() << "ms;" + << "transfer rate:" << totalBytes / (1048.576) / stopWatch.elapsed() + << "MB/s"; + + for (int j = 0; j < array.size(); ++j) + QCOMPARE(char(dump.at(j)), char('a' + (j % 20))); + + process.closeWriteChannel(); + QVERIFY(process.waitForFinished()); +} +#endif // Q_OS_WINCE + +#endif // QT_NO_PROCESS + +QTEST_MAIN(tst_QProcess) +#include "tst_bench_qprocess.moc" |