Squish: Perform additional Profiler test

Change-Id: I9ca615f89ac772fc87b9dc91ed2fbc42a3b763a3
Reviewed-by: Robert Loehning <robert.loehning@digia.com>
This commit is contained in:
Christian Stenger
2013-12-09 17:04:37 +01:00
parent f714c3811f
commit d94d343f4d
4 changed files with 92 additions and 65 deletions

View File

@@ -38,7 +38,9 @@ def main():
return return
# using a temporary directory won't mess up a potentially existing # using a temporary directory won't mess up a potentially existing
workingDir = tempDir() workingDir = tempDir()
checkedTargets, projectName = createNewQtQuickApplication(workingDir) # we need a Qt >= 4.8
analyzerTargets = Targets.desktopTargetClasses() ^ Targets.DESKTOP_474_GCC
checkedTargets, projectName = createNewQtQuickApplication(workingDir, targets=analyzerTargets)
editor = waitForObject(":Qt Creator_QmlJSEditor::QmlJSTextEditorWidget") editor = waitForObject(":Qt Creator_QmlJSEditor::QmlJSTextEditorWidget")
if placeCursorToLine(editor, "MouseArea.*", True): if placeCursorToLine(editor, "MouseArea.*", True):
type(editor, '<Up>') type(editor, '<Up>')
@@ -57,15 +59,21 @@ def main():
invokeMenuItem("File", "Save All") invokeMenuItem("File", "Save All")
availableConfigs = iterateBuildConfigs(len(checkedTargets), "Debug") availableConfigs = iterateBuildConfigs(len(checkedTargets), "Debug")
if not availableConfigs: if not availableConfigs:
test.fatal("Haven't found a suitable Qt version (need Qt 4.7.4) - leaving without debugging.") test.fatal("Haven't found a suitable Qt version (need Qt 4.8) - leaving without debugging.")
else:
performTest(workingDir, projectName, len(checkedTargets), availableConfigs, False)
performTest(workingDir, projectName, len(checkedTargets), availableConfigs, True)
invokeMenuItem("File", "Exit")
def performTest(workingDir, projectName, targetCount, availableConfigs, disableOptimizer):
for kit, config in availableConfigs: for kit, config in availableConfigs:
qtVersion = selectBuildConfig(len(checkedTargets), kit, config)[0] qtVersion = selectBuildConfig(targetCount, kit, config)[0]
if qtVersion == "4.7.4":
test.xverify(False, "Skipping Qt 4.7.4 to avoid QTCREATORBUG-9185")
continue
test.log("Selected kit using Qt %s" % qtVersion) test.log("Selected kit using Qt %s" % qtVersion)
progressBarWait() # progress bars move buttons progressBarWait() # progress bars move buttons
verifyBuildConfig(len(checkedTargets), kit, True, enableQmlDebug=True) verifyBuildConfig(targetCount, kit, True, enableQmlDebug=True)
if disableOptimizer:
batchEditRunEnvironment(targetCount, kit, ["QML_DISABLE_OPTIMIZER=1"])
switchViewTo(ViewConstants.EDIT)
# explicitly build before start debugging for adding the executable as allowed program to WinFW # explicitly build before start debugging for adding the executable as allowed program to WinFW
invokeMenuItem("Build", "Rebuild All") invokeMenuItem("Build", "Rebuild All")
waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}", waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}",
@@ -96,18 +104,24 @@ def main():
model = waitForObject(":Events.QmlProfilerEventsTable_QmlProfiler::" model = waitForObject(":Events.QmlProfilerEventsTable_QmlProfiler::"
"Internal::QmlProfilerEventsMainView").model() "Internal::QmlProfilerEventsMainView").model()
if qtVersion.startswith("5."): if qtVersion.startswith("5."):
if disableOptimizer:
compareEventsTab(model, "events_qt50_nonOptimized.tsv")
else:
compareEventsTab(model, "events_qt50.tsv") compareEventsTab(model, "events_qt50.tsv")
numberOfMsRows = 3 numberOfMsRows = 3
else: else:
if qtVersion.startswith("4.8"): if disableOptimizer:
compareEventsTab(model, "events_qt48.tsv") compareEventsTab(model, "events_qt48_nonOptimized.tsv")
else: else:
compareEventsTab(model, "events_qt47.tsv") compareEventsTab(model, "events_qt48.tsv")
numberOfMsRows = 2 numberOfMsRows = 2
test.compare(dumpItems(model, column=colPercent)[0], '100.00 %') test.compare(dumpItems(model, column=colPercent)[0], '100.00 %')
for i in [colTotal, colMean, colMedian, colLongest, colShortest]: for i in [colTotal, colMean, colMedian, colLongest, colShortest]:
for item in dumpItems(model, column=i)[:numberOfMsRows]: for item in dumpItems(model, column=i)[:numberOfMsRows]:
test.verify(item.endswith(' ms'), "Verify that '%s' ends with ' ms'" % item) test.verify(item.endswith(' ms'), "Verify that '%s' ends with ' ms'" % item)
for item in dumpItems(model, column=i):
test.verify(not item.startswith('0.000 '),
"Check for implausible durations (QTCREATORBUG-8996): %s" % item)
for row in range(model.rowCount()): for row in range(model.rowCount()):
if str(model.index(row, colCalls).data()) == "1": if str(model.index(row, colCalls).data()) == "1":
for col in [colMedian, colLongest, colShortest]: for col in [colMedian, colLongest, colShortest]:
@@ -117,7 +131,6 @@ def main():
test.compare(model.index(row, colMedian).data(), model.index(row, colLongest).data(), test.compare(model.index(row, colMedian).data(), model.index(row, colLongest).data(),
"For two calls, median and longest time must be the same.") "For two calls, median and longest time must be the same.")
deleteAppFromWinFW(workingDir, projectName, False) deleteAppFromWinFW(workingDir, projectName, False)
invokeMenuItem("File", "Exit")
def compareEventsTab(model, file): def compareEventsTab(model, file):
significantColumns = [0, 1, 4, 9] significantColumns = [0, 1, 4, 9]

View File

@@ -1,4 +0,0 @@
"0" "1" "4" "9"
"<program>" "Binding" "1" "Main Program"
"main.qml:15" "Signal" "2" "triggered(): { runCount += 1; var i; for (i = 1; i < 2500; ++i) { var j = i * i; console.log(j); } }"
"main.qml:14" "Binding" "2" "running: runCount < 2"
1 0 1 4 9
2 <program> Binding 1 Main Program
3 main.qml:15 Signal 2 triggered(): { runCount += 1; var i; for (i = 1; i < 2500; ++i) { var j = i * i; console.log(j); } }
4 main.qml:14 Binding 2 running: runCount < 2

View File

@@ -0,0 +1,9 @@
"0" "1" "4" "9"
"<program>" "Binding" "1" "Main Program"
"main.qml:15" "Signal" "2" "triggered(): { runCount += 1; var i; for (i = 1; i < 2500; ++i) { var j = i * i; console.log(j); } }"
"main.qml:1" "Create" "1" "main.qml"
"main.qml:1" "Compile" "1" "main.qml"
"main.qml:7" "Binding" "1" "text: qsTr(""Hello World"")"
"main.qml:14" "Binding" "3" "running: runCount < 2"
"main.qml:8" "Binding" "1" "centerIn: parent"
"main.qml:27" "Binding" "1" "fill: parent"
1 0 1 4 9
2 <program> Binding 1 Main Program
3 main.qml:15 Signal 2 triggered(): { runCount += 1; var i; for (i = 1; i < 2500; ++i) { var j = i * i; console.log(j); } }
4 main.qml:1 Create 1 main.qml
5 main.qml:1 Compile 1 main.qml
6 main.qml:7 Binding 1 text: qsTr("Hello World")
7 main.qml:14 Binding 3 running: runCount < 2
8 main.qml:8 Binding 1 centerIn: parent
9 main.qml:27 Binding 1 fill: parent

View File

@@ -0,0 +1,9 @@
"0" "1" "4" "9"
"<program>" "Binding" "1" "Main Program"
"main.qml:1" "Create" "1" "main.qml"
"main.qml:15" "Signal" "2" "triggered(): { runCount += 1; var i; for (i = 1; i < 2500; ++i) { var j = i * i; console.log(j); } }"
"main.qml:1" "Compile" "1" "main.qml"
"main.qml:7" "Binding" "1" "text: qsTr(""Hello World"")"
"main.qml:14" "Binding" "3" "running: runCount < 2"
"main.qml:8" "Binding" "1" "centerIn: parent"
"main.qml:27" "Binding" "1" "fill: parent"
1 0 1 4 9
2 <program> Binding 1 Main Program
3 main.qml:1 Create 1 main.qml
4 main.qml:15 Signal 2 triggered(): { runCount += 1; var i; for (i = 1; i < 2500; ++i) { var j = i * i; console.log(j); } }
5 main.qml:1 Compile 1 main.qml
6 main.qml:7 Binding 1 text: qsTr("Hello World")
7 main.qml:14 Binding 3 running: runCount < 2
8 main.qml:8 Binding 1 centerIn: parent
9 main.qml:27 Binding 1 fill: parent