aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/debugger
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2014-06-03 15:28:51 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2014-06-04 17:02:55 +0200
commit11a11d1280b1634628b9c4a92a0fc420ee8a3a81 (patch)
treeb48d9608ef3f08123cdeea605068342131b32b44 /tests/auto/qml/debugger
parent52e07d564b65ed6ce26955a676c7692ad67686c1 (diff)
parentfea26bb2941c3f24c4a5f3ad5efc1b85e0123ff3 (diff)
Merge remote-tracking branch 'origin/stable' into dev
The merge conflict is about the removal of "d1" from the register set on ARM, but that was already done in dev in commit ddb33ee9ba9e1344caa9be5dbf4b534c3ede692e The change in src/quick/scenegraph/coreapi/qsgrenderer.cpp with commit 2414f1675eab163b22dcc4e8ded80ed04d06369b was reverted to what it was before, per Laszlo's advice. Conflicts: src/qml/jit/qv4isel_masm.cpp Change-Id: I7bce546c5cdee01e37853a476d82279d4e72948b
Diffstat (limited to 'tests/auto/qml/debugger')
-rw-r--r--tests/auto/qml/debugger/debugger.pro4
-rw-r--r--tests/auto/qml/debugger/qqmlprofilerservice/tst_qqmlprofilerservice.cpp234
2 files changed, 105 insertions, 133 deletions
diff --git a/tests/auto/qml/debugger/debugger.pro b/tests/auto/qml/debugger/debugger.pro
index 4c4342a6a5..303e78db75 100644
--- a/tests/auto/qml/debugger/debugger.pro
+++ b/tests/auto/qml/debugger/debugger.pro
@@ -6,11 +6,7 @@ PUBLICTESTS += \
qqmlinspector \
qqmlprofilerservice \
qpacketprotocol \
-# qv4profilerservice \
-# qdebugmessageservice \
qqmlenginedebuginspectorintegrationtest \
- qqmlinspector \
- qqmlprofilerservice \
qqmlenginecontrol
PRIVATETESTS += \
diff --git a/tests/auto/qml/debugger/qqmlprofilerservice/tst_qqmlprofilerservice.cpp b/tests/auto/qml/debugger/qqmlprofilerservice/tst_qqmlprofilerservice.cpp
index a918e23a05..5fd985f6d5 100644
--- a/tests/auto/qml/debugger/qqmlprofilerservice/tst_qqmlprofilerservice.cpp
+++ b/tests/auto/qml/debugger/qqmlprofilerservice/tst_qqmlprofilerservice.cpp
@@ -136,7 +136,9 @@ public:
{
}
- QList<QQmlProfilerData> traceMessages;
+ QList<QQmlProfilerData> synchronousMessages;
+ QList<QQmlProfilerData> asynchronousMessages;
+ QList<QQmlProfilerData> pixmapMessages;
void setTraceState(bool enabled) {
QByteArray message;
@@ -171,6 +173,7 @@ private:
QQmlProfilerClient *m_client;
void connect(bool block, const QString &testFile);
+ void checkTraceReceived();
private slots:
void cleanup();
@@ -305,7 +308,17 @@ void QQmlProfilerClient::messageReceived(const QByteArray &message)
break;
}
QVERIFY(stream.atEnd());
- traceMessages.append(data);
+ if (data.messageType == QQmlProfilerClient::PixmapCacheEvent)
+ pixmapMessages.append(data);
+ else if (data.messageType == QQmlProfilerClient::SceneGraphFrame ||
+ (data.messageType == QQmlProfilerClient::Event &&
+ (data.detailType == QQmlProfilerClient::FramePaint ||
+ data.detailType == QQmlProfilerClient::AnimationFrame ||
+ data.detailType == QQmlProfilerClient::Mouse ||
+ data.detailType == QQmlProfilerClient::Key)))
+ asynchronousMessages.append(data);
+ else
+ synchronousMessages.append(data);
}
void tst_QQmlProfilerService::connect(bool block, const QString &testFile)
@@ -331,9 +344,44 @@ void tst_QQmlProfilerService::connect(bool block, const QString &testFile)
m_connection->connectToHost(QLatin1String("127.0.0.1"), port);
}
+void tst_QQmlProfilerService::checkTraceReceived()
+{
+ QVERIFY2(QQmlDebugTest::waitForSignal(m_client, SIGNAL(complete())), "No trace received in time.");
+ QVERIFY(m_client->synchronousMessages.count());
+
+ // must start with "StartTrace"
+ QCOMPARE(m_client->synchronousMessages.first().messageType, (int)QQmlProfilerClient::Event);
+ QCOMPARE(m_client->synchronousMessages.first().detailType, (int)QQmlProfilerClient::StartTrace);
+
+ // must end with "EndTrace"
+ QCOMPARE(m_client->synchronousMessages.last().messageType, (int)QQmlProfilerClient::Event);
+ QCOMPARE(m_client->synchronousMessages.last().detailType, (int)QQmlProfilerClient::EndTrace);
+}
+
void tst_QQmlProfilerService::cleanup()
{
if (QTest::currentTestFailed()) {
+ qDebug() << "Synchronous Messages:" << m_client->synchronousMessages.count();
+ int i = 0;
+ foreach (const QQmlProfilerData &data, m_client->synchronousMessages) {
+ qDebug() << i++ << data.time << data.messageType << data.detailType << data.detailData
+ << data.line << data.column;
+ }
+ qDebug() << " ";
+ qDebug() << "Asynchronous Messages:" << m_client->asynchronousMessages.count();
+ i = 0;
+ foreach (const QQmlProfilerData &data, m_client->asynchronousMessages) {
+ qDebug() << i++ << data.time << data.messageType << data.detailType << data.detailData
+ << data.framerate << data.animationcount << data.line << data.column;
+ }
+ qDebug() << " ";
+ qDebug() << "Pixmap Cache Messages:" << m_client->pixmapMessages.count();
+ i = 0;
+ foreach (const QQmlProfilerData &data, m_client->pixmapMessages) {
+ qDebug() << i++ << data.time << data.messageType << data.detailType << data.detailData
+ << data.line << data.column;
+ }
+ qDebug() << " ";
qDebug() << "Process State:" << (m_process ? m_process->state() : QLatin1String("null"));
qDebug() << "Application Output:" << (m_process ? m_process->output() : QLatin1String("null"));
qDebug() << "Connection State:" << (m_connection ? m_connection->stateString() : QLatin1String("null"));
@@ -355,16 +403,7 @@ void tst_QQmlProfilerService::blockingConnectWithTraceEnabled()
m_client->setTraceState(true);
m_client->setTraceState(false);
- QVERIFY2(QQmlDebugTest::waitForSignal(m_client, SIGNAL(complete())), "No trace received in time.");
-
- QVERIFY(m_client->traceMessages.count());
- // must start with "StartTrace"
- QCOMPARE(m_client->traceMessages.first().messageType, (int)QQmlProfilerClient::Event);
- QCOMPARE(m_client->traceMessages.first().detailType, (int)QQmlProfilerClient::StartTrace);
-
- // must end with "EndTrace"
- QCOMPARE(m_client->traceMessages.last().messageType, (int)QQmlProfilerClient::Event);
- QCOMPARE(m_client->traceMessages.last().detailType, (int)QQmlProfilerClient::EndTrace);
+ checkTraceReceived();
}
void tst_QQmlProfilerService::blockingConnectWithTraceDisabled()
@@ -376,17 +415,7 @@ void tst_QQmlProfilerService::blockingConnectWithTraceDisabled()
m_client->setTraceState(false);
m_client->setTraceState(true);
m_client->setTraceState(false);
- QVERIFY2(QQmlDebugTest::waitForSignal(m_client, SIGNAL(complete())), "No trace received in time.");
-
- QVERIFY(m_client->traceMessages.count());
-
- // must start with "StartTrace"
- QCOMPARE(m_client->traceMessages.first().messageType, (int)QQmlProfilerClient::Event);
- QCOMPARE(m_client->traceMessages.first().detailType, (int)QQmlProfilerClient::StartTrace);
-
- // must end with "EndTrace"
- QCOMPARE(m_client->traceMessages.last().messageType, (int)QQmlProfilerClient::Event);
- QCOMPARE(m_client->traceMessages.last().detailType, (int)QQmlProfilerClient::EndTrace);
+ checkTraceReceived();
}
void tst_QQmlProfilerService::nonBlockingConnect()
@@ -397,16 +426,7 @@ void tst_QQmlProfilerService::nonBlockingConnect()
m_client->setTraceState(true);
m_client->setTraceState(false);
- QVERIFY2(QQmlDebugTest::waitForSignal(m_client, SIGNAL(complete())), "No trace received in time.");
- QVERIFY(m_client->traceMessages.count());
-
- // must start with "StartTrace"
- QCOMPARE(m_client->traceMessages.first().messageType, (int)QQmlProfilerClient::Event);
- QCOMPARE(m_client->traceMessages.first().detailType, (int)QQmlProfilerClient::StartTrace);
-
- // must end with "EndTrace"
- QCOMPARE(m_client->traceMessages.last().messageType, (int)QQmlProfilerClient::Event);
- QCOMPARE(m_client->traceMessages.last().detailType, (int)QQmlProfilerClient::EndTrace);
+ checkTraceReceived();
}
void tst_QQmlProfilerService::pixmapCacheData()
@@ -424,35 +444,27 @@ void tst_QQmlProfilerService::pixmapCacheData()
m_client->setTraceState(false);
- QVERIFY2(QQmlDebugTest::waitForSignal(m_client, SIGNAL(complete())), "No trace received in time.");
- QVERIFY2(m_client->traceMessages.count() >= 20,
- QString::number(m_client->traceMessages.count()).toUtf8().constData());
-
- // must start with "StartTrace"
- QCOMPARE(m_client->traceMessages.first().messageType, (int)QQmlProfilerClient::Event);
- QCOMPARE(m_client->traceMessages.first().detailType, (int)QQmlProfilerClient::StartTrace);
+ checkTraceReceived();
+ QVERIFY2(m_client->pixmapMessages.count() >= 4,
+ QString::number(m_client->pixmapMessages.count()).toUtf8().constData());
// image starting to load
- QCOMPARE(m_client->traceMessages[16].messageType, (int)QQmlProfilerClient::PixmapCacheEvent);
- QCOMPARE(m_client->traceMessages[16].detailType, (int)QQmlProfilerClient::PixmapLoadingStarted);
+ QCOMPARE(m_client->pixmapMessages[0].messageType, (int)QQmlProfilerClient::PixmapCacheEvent);
+ QCOMPARE(m_client->pixmapMessages[0].detailType, (int)QQmlProfilerClient::PixmapLoadingStarted);
// image size
- QCOMPARE(m_client->traceMessages[17].messageType, (int)QQmlProfilerClient::PixmapCacheEvent);
- QCOMPARE(m_client->traceMessages[17].detailType, (int)QQmlProfilerClient::PixmapSizeKnown);
- QCOMPARE(m_client->traceMessages[17].line, 2); // width
- QCOMPARE(m_client->traceMessages[17].column, 2); // height
+ QCOMPARE(m_client->pixmapMessages[1].messageType, (int)QQmlProfilerClient::PixmapCacheEvent);
+ QCOMPARE(m_client->pixmapMessages[1].detailType, (int)QQmlProfilerClient::PixmapSizeKnown);
+ QCOMPARE(m_client->pixmapMessages[1].line, 2); // width
+ QCOMPARE(m_client->pixmapMessages[1].column, 2); // height
// image loaded
- QCOMPARE(m_client->traceMessages[18].messageType, (int)QQmlProfilerClient::PixmapCacheEvent);
- QCOMPARE(m_client->traceMessages[18].detailType, (int)QQmlProfilerClient::PixmapLoadingFinished);
+ QCOMPARE(m_client->pixmapMessages[2].messageType, (int)QQmlProfilerClient::PixmapCacheEvent);
+ QCOMPARE(m_client->pixmapMessages[2].detailType, (int)QQmlProfilerClient::PixmapLoadingFinished);
// cache size
- QCOMPARE(m_client->traceMessages[19].messageType, (int)QQmlProfilerClient::PixmapCacheEvent);
- QCOMPARE(m_client->traceMessages[19].detailType, (int)QQmlProfilerClient::PixmapCacheCountChanged);
-
- // must end with "EndTrace"
- QCOMPARE(m_client->traceMessages.last().messageType, (int)QQmlProfilerClient::Event);
- QCOMPARE(m_client->traceMessages.last().detailType, (int)QQmlProfilerClient::EndTrace);
+ QCOMPARE(m_client->pixmapMessages[3].messageType, (int)QQmlProfilerClient::PixmapCacheEvent);
+ QCOMPARE(m_client->pixmapMessages[3].detailType, (int)QQmlProfilerClient::PixmapCacheCountChanged);
}
@@ -468,8 +480,7 @@ void tst_QQmlProfilerService::scenegraphData()
QVERIFY(QQmlDebugTest::waitForSignal(m_process, SIGNAL(readyReadStandardOutput())));
m_client->setTraceState(false);
- QVERIFY2(QQmlDebugTest::waitForSignal(m_client, SIGNAL(complete())), "No trace received in time.");
- QVERIFY(m_client->traceMessages.count());
+ checkTraceReceived();
// check that at least one frame was rendered
// there should be a SGPolishAndSync + SGRendererFrame + SGRenderLoopFrame sequence
@@ -477,7 +488,7 @@ void tst_QQmlProfilerService::scenegraphData()
//
// since the rendering happens in a different thread, there could be other unrelated events interleaved
int loopcheck = 0;
- foreach (const QQmlProfilerData &msg, m_client->traceMessages) {
+ foreach (const QQmlProfilerData &msg, m_client->asynchronousMessages) {
if (msg.messageType == QQmlProfilerClient::SceneGraphFrame) {
if (loopcheck == 0 && msg.detailType == QQmlProfilerClient::SceneGraphContextFrame)
loopcheck = 1;
@@ -498,17 +509,7 @@ void tst_QQmlProfilerService::profileOnExit()
m_client->setTraceState(true);
- QVERIFY2(QQmlDebugTest::waitForSignal(m_client, SIGNAL(complete())), "No trace received in time.");
- QVERIFY2(m_client->traceMessages.count() >= 2,
- QString::number(m_client->traceMessages.count()).toUtf8().constData());
-
- // must start with "StartTrace"
- QCOMPARE(m_client->traceMessages.first().messageType, (int)QQmlProfilerClient::Event);
- QCOMPARE(m_client->traceMessages.first().detailType, (int)QQmlProfilerClient::StartTrace);
-
- // must end with "EndTrace"
- QCOMPARE(m_client->traceMessages.last().messageType, (int)QQmlProfilerClient::Event);
- QCOMPARE(m_client->traceMessages.last().detailType, (int)QQmlProfilerClient::EndTrace);
+ checkTraceReceived();
}
void tst_QQmlProfilerService::controlFromJS()
@@ -518,17 +519,7 @@ void tst_QQmlProfilerService::controlFromJS()
QTRY_COMPARE(m_client->state(), QQmlDebugClient::Enabled);
m_client->setTraceState(false);
- QVERIFY2(QQmlDebugTest::waitForSignal(m_client, SIGNAL(complete())), "No trace received in time.");
- QVERIFY2(m_client->traceMessages.count() >= 2,
- QString::number(m_client->traceMessages.count()).toUtf8().constData());
-
- // must start with "StartTrace"
- QCOMPARE(m_client->traceMessages.first().messageType, (int)QQmlProfilerClient::Event);
- QCOMPARE(m_client->traceMessages.first().detailType, (int)QQmlProfilerClient::StartTrace);
-
- // must end with "EndTrace"
- QCOMPARE(m_client->traceMessages.last().messageType, (int)QQmlProfilerClient::Event);
- QCOMPARE(m_client->traceMessages.last().detailType, (int)QQmlProfilerClient::EndTrace);
+ checkTraceReceived();
}
void tst_QQmlProfilerService::signalSourceLocation()
@@ -541,32 +532,24 @@ void tst_QQmlProfilerService::signalSourceLocation()
while (!(m_process->output().contains(QLatin1String("500"))))
QVERIFY(QQmlDebugTest::waitForSignal(m_process, SIGNAL(readyReadStandardOutput())));
m_client->setTraceState(false);
- QVERIFY2(QQmlDebugTest::waitForSignal(m_client, SIGNAL(complete())), "No trace received in time.");
-
- QVERIFY2(m_client->traceMessages.count() >= 20,
- QString::number(m_client->traceMessages.count()).toUtf8().constData());
-
- // must start with "StartTrace"
- QCOMPARE(m_client->traceMessages.first().messageType, (int)QQmlProfilerClient::Event);
- QCOMPARE(m_client->traceMessages.first().detailType, (int)QQmlProfilerClient::StartTrace);
-
- QCOMPARE(m_client->traceMessages[14].messageType, (int)QQmlProfilerClient::RangeLocation);
- QCOMPARE(m_client->traceMessages[14].detailType, (int)QQmlProfilerClient::HandlingSignal);
- QVERIFY2(m_client->traceMessages[14].detailData.endsWith("signalSourceLocation.qml"),
- m_client->traceMessages[14].detailData.toUtf8().constData());
- QCOMPARE(m_client->traceMessages[14].line, 8);
- QCOMPARE(m_client->traceMessages[14].column, 28);
-
- QCOMPARE(m_client->traceMessages[19].messageType, (int)QQmlProfilerClient::RangeLocation);
- QCOMPARE(m_client->traceMessages[19].detailType, (int)QQmlProfilerClient::HandlingSignal);
- QVERIFY2(m_client->traceMessages[19].detailData.endsWith("signalSourceLocation.qml"),
- m_client->traceMessages[19].detailData.toUtf8().constData());
- QCOMPARE(m_client->traceMessages[19].line, 7);
- QCOMPARE(m_client->traceMessages[19].column, 21);
-
- // must end with "EndTrace"
- QCOMPARE(m_client->traceMessages.last().messageType, (int)QQmlProfilerClient::Event);
- QCOMPARE(m_client->traceMessages.last().detailType, (int)QQmlProfilerClient::EndTrace);
+ checkTraceReceived();
+
+ QVERIFY2(m_client->synchronousMessages.count() >= 20,
+ QString::number(m_client->synchronousMessages.count()).toUtf8().constData());
+
+ QCOMPARE(m_client->synchronousMessages[14].messageType, (int)QQmlProfilerClient::RangeLocation);
+ QCOMPARE(m_client->synchronousMessages[14].detailType, (int)QQmlProfilerClient::HandlingSignal);
+ QVERIFY2(m_client->synchronousMessages[14].detailData.endsWith("signalSourceLocation.qml"),
+ m_client->synchronousMessages[14].detailData.toUtf8().constData());
+ QCOMPARE(m_client->synchronousMessages[14].line, 8);
+ QCOMPARE(m_client->synchronousMessages[14].column, 28);
+
+ QCOMPARE(m_client->synchronousMessages[19].messageType, (int)QQmlProfilerClient::RangeLocation);
+ QCOMPARE(m_client->synchronousMessages[19].detailType, (int)QQmlProfilerClient::HandlingSignal);
+ QVERIFY2(m_client->synchronousMessages[19].detailData.endsWith("signalSourceLocation.qml"),
+ m_client->synchronousMessages[19].detailData.toUtf8().constData());
+ QCOMPARE(m_client->synchronousMessages[19].line, 7);
+ QCOMPARE(m_client->synchronousMessages[19].column, 21);
}
void tst_QQmlProfilerService::javascript()
@@ -579,35 +562,28 @@ void tst_QQmlProfilerService::javascript()
while (!(m_process->output().contains(QLatin1String("done"))))
QVERIFY(QQmlDebugTest::waitForSignal(m_process, SIGNAL(readyReadStandardOutput())));
m_client->setTraceState(false);
- QVERIFY2(QQmlDebugTest::waitForSignal(m_client, SIGNAL(complete())), "No trace received in time.");
+ checkTraceReceived();
- QVERIFY2(m_client->traceMessages.count() >= 36,
- QString::number(m_client->traceMessages.count()).toUtf8().constData());
- // must start with "StartTrace"
- QCOMPARE(m_client->traceMessages.first().messageType, (int)QQmlProfilerClient::Event);
- QCOMPARE(m_client->traceMessages.first().detailType, (int)QQmlProfilerClient::StartTrace);
-
- QCOMPARE(m_client->traceMessages[32].messageType, (int)QQmlProfilerClient::RangeStart);
- QCOMPARE(m_client->traceMessages[32].detailType, (int)QQmlProfilerClient::Javascript);
+ QVERIFY2(m_client->synchronousMessages.count() >= 36,
+ QString::number(m_client->synchronousMessages.count()).toUtf8().constData());
- QCOMPARE(m_client->traceMessages[33].messageType, (int)QQmlProfilerClient::RangeLocation);
- QCOMPARE(m_client->traceMessages[33].detailType, (int)QQmlProfilerClient::Javascript);
- QVERIFY2(m_client->traceMessages[33].detailData.endsWith("javascript.qml"),
- m_client->traceMessages[33].detailData.toUtf8().constData());
- QCOMPARE(m_client->traceMessages[33].line, 4);
- QCOMPARE(m_client->traceMessages[33].column, 5);
+ QCOMPARE(m_client->synchronousMessages[32].messageType, (int)QQmlProfilerClient::RangeStart);
+ QCOMPARE(m_client->synchronousMessages[32].detailType, (int)QQmlProfilerClient::Javascript);
- QCOMPARE(m_client->traceMessages[34].messageType, (int)QQmlProfilerClient::RangeData);
- QCOMPARE(m_client->traceMessages[34].detailType, (int)QQmlProfilerClient::Javascript);
- QVERIFY2(m_client->traceMessages[34].detailData == "something",
- m_client->traceMessages[34].detailData.toUtf8().constData());
+ QCOMPARE(m_client->synchronousMessages[33].messageType, (int)QQmlProfilerClient::RangeLocation);
+ QCOMPARE(m_client->synchronousMessages[33].detailType, (int)QQmlProfilerClient::Javascript);
+ QVERIFY2(m_client->synchronousMessages[33].detailData.endsWith("javascript.qml"),
+ m_client->synchronousMessages[33].detailData.toUtf8().constData());
+ QCOMPARE(m_client->synchronousMessages[33].line, 4);
+ QCOMPARE(m_client->synchronousMessages[33].column, 5);
- QCOMPARE(m_client->traceMessages[35].messageType, (int)QQmlProfilerClient::RangeEnd);
- QCOMPARE(m_client->traceMessages[35].detailType, (int)QQmlProfilerClient::Javascript);
+ QCOMPARE(m_client->synchronousMessages[34].messageType, (int)QQmlProfilerClient::RangeData);
+ QCOMPARE(m_client->synchronousMessages[34].detailType, (int)QQmlProfilerClient::Javascript);
+ QVERIFY2(m_client->synchronousMessages[34].detailData == "something",
+ m_client->synchronousMessages[34].detailData.toUtf8().constData());
- // must end with "EndTrace"
- QCOMPARE(m_client->traceMessages.last().messageType, (int)QQmlProfilerClient::Event);
- QCOMPARE(m_client->traceMessages.last().detailType, (int)QQmlProfilerClient::EndTrace);
+ QCOMPARE(m_client->synchronousMessages[35].messageType, (int)QQmlProfilerClient::RangeEnd);
+ QCOMPARE(m_client->synchronousMessages[35].detailType, (int)QQmlProfilerClient::Javascript);
}
QTEST_MAIN(tst_QQmlProfilerService)