diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2012-10-16 10:34:44 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-10-19 02:43:05 +0200 |
commit | c54a2dca1697974e85cc42b86fa2e1a7f50bde8e (patch) | |
tree | 088c4bb77dd5910b6b5481c74c262c187d27900f /tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp | |
parent | 0510fc149e0c6b955ee9b93917e72ee378369197 (diff) |
tst_qlocalsocket: get rid of QtScript dependency
Removing the lackey executable that needs QtScript to be built.
This was a qscript bastard that was able to run a client and a server
script. It's replaced by a C++ version with the same functionality.
Nice side effect: the two second wait per test row could be removed.
The client executable is now waiting for the server to be created.
Task-number: QTBUG-24142
Change-Id: I135b75abf6620d3b0af50dc226ea8c81c2bf4149
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
Diffstat (limited to 'tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp')
-rw-r--r-- | tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp | 54 |
1 files changed, 37 insertions, 17 deletions
diff --git a/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp b/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp index 8bcb8cc571..4f6fc4619f 100644 --- a/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp +++ b/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp @@ -735,53 +735,73 @@ void tst_QLocalSocket::processConnection_data() { QTest::addColumn<int>("processes"); QTest::newRow("1 client") << 1; -#ifndef Q_OS_WIN QTest::newRow("2 clients") << 2; QTest::newRow("5 clients") << 5; -#endif QTest::newRow("30 clients") << 30; } +class ProcessOutputDumper +{ +public: + ProcessOutputDumper(QProcess *p = 0) + : process(p) + {} + + ~ProcessOutputDumper() + { + if (process) + fputs(process->readAll().data(), stdout); + } + + void clear() + { + process = 0; + } + +private: + QProcess *process; +}; + /*! Create external processes that produce and consume. */ void tst_QLocalSocket::processConnection() { #ifdef Q_OS_WIN -# define EXE_SUFFIX ".exe" + const QString exeSuffix = QStringLiteral(".exe"); #else -# define EXE_SUFFIX + const QString exeSuffix; #endif -// ### lackey is currently not build - QEXPECT_FAIL("", "lackey is currently not built due to qscript dependency, QTBUG-24142", Abort); - QVERIFY(QFile::exists("lackey/lackey" EXE_SUFFIX)); + QString socketProcess = QStringLiteral("socketprocess/socketprocess") + exeSuffix; + QVERIFY(QFile::exists(socketProcess)); QFETCH(int, processes); - QStringList serverArguments = QStringList() << SRCDIR "lackey/scripts/server.js" << QString::number(processes); + QStringList serverArguments = QStringList() << "--server" << QString::number(processes); QProcess producer; - producer.setProcessChannelMode(QProcess::ForwardedChannels); + ProcessOutputDumper producerOutputDumper(&producer); QList<QProcess*> consumers; - producer.start("lackey/lackey", serverArguments); + producer.start(socketProcess, serverArguments); QVERIFY2(producer.waitForStarted(-1), qPrintable(producer.errorString())); - QTest::qWait(2000); for (int i = 0; i < processes; ++i) { - QStringList arguments = QStringList() << SRCDIR "lackey/scripts/client.js"; + QStringList arguments = QStringList() << "--client"; QProcess *p = new QProcess; - p->setProcessChannelMode(QProcess::ForwardedChannels); consumers.append(p); - p->start("lackey/lackey", arguments); + p->start(socketProcess, arguments); } while (!consumers.isEmpty()) { - consumers.first()->waitForFinished(20000); - QCOMPARE(consumers.first()->exitStatus(), QProcess::NormalExit); - QCOMPARE(consumers.first()->exitCode(), 0); QProcess *consumer = consumers.takeFirst(); + ProcessOutputDumper consumerOutputDumper(consumer); + consumer->waitForFinished(20000); + QCOMPARE(consumer->exitStatus(), QProcess::NormalExit); + QCOMPARE(consumer->exitCode(), 0); + consumerOutputDumper.clear(); consumer->terminate(); delete consumer; } producer.waitForFinished(15000); + producerOutputDumper.clear(); } #endif |