QmlProfiler: Reset the serverRecording flag when the connection drops

Otherwise the run control will believe that the application is still
running.

Change-Id: I16ec9762362f526bd89eb21ceb82b89b295d7b5c
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Ulf Hermann
2017-11-08 17:39:14 +01:00
parent 1fa7ad2116
commit 5fabf9af64
3 changed files with 26 additions and 0 deletions

View File

@@ -295,6 +295,7 @@ void QmlProfilerClientManager::qmlDebugConnectionClosed()
QTC_ASSERT(m_connection && m_qmlclientplugin, return);
QTC_ASSERT(!m_connection->isConnected(), return);
disconnectClient();
m_profilerState->setServerRecording(false);
emit connectionClosed();
}

View File

@@ -427,5 +427,29 @@ void QmlProfilerClientManagerTest::testStopRecording()
// Delete while still connected, for added fun
}
void QmlProfilerClientManagerTest::testConnectionDrop()
{
QUrl socketUrl = urlFromLocalSocket();
QmlProfilerClientManager clientManager;
{
clientManager.setRetryParams(10, 10);
clientManager.setProfilerStateManager(&stateManager);
clientManager.setModelManager(&modelManager);
clientManager.connectToServer(socketUrl);
QScopedPointer<QLocalSocket> socket(new QLocalSocket(this));
socket->connectToServer(socketUrl.path());
QVERIFY(socket->isOpen());
fakeDebugServer(socket.data());
// Fake a trace. We want to test that this is reset when the connection drops.
stateManager.setServerRecording(true);
QTRY_VERIFY(clientManager.isConnected());
}
QTRY_VERIFY(!stateManager.serverRecording());
}
} // namespace Internal
} // namespace QmlProfiler

View File

@@ -54,6 +54,7 @@ private slots:
void testInvalidData();
void testStopRecording();
void testConnectionDrop();
private:
QmlProfilerClientManager clientManager;