summaryrefslogtreecommitdiffstats
path: root/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp')
-rw-r--r--tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp54
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