From 713bc04ad4560123d97bb469d109a0885cf36373 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 4 Aug 2016 18:02:15 +0200 Subject: [PATCH] QmlProfiler: Add a test for clean shutdown of client manager Change-Id: I0d6deea53302022c18c4aacef395393d60308b84 Reviewed-by: Christian Kandeler --- .../tests/qmlprofilerclientmanager_test.cpp | 37 +++++++++++++++++++ .../tests/qmlprofilerclientmanager_test.h | 1 + 2 files changed, 38 insertions(+) diff --git a/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.cpp b/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.cpp index 81419da7267..192c857236a 100644 --- a/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.cpp +++ b/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.cpp @@ -419,5 +419,42 @@ void QmlProfilerClientManagerTest::testInvalidData() clientManager.clearConnection(); } +void QmlProfilerClientManagerTest::testStopRecording() +{ + QString socketFile = LocalQmlProfilerRunner::findFreeSocket(); + + { + QmlProfilerClientManager clientManager; + clientManager.setRetryParams(10, 10); + QSignalSpy openedSpy(&clientManager, SIGNAL(connectionOpened())); + QSignalSpy closedSpy(&clientManager, SIGNAL(connectionClosed())); + + QVERIFY(!clientManager.isConnected()); + + clientManager.setProfilerStateManager(&stateManager); + clientManager.setModelManager(&modelManager); + + connect(&clientManager, &QmlProfilerClientManager::connectionFailed, + &clientManager, &QmlProfilerClientManager::retryConnect); + + clientManager.setLocalSocket(socketFile); + clientManager.startLocalServer(); + + QScopedPointer socket(new QLocalSocket(this)); + socket->connectToServer(socketFile); + QVERIFY(socket->isOpen()); + fakeDebugServer(socket.data()); + + QTRY_COMPARE(openedSpy.count(), 1); + QCOMPARE(closedSpy.count(), 0); + QVERIFY(clientManager.isConnected()); + + // We can't verify that it does anything useful, but at least it doesn't crash + clientManager.stopRecording(); + } + + // Delete while still connected, for added fun +} + } // namespace Internal } // namespace QmlProfiler diff --git a/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.h b/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.h index 2c105f29edf..f3f3ac2d8db 100644 --- a/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.h +++ b/src/plugins/qmlprofiler/tests/qmlprofilerclientmanager_test.h @@ -53,6 +53,7 @@ private slots: void testResponsiveLocal(); void testInvalidData(); + void testStopRecording(); private: QmlProfilerClientManager clientManager;