From 5fabf9af64ea9a2e842434bb7711e9c0d16c30e3 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Wed, 8 Nov 2017 17:39:14 +0100 Subject: [PATCH] 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 --- .../qmlprofiler/qmlprofilerclientmanager.cpp | 1 + .../tests/qmlprofilerclientmanager_test.cpp | 24 +++++++++++++++++++ .../tests/qmlprofilerclientmanager_test.h | 1 + 3 files changed, 26 insertions(+) diff --git a/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp b/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp index 0152d994e4a..7f0677af7bc 100644 --- a/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp @@ -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(); } diff --git a/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.cpp b/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.cpp index 0318a6b6185..3a26b61e09e 100644 --- a/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.cpp +++ b/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.cpp @@ -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 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 diff --git a/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.h b/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.h index f3f3ac2d8db..22c4cf32e13 100644 --- a/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.h +++ b/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.h @@ -54,6 +54,7 @@ private slots: void testInvalidData(); void testStopRecording(); + void testConnectionDrop(); private: QmlProfilerClientManager clientManager;