summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/qmlprofiler/qmlprofiler.qbs1
-rw-r--r--src/plugins/qmlprofiler/qmlprofilerplugin.cpp2
-rw-r--r--src/plugins/qmlprofiler/tests/check.datbin0 -> 54930 bytes
-rw-r--r--src/plugins/qmlprofiler/tests/qmlprofilertraceclient_test.cpp88
-rw-r--r--src/plugins/qmlprofiler/tests/qmlprofilertraceclient_test.h55
-rw-r--r--src/plugins/qmlprofiler/tests/tests.pri2
-rw-r--r--src/plugins/qmlprofiler/tests/tests.qrc2
-rw-r--r--src/plugins/qmlprofiler/tests/traces.datbin0 -> 1877403 bytes
8 files changed, 150 insertions, 0 deletions
diff --git a/src/plugins/qmlprofiler/qmlprofiler.qbs b/src/plugins/qmlprofiler/qmlprofiler.qbs
index 629641c415..53a46a54e9 100644
--- a/src/plugins/qmlprofiler/qmlprofiler.qbs
+++ b/src/plugins/qmlprofiler/qmlprofiler.qbs
@@ -94,6 +94,7 @@ QtcPlugin {
"qmlprofilerclientmanager_test.cpp", "qmlprofilerclientmanager_test.h",
"qmlprofilerconfigwidget_test.cpp", "qmlprofilerconfigwidget_test.h",
"qmlprofilerdetailsrewriter_test.cpp", "qmlprofilerdetailsrewriter_test.h",
+ "qmlprofilertraceclient_test.cpp", "qmlprofilertraceclient_test.h",
"qmlprofilertraceview_test.cpp", "qmlprofilertraceview_test.h",
"tests.qrc"
diff --git a/src/plugins/qmlprofiler/qmlprofilerplugin.cpp b/src/plugins/qmlprofiler/qmlprofilerplugin.cpp
index d18514eb88..2de162921c 100644
--- a/src/plugins/qmlprofiler/qmlprofilerplugin.cpp
+++ b/src/plugins/qmlprofiler/qmlprofilerplugin.cpp
@@ -49,6 +49,7 @@
#include "tests/qmlprofilerclientmanager_test.h"
#include "tests/qmlprofilerconfigwidget_test.h"
#include "tests/qmlprofilerdetailsrewriter_test.h"
+#include "tests/qmlprofilertraceclient_test.h"
#include "tests/qmlprofilertraceview_test.h"
// Force QML Debugging to be enabled, so that we can selftest the profiler
@@ -147,6 +148,7 @@ QList<QObject *> QmlProfiler::Internal::QmlProfilerPlugin::createTestObjects() c
tests << new QmlProfilerClientManagerTest;
tests << new QmlProfilerConfigWidgetTest;
tests << new QmlProfilerDetailsRewriterTest;
+ tests << new QmlProfilerTraceClientTest;
tests << new QmlProfilerTraceViewTest;
tests << new QQmlEngine; // Trigger debug connector to be started
diff --git a/src/plugins/qmlprofiler/tests/check.dat b/src/plugins/qmlprofiler/tests/check.dat
new file mode 100644
index 0000000000..15ab974b4a
--- /dev/null
+++ b/src/plugins/qmlprofiler/tests/check.dat
Binary files differ
diff --git a/src/plugins/qmlprofiler/tests/qmlprofilertraceclient_test.cpp b/src/plugins/qmlprofiler/tests/qmlprofilertraceclient_test.cpp
new file mode 100644
index 0000000000..e8781e790c
--- /dev/null
+++ b/src/plugins/qmlprofiler/tests/qmlprofilertraceclient_test.cpp
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+#include "qmlprofilertraceclient_test.h"
+#include <qmldebug/qpacketprotocol.h>
+#include <QtTest>
+
+namespace QmlProfiler {
+namespace Internal {
+
+QmlProfilerTraceClientTest::QmlProfilerTraceClientTest(QObject *parent) : QObject(parent),
+ traceClient(nullptr, &modelManager, std::numeric_limits<quint64>::max())
+{
+}
+
+static void bufferCompressedFile(const QString &name, QBuffer &buffer)
+{
+ QFile file(name);
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ buffer.setData(qUncompress(file.readAll()));
+ file.close();
+ QVERIFY(buffer.open(QIODevice::ReadOnly));
+}
+
+void QmlProfilerTraceClientTest::testMessageReceived()
+{
+ QBuffer inBuffer;
+ bufferCompressedFile(":/qmlprofiler/tests/traces.dat", inBuffer);
+ QDataStream inStream(&inBuffer);
+ inStream.setVersion(QDataStream::Qt_5_6);
+
+ QBuffer checkBuffer;
+ bufferCompressedFile(":/qmlprofiler/tests/check.dat", checkBuffer);
+ QDataStream checkStream(&checkBuffer);
+ checkStream.setVersion(QDataStream::Qt_5_6);
+
+ while (!inStream.atEnd()) {
+ QByteArray trace;
+ inStream >> trace;
+
+ QmlDebug::QPacket packet(QDataStream::Qt_4_7, trace);
+ while (!packet.atEnd()) {
+ QByteArray content;
+ packet >> content;
+ traceClient.messageReceived(content);
+ }
+
+ modelManager.replayEvents(-1, -1, [&](const QmlEvent &event, const QmlEventType &type) {
+ qint64 timestamp;
+ qint32 message;
+ qint32 rangeType;
+ checkStream >> timestamp >> message >> rangeType;
+ QCOMPARE(event.timestamp(), timestamp);
+ QCOMPARE(type.message(), static_cast<Message>(message));
+ QCOMPARE(type.rangeType(), static_cast<RangeType>(rangeType));
+ });
+
+ modelManager.clear();
+ traceClient.clear();
+ }
+
+ QVERIFY(checkStream.atEnd());
+}
+
+} // namespace Internal
+} // namespace QmlProfiler
diff --git a/src/plugins/qmlprofiler/tests/qmlprofilertraceclient_test.h b/src/plugins/qmlprofiler/tests/qmlprofilertraceclient_test.h
new file mode 100644
index 0000000000..8a72786a41
--- /dev/null
+++ b/src/plugins/qmlprofiler/tests/qmlprofilertraceclient_test.h
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+#pragma once
+
+#include <qmlprofiler/qmlprofilermodelmanager.h>
+#include <qmlprofiler/qmlprofilertraceclient.h>
+
+#include <QObject>
+
+extern "C" {
+int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) QMLPROFILER_EXPORT;
+}
+
+namespace QmlProfiler {
+namespace Internal {
+
+class QmlProfilerTraceClientTest : public QObject
+{
+ Q_OBJECT
+public:
+ QmlProfilerTraceClient traceClient;
+ explicit QmlProfilerTraceClientTest(QObject *parent = nullptr);
+
+private slots:
+ void testMessageReceived();
+
+private:
+ QmlProfilerModelManager modelManager;
+};
+
+} // namespace Internal
+} // namespace QmlProfiler
diff --git a/src/plugins/qmlprofiler/tests/tests.pri b/src/plugins/qmlprofiler/tests/tests.pri
index c456010043..7735d79c6b 100644
--- a/src/plugins/qmlprofiler/tests/tests.pri
+++ b/src/plugins/qmlprofiler/tests/tests.pri
@@ -16,6 +16,7 @@ SOURCES += \
$$PWD/qmlprofilerclientmanager_test.cpp \
$$PWD/qmlprofilerconfigwidget_test.cpp \
$$PWD/qmlprofilerdetailsrewriter_test.cpp \
+ $$PWD/qmlprofilertraceclient_test.cpp \
$$PWD/qmlprofilertraceview_test.cpp
HEADERS += \
@@ -36,6 +37,7 @@ HEADERS += \
$$PWD/qmlprofilerclientmanager_test.h \
$$PWD/qmlprofilerconfigwidget_test.h \
$$PWD/qmlprofilerdetailsrewriter_test.h \
+ $$PWD/qmlprofilertraceclient_test.h \
$$PWD/qmlprofilertraceview_test.h
RESOURCES += \
diff --git a/src/plugins/qmlprofiler/tests/tests.qrc b/src/plugins/qmlprofiler/tests/tests.qrc
index 323fb37b14..5b0598fc88 100644
--- a/src/plugins/qmlprofiler/tests/tests.qrc
+++ b/src/plugins/qmlprofiler/tests/tests.qrc
@@ -2,5 +2,7 @@
<qresource prefix="/qmlprofiler/tests">
<file>Test.qml</file>
<file>qmlprofilerdetailsrewriter_test.cpp</file>
+ <file>traces.dat</file>
+ <file>check.dat</file>
</qresource>
</RCC>
diff --git a/src/plugins/qmlprofiler/tests/traces.dat b/src/plugins/qmlprofiler/tests/traces.dat
new file mode 100644
index 0000000000..108ff72220
--- /dev/null
+++ b/src/plugins/qmlprofiler/tests/traces.dat
Binary files differ