diff options
Diffstat (limited to 'tests/auto/processmanager/tst_processmanager.cpp')
-rw-r--r-- | tests/auto/processmanager/tst_processmanager.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/auto/processmanager/tst_processmanager.cpp b/tests/auto/processmanager/tst_processmanager.cpp index 3cc2cf2..cd1a3a4 100644 --- a/tests/auto/processmanager/tst_processmanager.cpp +++ b/tests/auto/processmanager/tst_processmanager.cpp @@ -814,6 +814,42 @@ static void forkLauncherTest( clientFunc func, infoFunc infoFixup=0 ) #endif } +static void preforkLauncherTest( clientFunc func, infoFunc infoFixup=0 ) +{ +#if defined(Q_OS_LINUX) + QProcess *remote = new QProcess; + QString socketName = QLatin1String("/tmp/preforklauncher"); + remote->setProcessChannelMode(QProcess::ForwardedChannels); + QStringList args; + args << "--" << "testPreforkLauncher/testPreforkLauncher" << socketName + << "--" << "testForkLauncher/testForkLauncher"; + qDebug() << "Trying to run: testPrefork/testPrefork" << args; + remote->start("testPrefork/testPrefork", args); + QVERIFY(remote->waitForStarted()); + waitForSocket(socketName); + + ProcessBackendManager *manager = new ProcessBackendManager; + SocketProcessBackendFactory *factory = new SocketProcessBackendFactory; + factory->setSocketName(socketName); + manager->addFactory(factory); + + ProcessInfo info; + info.setValue("program", "testClient/testClient"); + if (infoFixup) + infoFixup(info); + fixUidGid(info); + func(manager, info, writeLine); + + delete manager; + delete remote; +#else + Q_UNUSED(func); + Q_UNUSED(infoFixup); +#endif +} + + + @@ -905,6 +941,17 @@ private slots: void forkLauncherOomChangeBefore() { forkLauncherTest(oomChangeBeforeClient); } void forkLauncherOomChangeAfter() { forkLauncherTest(oomChangeAfterClient); } + void preforkLauncherStartAndStop() { preforkLauncherTest(startAndStopClient); } + void preforkLauncherStartAndStopMultiple() { preforkLauncherTest(startAndStopMultiple); } + void preforkLauncherStartAndKill() { preforkLauncherTest(startAndKillClient); } + void preforkLauncherStartAndKillTough() { preforkLauncherTest(startAndKillClient, makeTough); } + void preforkLauncherStartAndCrash() { preforkLauncherTest(startAndCrashClient); } + void preforkLauncherEcho() { preforkLauncherTest(echoClient); } + void preforkLauncherPriorityChangeBefore() { preforkLauncherTest(priorityChangeBeforeClient); } + void preforkLauncherPriorityChangeAfter() { preforkLauncherTest(priorityChangeAfterClient); } + void preforkLauncherOomChangeBefore() { preforkLauncherTest(oomChangeBeforeClient); } + void preforkLauncherOomChangeAfter() { preforkLauncherTest(oomChangeAfterClient); } + void prelaunchChildAbort(); void frontend(); |