void MemoryUsageModelTest::testAccepted() { QVERIFY(!model.accepted(QmlEventType())); QVERIFY(!model.accepted(QmlEventType(MaximumMessage, MaximumRangeType, HeapPage))); QVERIFY(model.accepted(QmlEventType(MemoryAllocation, MaximumRangeType, HeapPage))); QVERIFY(model.accepted(QmlEventType(MaximumMessage, Javascript))); }
void QmlProfilerToolTest::testClearEvents() { QmlProfilerTool profilerTool; QmlProfilerModelManager *modelManager = profilerTool.modelManager(); QVERIFY(modelManager); QmlProfilerStateManager *stateManager = profilerTool.stateManager(); QVERIFY(stateManager); stateManager->setCurrentState(QmlProfilerStateManager::AppRunning); stateManager->setServerRecording(true); QCOMPARE(modelManager->numEventTypes(), 0); QCOMPARE(modelManager->numEvents(), 0); const int typeIndex = modelManager->appendEventType(QmlEventType()); QCOMPARE(typeIndex, 0); modelManager->appendEvent(QmlEvent(0, typeIndex, "")); QCOMPARE(modelManager->numEventTypes(), 1); QCOMPARE(modelManager->numEvents(), 1); stateManager->setServerRecording(false); QCOMPARE(modelManager->numEventTypes(), 1); QCOMPARE(modelManager->numEvents(), 1); stateManager->setServerRecording(true); // clears previous events, but not types QCOMPARE(modelManager->numEventTypes(), 1); QCOMPARE(modelManager->numEvents(), 0); modelManager->appendEvent(QmlEvent(0, typeIndex, "")); QCOMPARE(modelManager->numEventTypes(), 1); QCOMPARE(modelManager->numEvents(), 1); }
void QmlProfilerTraceClient::setRequestedFeatures(quint64 features) { d->requestedFeatures = features; if (features & static_cast<quint64>(1) << ProfileDebugMessages) { d->messageClient.reset(new QmlDebug::QDebugMessageClient(connection())); connect(d->messageClient.data(), &QmlDebug::QDebugMessageClient::message, this, [this](QtMsgType type, const QString &text, const QmlDebug::QDebugContextInfo &context) { d->updateFeatures(ProfileDebugMessages); d->currentEvent.event.setTimestamp(context.timestamp); d->currentEvent.event.setTypeIndex(-1); d->currentEvent.event.setString(text); d->currentEvent.type = QmlEventType(DebugMessage, MaximumRangeType, type, QmlEventLocation(context.file, context.line, 1)); d->currentEvent.serverTypeId = 0; d->processCurrentEvent(); }); } else { d->messageClient.reset(); } }
void MemoryUsageModelTest::initTestCase() { manager.startAcquiring(); qint64 timestamp = 0; heapPageTypeId = manager.qmlModel()->addEventType( QmlEventType(MemoryAllocation, MaximumRangeType, HeapPage)); smallItemTypeId = manager.qmlModel()->addEventType( QmlEventType(MemoryAllocation, MaximumRangeType, SmallItem)); largeItemTypeId = manager.qmlModel()->addEventType( QmlEventType(MemoryAllocation, MaximumRangeType, LargeItem)); auto addMemoryEvents = [&]() { QmlEvent event; event.setTimestamp(++timestamp); event.setTypeIndex(heapPageTypeId); event.setNumbers({2048}); manager.qmlModel()->addEvent(event); manager.qmlModel()->addEvent(event); // allocate two of them and make the model summarize event.setTimestamp(++timestamp); event.setTypeIndex(smallItemTypeId); event.setNumbers({32}); manager.qmlModel()->addEvent(event); event.setTimestamp(++timestamp); event.setTypeIndex(largeItemTypeId); event.setNumbers({1024}); manager.qmlModel()->addEvent(event); event.setTimestamp(++timestamp); event.setTypeIndex(smallItemTypeId); event.setNumbers({-32}); manager.qmlModel()->addEvent(event); }; addMemoryEvents(); rangeTypeId = manager.qmlModel()->addEventType( QmlEventType(MaximumMessage, Javascript, -1, QmlEventLocation(QString("somefile.js"), 10, 20), QString("funcfunc"))); QmlEvent event; event.setRangeStage(RangeStart); event.setTimestamp(++timestamp); event.setTypeIndex(rangeTypeId); manager.qmlModel()->addEvent(event); addMemoryEvents(); addMemoryEvents(); // twice to also trigger summary in first row event.setRangeStage(RangeEnd); event.setTimestamp(++timestamp); manager.qmlModel()->addEvent(event); event.setTimestamp(++timestamp); event.setTypeIndex(largeItemTypeId); event.setNumbers({-1024}); manager.qmlModel()->addEvent(event); manager.acquiringDone(); QCOMPARE(manager.state(), QmlProfilerModelManager::Done); QCOMPARE(model.count(), 11); }