diff options
author | Ulf Hermann <ulf.hermann@theqtcompany.com> | 2015-08-10 16:06:49 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@theqtcompany.com> | 2015-10-15 08:20:50 +0000 |
commit | 1a123472ba0e56d1fd772db430e6d4532f672a6e (patch) | |
tree | 6f63f7b63c42b6bb7eed9a57a379159fd0e6fde8 /tests | |
parent | 36cbf6a62aec4de253e935291bdd33370e7b7faa (diff) |
Test enabling/disabling of combinations of debug services.
This tests the new QQmlDebuggingEnabler::setServices() method.
Change-Id: I29b588fa425a8e3230c451d6ff73a1bde104bfc4
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'tests')
4 files changed, 102 insertions, 11 deletions
diff --git a/tests/auto/qml/debugger/qqmldebugclient/tst_qqmldebugclient.cpp b/tests/auto/qml/debugger/qqmldebugclient/tst_qqmldebugclient.cpp index 6fc6c6a914..abdc2483ea 100644 --- a/tests/auto/qml/debugger/qqmldebugclient/tst_qqmldebugclient.cpp +++ b/tests/auto/qml/debugger/qqmldebugclient/tst_qqmldebugclient.cpp @@ -68,10 +68,20 @@ private slots: void tst_QQmlDebugClient::initTestCase() { QQmlDebugConnector::setPluginKey(QLatin1String("QQmlDebugServer")); + QQmlDebugConnector::setServices(QStringList() + << QStringLiteral("tst_QQmlDebugClient::handshake()")); QTest::ignoreMessage(QtWarningMsg, "QML debugger: Cannot set plugin key after loading the plugin."); m_service = new QQmlDebugTestService("tst_QQmlDebugClient::handshake()"); + + foreach (const QString &service, QQmlDebuggingEnabler::debuggerServices()) + QCOMPARE(QQmlDebugConnector::instance()->service(service), (QQmlDebugService *)0); + foreach (const QString &service, QQmlDebuggingEnabler::inspectorServices()) + QCOMPARE(QQmlDebugConnector::instance()->service(service), (QQmlDebugService *)0); + foreach (const QString &service, QQmlDebuggingEnabler::profilerServices()) + QCOMPARE(QQmlDebugConnector::instance()->service(service), (QQmlDebugService *)0); + const QString waitingMsg = QString("QML Debugger: Waiting for connection on port %1...").arg(PORT); QTest::ignoreMessage(QtDebugMsg, waitingMsg.toLatin1().constData()); QQmlDebuggingEnabler::startTcpDebugServer(PORT); diff --git a/tests/auto/qml/debugger/qqmldebuggingenabler/qqmldebuggingenabler/tst_qqmldebuggingenabler.cpp b/tests/auto/qml/debugger/qqmldebuggingenabler/qqmldebuggingenabler/tst_qqmldebuggingenabler.cpp index 98ef590317..e809a46009 100644 --- a/tests/auto/qml/debugger/qqmldebuggingenabler/qqmldebuggingenabler/tst_qqmldebuggingenabler.cpp +++ b/tests/auto/qml/debugger/qqmldebuggingenabler/qqmldebuggingenabler/tst_qqmldebuggingenabler.cpp @@ -53,13 +53,14 @@ private slots: void initTestCase(); void cleanupTestCase(); void cleanup(); - void qmlscene(); - void qmlsceneBlock(); + void qmlscene_data(); + void qmlscene(); + void custom_data(); void custom(); - void customBlock(); private: + void data(); QQmlDebugProcess *process; QQmlDebugConnection *connection; QTime t; @@ -142,24 +143,92 @@ void tst_QQmlDebuggingEnabler::cleanup() connection = 0; } -void tst_QQmlDebuggingEnabler::qmlscene() +void tst_QQmlDebuggingEnabler::data() { - QVERIFY(init(false, true, 5555, 5565)); + QTest::addColumn<bool>("blockMode"); + QTest::addColumn<QStringList>("services"); + + QTest::newRow("noblock,all") << false << QStringList(); + QTest::newRow("block,all") << true << QStringList(); + QTest::newRow("noblock,debugger") << false << QQmlDebuggingEnabler::debuggerServices(); + QTest::newRow("block,debugger") << true << QQmlDebuggingEnabler::debuggerServices(); + QTest::newRow("noblock,inspector") << false << QQmlDebuggingEnabler::inspectorServices(); + QTest::newRow("block,inspector") << true << QQmlDebuggingEnabler::inspectorServices(); + QTest::newRow("noblock,profiler") << false << QQmlDebuggingEnabler::profilerServices(); + QTest::newRow("block,profiler") << true << QQmlDebuggingEnabler::profilerServices(); + QTest::newRow("noblock,debugger+inspector") + << false << QQmlDebuggingEnabler::debuggerServices() + + QQmlDebuggingEnabler::inspectorServices(); + QTest::newRow("block,debugger+inspector") + << true << QQmlDebuggingEnabler::debuggerServices() + + QQmlDebuggingEnabler::inspectorServices(); + } -void tst_QQmlDebuggingEnabler::qmlsceneBlock() +void tst_QQmlDebuggingEnabler::qmlscene_data() { - QVERIFY(init(true, true, 5555, 5565)); + data(); } -void tst_QQmlDebuggingEnabler::custom() +void tst_QQmlDebuggingEnabler::qmlscene() +{ + QFETCH(bool, blockMode); + QFETCH(QStringList, services); + + connection = new QQmlDebugConnection(); + QList<QQmlDebugClient *> clients = connection->createOtherClients(); + process = new QQmlDebugProcess(QLibraryInfo::location(QLibraryInfo::BinariesPath) + "/qmlscene", + this); + process->setMaximumBindErrors(1); + process->start(QStringList() + << QString::fromLatin1("-qmljsdebugger=port:5555,5565%1%2%3") + .arg(blockMode ? QLatin1String(",block") : QString()) + .arg(services.isEmpty() ? QString() : QString::fromLatin1(",services:")) + .arg(services.isEmpty() ? QString() : services.join(",")) + << testFile(QLatin1String("test.qml"))); + + QVERIFY(process->waitForSessionStart()); + connection->connectToHost("127.0.0.1", process->debugPort()); + QVERIFY(connection->waitForConnected()); + foreach (QQmlDebugClient *client, clients) + QCOMPARE(client->state(), (services.isEmpty() || services.contains(client->name())) ? + QQmlDebugClient::Enabled : QQmlDebugClient::Unavailable); +} + +void tst_QQmlDebuggingEnabler::custom_data() { - QVERIFY(init(false, false, 5555, 5565)); + data(); } -void tst_QQmlDebuggingEnabler::customBlock() +void tst_QQmlDebuggingEnabler::custom() { - QVERIFY(init(true, false, 5555, 5565)); + QFETCH(bool, blockMode); + QFETCH(QStringList, services); + const int portFrom = 5555; + const int portTo = 5565; + + connection = new QQmlDebugConnection(); + QList<QQmlDebugClient *> clients = connection->createOtherClients(); + process = new QQmlDebugProcess(QCoreApplication::applicationDirPath() + + QLatin1String("/qqmldebuggingenablerserver"), this); + process->setMaximumBindErrors(portTo - portFrom); + + QStringList args; + if (blockMode) + args << QLatin1String("-block"); + + args << QString::number(portFrom) << QString::number(portTo); + if (!services.isEmpty()) + args << QLatin1String("-services") << services; + + process->start(args); + + QVERIFY(process->waitForSessionStart()); + connection->connectToHost("127.0.0.1", process->debugPort()); + QVERIFY(connection->waitForConnected()); + foreach (QQmlDebugClient *client, clients) + QCOMPARE(client->state(), (services.isEmpty() || services.contains(client->name())) ? + QQmlDebugClient::Enabled : QQmlDebugClient::Unavailable); } QTEST_MAIN(tst_QQmlDebuggingEnabler) diff --git a/tests/auto/qml/debugger/qqmldebuggingenabler/qqmldebuggingenablerserver/qqmldebuggingenablerserver.cpp b/tests/auto/qml/debugger/qqmldebuggingenabler/qqmldebuggingenablerserver/qqmldebuggingenablerserver.cpp index bddece6452..e08461346f 100644 --- a/tests/auto/qml/debugger/qqmldebuggingenabler/qqmldebuggingenablerserver/qqmldebuggingenablerserver.cpp +++ b/tests/auto/qml/debugger/qqmldebuggingenabler/qqmldebuggingenablerserver/qqmldebuggingenablerserver.cpp @@ -54,6 +54,9 @@ int main(int argc, char *argv[]) portTo = arguments.takeFirst().toInt(); } + if (arguments.size() && arguments.takeFirst() == QLatin1String("-services")) + QQmlDebuggingEnabler::setServices(arguments); + if (!portFrom || !portTo) qFatal("Port range has to be specified."); diff --git a/tests/auto/qml/debugger/qqmldebugservice/tst_qqmldebugservice.cpp b/tests/auto/qml/debugger/qqmldebugservice/tst_qqmldebugservice.cpp index b63c5c0a6d..166a079201 100644 --- a/tests/auto/qml/debugger/qqmldebugservice/tst_qqmldebugservice.cpp +++ b/tests/auto/qml/debugger/qqmldebugservice/tst_qqmldebugservice.cpp @@ -74,10 +74,19 @@ void tst_QQmlDebugService::initTestCase() { QQmlDataTest::initTestCase(); QQmlDebugConnector::setPluginKey(QLatin1String("QQmlDebugServer")); + QQmlDebugConnector::setServices(QStringList() + << QStringLiteral("tst_QQmlDebugService")); QTest::ignoreMessage(QtWarningMsg, "QML debugger: Cannot set plugin key after loading the plugin."); m_service = new QQmlDebugTestService("tst_QQmlDebugService", 2); + foreach (const QString &service, QQmlDebuggingEnabler::debuggerServices()) + QCOMPARE(QQmlDebugConnector::instance()->service(service), (QQmlDebugService *)0); + foreach (const QString &service, QQmlDebuggingEnabler::inspectorServices()) + QCOMPARE(QQmlDebugConnector::instance()->service(service), (QQmlDebugService *)0); + foreach (const QString &service, QQmlDebuggingEnabler::profilerServices()) + QCOMPARE(QQmlDebugConnector::instance()->service(service), (QQmlDebugService *)0); + const QString waitingMsg = QString("QML Debugger: Waiting for connection on port %1...").arg(PORT); QTest::ignoreMessage(QtDebugMsg, waitingMsg.toLatin1().constData()); QQmlDebuggingEnabler::startTcpDebugServer(PORT); |