diff options
author | Andrew Christian <andrew.christian@nokia.com> | 2012-03-05 12:09:58 -0500 |
---|---|---|
committer | Lasse Holmstedt <lasse.holmstedt@nokia.com> | 2012-03-05 18:22:53 +0100 |
commit | ea7d7e8cf0bc03c80c46051ce19d69bafa59504f (patch) | |
tree | d59022d8db77344b6b78e8b75eef26c22dbf05de /tests | |
parent | 7c5c9b19c32255164b991d3840f92d88b86fbed5 (diff) |
Update prelaunch to copy processinfo record.
* Added declarative test cases for Prelaunch factory
* Copy ProcessInfo record into prelaunch factory to avoid
memory management issues
Change-Id: I3303286f34c7ee9c491a82726e4e4b50892625e4
Reviewed-by: Lasse Holmstedt <lasse.holmstedt@nokia.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/declarative/data/testprelaunch.qml | 42 | ||||
-rw-r--r-- | tests/auto/declarative/tst_declarative.cpp | 9 | ||||
-rw-r--r-- | tests/auto/processmanager/tst_processmanager.cpp | 31 |
3 files changed, 66 insertions, 16 deletions
diff --git a/tests/auto/declarative/data/testprelaunch.qml b/tests/auto/declarative/data/testprelaunch.qml new file mode 100644 index 0000000..a06cbbf --- /dev/null +++ b/tests/auto/declarative/data/testprelaunch.qml @@ -0,0 +1,42 @@ +import QtQuick 2.0 +import Test 1.0 + +DeclarativeProcessManager { + id: foo + + factories: [ + PrelaunchProcessBackendFactory { + id: foo3 + processInfo: ProcessInfo { + program: "testDeclarative/testDeclarative" + } + } + ] + + onProcessStarted: console.log("Process started "+name) + onProcessStateChanged: { + function stateToString(s) { + if (s == Process.NotRunning) return "Not running"; + if (s == Process.Running) return "Running"; + if (s == Process.Starting) return "Starting"; + return "Unknown"; + } + console.log("state changed for "+name+" to "+stateToString(state)); + } + + function makeProcess() { + var a = create({"program": "testDeclarative/testDeclarative","name": "test-client"}); + return a.name; + } + + function startProcess(name) { + var p = processForName(name); + console.log("Starting process '"+name+"' ="+p); + p.start(); + } + + function stopProcess(name) { + var p = processForName(name); + p.stop(); + } +} diff --git a/tests/auto/declarative/tst_declarative.cpp b/tests/auto/declarative/tst_declarative.cpp index f5b9167..68e5e6c 100644 --- a/tests/auto/declarative/tst_declarative.cpp +++ b/tests/auto/declarative/tst_declarative.cpp @@ -53,6 +53,7 @@ #include "declarativematchdelegate.h" #include "declarativerewritedelegate.h" #include "standardprocessbackendfactory.h" +#include "prelaunchprocessbackendfactory.h" #include "socketprocessbackendfactory.h" #include "processfrontend.h" #include "processbackend.h" @@ -72,6 +73,7 @@ private slots: void initTestCase(); void basic(); + void prelaunch(); void matchDelegate(); void socketLauncher(); void socketRangeLauncher(); @@ -92,6 +94,8 @@ void tst_DeclarativeProcessManager::initTestCase() qmlRegisterType<ProcessFrontend>(); qmlRegisterType<StandardProcessBackendFactory>(uri, 1, 0, "StandardProcessBackendFactory"); + qmlRegisterType<PrelaunchProcessBackendFactory>(uri, 1, 0, "PrelaunchProcessBackendFactory"); + qmlRegisterType<ProcessInfo>(uri, 1, 0, "ProcessInfo"); qmlRegisterType<SocketProcessBackendFactory>(uri, 1, 0, "SocketProcessBackendFactory"); qmlRegisterType<DeclarativeProcessManager>(uri, 1, 0, "DeclarativeProcessManager"); qmlRegisterType<DeclarativeMatchDelegate>(uri, 1, 0, "DeclarativeMatchDelegate"); @@ -246,6 +250,11 @@ void tst_DeclarativeProcessManager::basic() _frontendTest("data/testfrontend.qml"); } +void tst_DeclarativeProcessManager::prelaunch() +{ + _frontendTest("data/testprelaunch.qml"); +} + void tst_DeclarativeProcessManager::matchDelegate() { _frontendTest("data/testmatch.qml"); diff --git a/tests/auto/processmanager/tst_processmanager.cpp b/tests/auto/processmanager/tst_processmanager.cpp index 56cea89..3cc2cf2 100644 --- a/tests/auto/processmanager/tst_processmanager.cpp +++ b/tests/auto/processmanager/tst_processmanager.cpp @@ -695,22 +695,21 @@ static void standardTest( clientFunc func, infoFunc infoFixup=0 ) static void prelaunchTest( clientFunc func, infoFunc infoFixup=0 ) { ProcessBackendManager *manager = new ProcessBackendManager; - - QScopedPointer<ProcessInfo> info(new ProcessInfo); - info->setValue("program", "testPrelaunch/testPrelaunch"); + ProcessInfo info; + info.setValue("program", "testPrelaunch/testPrelaunch"); if (infoFixup) - infoFixup(*info); + infoFixup(info); PrelaunchProcessBackendFactory *factory = new PrelaunchProcessBackendFactory; - factory->setProcessInfo(info.data()); + factory->setProcessInfo(info); manager->addFactory(factory); // Verify that there is a prelaunched process QVERIFY(manager->memoryRestricted() == false); waitForInternalProcess(manager); - fixUidGid(*info); - func(manager, *info, writeJson); + fixUidGid(info); + func(manager, info, writeJson); delete manager; } @@ -719,18 +718,18 @@ static void prelaunchRestrictedTest( clientFunc func, infoFunc infoFixup=0 ) ProcessBackendManager *manager = new ProcessBackendManager; manager->setMemoryRestricted(true); - QScopedPointer<ProcessInfo> info(new ProcessInfo); - info->setValue("program", "testPrelaunch/testPrelaunch"); + ProcessInfo info; + info.setValue("program", "testPrelaunch/testPrelaunch"); if (infoFixup) - infoFixup(*info); + infoFixup(info); PrelaunchProcessBackendFactory *factory = new PrelaunchProcessBackendFactory; - factory->setProcessInfo(info.data()); + factory->setProcessInfo(info); manager->addFactory(factory); QVERIFY(manager->memoryRestricted() == true); - fixUidGid(*info); - func(manager, *info, writeJson); + fixUidGid(info); + func(manager, info, writeJson); delete manager; } @@ -925,10 +924,10 @@ void tst_ProcessManager::initTestCase() void tst_ProcessManager::prelaunchChildAbort() { ProcessBackendManager *manager = new ProcessBackendManager; - QScopedPointer<ProcessInfo> info(new ProcessInfo); - info->setValue("program", "testPrelaunch/testPrelaunch"); + ProcessInfo info; + info.setValue("program", "testPrelaunch/testPrelaunch"); PrelaunchProcessBackendFactory *factory = new PrelaunchProcessBackendFactory; - factory->setProcessInfo(info.data()); + factory->setProcessInfo(info); manager->addFactory(factory); // The factory should not have launched |