MCPcopy Create free account
hub / github.com/KDE/kdevelop / tryLockSession

Method tryLockSession

kdevplatform/shell/tests/test_sessioncontroller.cpp:202–250  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

200}
201
202void TestSessionController::tryLockSession()
203{
204 const QString id1 = QUuid::createUuid().toString();
205 m_sessionCtrl->createSession( id1 )->setTemporary(true);
206 const QString id2 = QUuid::createUuid().toString();
207 m_sessionCtrl->createSession( id2 )->setTemporary(true);
208 {
209 // acquired scoped lock
210 QVERIFY(!SessionController::isSessionRunning(id1));
211 QCOMPARE(SessionController::sessionRunInfo(id1), SessionRunInfo());
212 TryLockSessionResult initial = SessionController::tryLockSession(id1);
213 QVERIFY(initial.lock);
214 QCOMPARE(initial.lock->id(), id1);
215 QCOMPARE(initial.runInfo, SessionRunInfo());
216 QVERIFY(SessionController::isSessionRunning(id1));
217
218 SessionRunInfo info = SessionController::sessionRunInfo(id1);
219 QVERIFY(info != initial.runInfo);
220 QVERIFY(info.isRunning);
221 QCOMPARE(info.holderApp, QCoreApplication::applicationName());
222 QCOMPARE(info.holderPid, static_cast<int>(QCoreApplication::applicationPid()));
223
224 // this should fail
225 TryLockSessionResult repeated = SessionController::tryLockSession(id1);
226 QVERIFY(!repeated.lock);
227 QCOMPARE(repeated.runInfo, info);
228
229 // this should pass (different id)
230 QVERIFY(!SessionController::isSessionRunning(id2));
231 TryLockSessionResult other = SessionController::tryLockSession(id2);
232 QVERIFY(other.lock);
233 QCOMPARE(other.lock->id(), id2);
234 QCOMPARE(other.runInfo, SessionRunInfo());
235 QVERIFY(SessionController::isSessionRunning(id2));
236 }
237
238 // scope left, sessions are now unlocked again
239 QVERIFY(!SessionController::isSessionRunning(id1));
240 QCOMPARE(SessionController::sessionRunInfo(id1), SessionRunInfo());
241 QVERIFY(!SessionController::isSessionRunning(id2));
242 QCOMPARE(SessionController::sessionRunInfo(id2), SessionRunInfo());
243
244 // can re-lock it here
245 TryLockSessionResult final = SessionController::tryLockSession(id1);
246 QVERIFY(SessionController::isSessionRunning(id1));
247 QVERIFY(final.lock);
248 QCOMPARE(final.lock->id(), id1);
249 QCOMPARE(final.runInfo, SessionRunInfo());
250}
251
252QTEST_GUILESS_MAIN(TestSessionController)
253

Callers 2

cleanupTestCaseMethod · 0.45
deleteSessionMethod · 0.45

Calls 5

setTemporaryMethod · 0.80
SessionRunInfoClass · 0.50
toStringMethod · 0.45
createSessionMethod · 0.45
idMethod · 0.45

Tested by

no test coverage detected