From 2e079717e7157815cde08d3c7c62ec489d48a5ab Mon Sep 17 00:00:00 2001 From: Kenzie Schmoll Date: Tue, 7 Mar 2023 15:00:10 -0800 Subject: [PATCH 01/10] parent ee98f444b5bc4b1fa2dec4e8131fc341e8f2a759 author Kenzie Schmoll 1678230010 -0800 committer Kenzie Schmoll 1678235124 -0800 parent ee98f444b5bc4b1fa2dec4e8131fc341e8f2a759 author Kenzie Schmoll 1678230010 -0800 committer Kenzie Schmoll 1678235093 -0800 Make FlatTable scrollable when there is a single wide column revert test change fix up table formatting formatting size method table to fit Add Method Table to the CPU Profiler --- .../profiler/cpu_profile_controller.dart | 8 + .../screens/profiler/cpu_profile_model.dart | 2 +- .../src/screens/profiler/cpu_profiler.dart | 6 +- .../panes/method_table/method_table.dart | 77 ++++-- .../method_table/method_table_controller.dart | 60 +++- .../method_table/method_table_model.dart | 130 ++++++--- .../lib/src/shared/feature_flags.dart | 7 - .../lib/src/shared/primitives/graph.dart | 6 +- .../lib/src/shared/profiler_utils.dart | 39 +-- .../lib/src/shared/table/table_data.dart | 26 +- .../cpu_profiler_controller_test.dart | 38 +-- .../test/cpu_profiler/cpu_profiler_test.dart | 3 - .../method_table_controller_test.dart | 185 +++++++++++++ .../method_table/method_table_model_test.dart | 105 +++++++ .../method_table/method_table_test.dart | 1 + .../devtools_app/test/shared/table_test.dart | 2 +- .../test_data/cpu_profiler/cpu_profile.dart | 40 +++ .../cpu_profiler/simple_profile_1.dart | 238 ++++++++++++++++ .../cpu_profiler/simple_profile_2.dart | 261 ++++++++++++++++++ 19 files changed, 1096 insertions(+), 138 deletions(-) create mode 100644 packages/devtools_app/test/cpu_profiler/method_table/method_table_controller_test.dart create mode 100644 packages/devtools_app/test/cpu_profiler/method_table/method_table_model_test.dart create mode 100644 packages/devtools_app/test/cpu_profiler/method_table/method_table_test.dart create mode 100644 packages/devtools_app/test/test_infra/test_data/cpu_profiler/simple_profile_1.dart create mode 100644 packages/devtools_app/test/test_infra/test_data/cpu_profiler/simple_profile_2.dart diff --git a/packages/devtools_app/lib/src/screens/profiler/cpu_profile_controller.dart b/packages/devtools_app/lib/src/screens/profiler/cpu_profile_controller.dart index f7d3d5f11ef..49fed3886b8 100644 --- a/packages/devtools_app/lib/src/screens/profiler/cpu_profile_controller.dart +++ b/packages/devtools_app/lib/src/screens/profiler/cpu_profile_controller.dart @@ -255,6 +255,10 @@ class CpuProfilerController extends DisposableController } if (shouldApplyFilters) { cpuProfiles = _filterData(cpuProfiles); + // TODO(kenz): this could be a performance bottleneck we can improve. We + // are processing the data twice (here and above in this method) when + // filters are applied. We shouldn't need the data to be processed in + // order to filter it. await cpuProfiles.process( transformer: transformer, processId: processId, @@ -266,6 +270,10 @@ class CpuProfilerController extends DisposableController ); } } + // TODO(kenz): consider implementing the "active feature" logic that we use + // on the performance page to defer the work of creating the method table + // until we need it. + methodTableController.createMethodTableGraph(cpuProfiles.functionProfile); return cpuProfiles; } diff --git a/packages/devtools_app/lib/src/screens/profiler/cpu_profile_model.dart b/packages/devtools_app/lib/src/screens/profiler/cpu_profile_model.dart index cdc135176e0..6b0c9ce788f 100644 --- a/packages/devtools_app/lib/src/screens/profiler/cpu_profile_model.dart +++ b/packages/devtools_app/lib/src/screens/profiler/cpu_profile_model.dart @@ -912,7 +912,7 @@ class CpuStackFrame extends TreeNode final String packageUri; String get packageUriWithSourceLine => - '$packageUri${sourceLine != null ? ':$sourceLine' : ''}'; + uriWithSourceLine(packageUri, sourceLine); final int? sourceLine; diff --git a/packages/devtools_app/lib/src/screens/profiler/cpu_profiler.dart b/packages/devtools_app/lib/src/screens/profiler/cpu_profiler.dart index 86089343b9e..22f3ace3b16 100644 --- a/packages/devtools_app/lib/src/screens/profiler/cpu_profiler.dart +++ b/packages/devtools_app/lib/src/screens/profiler/cpu_profiler.dart @@ -10,7 +10,6 @@ import '../../shared/analytics/constants.dart' as gac; import '../../shared/charts/flame_chart.dart'; import '../../shared/common_widgets.dart'; import '../../shared/dialogs.dart'; -import '../../shared/feature_flags.dart'; import '../../shared/globals.dart'; import '../../shared/primitives/auto_dispose.dart'; import '../../shared/primitives/utils.dart'; @@ -43,8 +42,7 @@ class CpuProfiler extends StatefulWidget { _buildTab(key: summaryTab, tabName: 'Summary'), _buildTab(key: bottomUpTab, tabName: 'Bottom Up'), _buildTab(key: callTreeTab, tabName: 'Call Tree'), - if (FeatureFlags.methodTable) - _buildTab(key: methodTableTab, tabName: 'Method Table'), + _buildTab(key: methodTableTab, tabName: 'Method Table'), _buildTab(key: flameChartTab, tabName: 'CPU Flame Chart'), ]; @@ -349,7 +347,7 @@ class _CpuProfilerState extends State if (summaryView != null) summaryView, bottomUp, callTree, - if (FeatureFlags.methodTable) methodTable, + methodTable, cpuFlameChart, ]; } diff --git a/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table.dart b/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table.dart index af3ce525b77..ee63617f146 100644 --- a/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table.dart +++ b/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table.dart @@ -7,6 +7,7 @@ import 'package:flutter/material.dart'; import '../../../../shared/common_widgets.dart'; import '../../../../shared/primitives/auto_dispose.dart'; import '../../../../shared/primitives/utils.dart'; +import '../../../../shared/profiler_utils.dart'; import '../../../../shared/split.dart'; import '../../../../shared/table/table.dart'; import '../../../../shared/table/table_data.dart'; @@ -38,6 +39,8 @@ class CpuMethodTable extends StatelessWidget { } } +// TODO(kenz): ensure that this table automatically scrolls to the selected +// node from [MethodTableController]. /// A table of methods and their timing information for a CPU profile. class _MethodTable extends StatelessWidget { const _MethodTable(this._methodTableController, this._methods); @@ -46,8 +49,8 @@ class _MethodTable extends StatelessWidget { static final selfTimeColumn = _SelfTimeColumn(); static final totalTimeColumn = _TotalTimeColumn(); static final columns = List>.unmodifiable([ - selfTimeColumn, totalTimeColumn, + selfTimeColumn, methodColumn, ]); @@ -63,9 +66,10 @@ class _MethodTable extends StatelessWidget { data: _methods, dataKey: 'cpu-profile-methods', columns: columns, - defaultSortColumn: selfTimeColumn, + defaultSortColumn: totalTimeColumn, defaultSortDirection: SortDirection.descending, selectionNotifier: _methodTableController.selectedNode, + sizeToFit: false, ), ); } @@ -109,13 +113,15 @@ class _MethodGraphState extends State<_MethodGraph> with AutoDisposeMixin { @override Widget build(BuildContext context) { - if (_selectedGraphNode == null) { + final selectedNode = _selectedGraphNode; + if (selectedNode == null) { return OutlineDecoration.onlyLeft( child: const Center( child: Text('Select a method to view its call graph.'), ), ); } + final selectedNodeDisplay = selectedNode.display; return OutlineDecoration.onlyLeft( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -128,12 +134,17 @@ class _MethodGraphState extends State<_MethodGraph> with AutoDisposeMixin { ), ), ), - Padding( - padding: const EdgeInsets.all(denseSpacing), - child: Row( - children: [ - Text(_selectedGraphNode!.display), - ], + DevToolsTooltip( + message: selectedNodeDisplay, + child: Padding( + padding: const EdgeInsets.all(denseSpacing), + child: MethodAndSourceDisplay( + methodName: selectedNode.name, + packageUri: selectedNode.packageUri, + sourceLine: selectedNode.sourceLine, + isSelected: false, + displayInRow: false, + ), ), ), Flexible( @@ -181,6 +192,7 @@ class _CallersTable extends StatelessWidget { defaultSortColumn: _callerTimeColumn, defaultSortDirection: SortDirection.descending, selectionNotifier: _methodTableController.selectedNode, + sizeToFit: false, ); } } @@ -216,15 +228,15 @@ class _CalleesTable extends StatelessWidget { defaultSortColumn: _calleeTimeColumn, defaultSortDirection: SortDirection.descending, selectionNotifier: _methodTableController.selectedNode, + sizeToFit: false, ); } } -class _MethodColumn extends ColumnData { +class _MethodColumn extends ColumnData + implements ColumnRenderer { _MethodColumn() : super.wide('Method'); - static const _separator = ' - '; - @override bool get supportsSorting => true; @@ -232,47 +244,68 @@ class _MethodColumn extends ColumnData { String getValue(MethodTableGraphNode dataObject) => dataObject.name; @override - String getTooltip(MethodTableGraphNode dataObject) { - return '${dataObject.name}$_separator(${dataObject.packageUri})'; + String getDisplayValue(MethodTableGraphNode dataObject) => dataObject.display; + + @override + String getTooltip(MethodTableGraphNode dataObject) => dataObject.display; + + @override + Widget? build( + BuildContext context, + MethodTableGraphNode data, { + bool isRowSelected = false, + VoidCallback? onPressed, + }) { + return MethodAndSourceDisplay( + methodName: data.name, + packageUri: data.packageUri, + sourceLine: data.sourceLine, + isSelected: isRowSelected, + ); } } +const _totalAndSelfColumnWidth = 75.0; +const _callGraphColumnWidth = 80.0; + class _SelfTimeColumn extends TimeAndPercentageColumn { _SelfTimeColumn({String? titleTooltip}) : super( - title: 'Self Time', + title: 'Self %', titleTooltip: titleTooltip, + percentageOnly: true, timeProvider: (node) => node.selfTime, percentAsDoubleProvider: (node) => node.selfTimeRatio, secondaryCompare: (node) => node.name, + columnWidth: _totalAndSelfColumnWidth, ); } class _TotalTimeColumn extends TimeAndPercentageColumn { _TotalTimeColumn({String? titleTooltip}) : super( - title: 'Total Time', + title: 'Total %', titleTooltip: titleTooltip, + percentageOnly: true, timeProvider: (node) => node.totalTime, percentAsDoubleProvider: (node) => node.totalTimeRatio, secondaryCompare: (node) => node.name, + columnWidth: _totalAndSelfColumnWidth, ); } -const _percentageOnlyWidth = 100.0; - class _CallerTimeColumn extends TimeAndPercentageColumn { _CallerTimeColumn({ required MethodTableController methodTableController, String? titleTooltip, }) : super( - title: 'Caller Time', + title: 'Caller %', titleTooltip: titleTooltip, percentageOnly: true, percentAsDoubleProvider: (node) => methodTableController.callerPercentageFor(node), secondaryCompare: (node) => node.name, - columnWidth: _percentageOnlyWidth, + columnWidth: _callGraphColumnWidth, ); } @@ -281,12 +314,12 @@ class _CalleeTimeColumn extends TimeAndPercentageColumn { required MethodTableController methodTableController, String? titleTooltip, }) : super( - title: 'Callee Time', + title: 'Callee %', titleTooltip: titleTooltip, percentageOnly: true, percentAsDoubleProvider: (node) => methodTableController.calleePercentageFor(node), secondaryCompare: (node) => node.name, - columnWidth: _percentageOnlyWidth, + columnWidth: _callGraphColumnWidth, ); } diff --git a/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_controller.dart b/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_controller.dart index 9477081611a..decd7109090 100644 --- a/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_controller.dart +++ b/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_controller.dart @@ -4,6 +4,7 @@ import 'package:flutter/foundation.dart'; +import '../../../../shared/primitives/trees.dart'; import '../../cpu_profile_model.dart'; import 'method_table_model.dart'; @@ -14,10 +15,55 @@ import 'method_table_model.dart'; class MethodTableController { final selectedNode = ValueNotifier(null); - final methods = ValueNotifier>([]); + ValueListenable> get methods => _methods; - void createMethodTableForProfile(CpuProfileData cpuProfileData) { - // TODO(kenz): generate the method table graph. + final _methods = ValueNotifier>([]); + + void createMethodTableGraph(CpuProfileData cpuProfileData) { + reset(); + assert(cpuProfileData.processed); + + List profileRoots = cpuProfileData.callTreeRoots; + // For a profile rooted at tags, treat it as if it is not. Otherwise, the + // tags will show up in the method table. + if (cpuProfileData.rootedAtTags) { + profileRoots = []; + for (final tagRoot in cpuProfileData.callTreeRoots) { + profileRoots.addAll(tagRoot.children); + } + } + + final methodMap = {}; + for (final root in profileRoots) { + depthFirstTraversal( + root, + action: (CpuStackFrame frame) { + final parentNode = frame.parent != null && + frame.parentId != CpuProfileData.rootId && + !frame.parent!.isTag + // Since we are performing a DFS, the parent should always be in + // the map. + ? methodMap[frame.parent!.methodTableId]! + : null; + + var graphNode = MethodTableGraphNode.fromStackFrame(frame); + final existingNode = methodMap[frame.methodTableId]; + if (existingNode != null) { + // If the graph node already exists, merge the new one with the old + // one and use the existing instance. + existingNode.merge(graphNode); + graphNode = existingNode; + } + methodMap[graphNode.id] = graphNode; + + parentNode?.outgoingEdge( + graphNode, + edgeWeight: frame.inclusiveSampleCount, + ); + }, + ); + } + _methods.value = methodMap.values.toList(); } double callerPercentageFor(MethodTableGraphNode node) { @@ -30,6 +76,12 @@ class MethodTableController { void reset() { selectedNode.value = null; - methods.value = []; + _methods.value = []; + } + + @visibleForTesting + String graphAsString() { + methods.value.sort((m1, m2) => m2.totalCount.compareTo(m1.totalCount)); + return methods.value.map((node) => node.toString()).toList().join('\n'); } } diff --git a/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_model.dart b/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_model.dart index 1cfa3e662c7..daba67e0142 100644 --- a/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_model.dart +++ b/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_model.dart @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import 'package:collection/collection.dart'; + import '../../../../shared/primitives/graph.dart'; import '../../../../shared/primitives/utils.dart'; import '../../../../shared/profiler_utils.dart'; @@ -12,13 +14,21 @@ class MethodTableGraphNode extends GraphNode { MethodTableGraphNode({ required this.name, required this.packageUri, + required this.sourceLine, + required int totalCount, + required int selfCount, required this.profileMetaData, - }); + }) : _totalCount = totalCount, + _selfCount = selfCount, + _sourceUri = uriWithSourceLine(packageUri, sourceLine); factory MethodTableGraphNode.fromStackFrame(CpuStackFrame frame) { return MethodTableGraphNode( name: frame.name, packageUri: frame.packageUri, + sourceLine: frame.sourceLine, + totalCount: frame.inclusiveSampleCount, + selfCount: frame.exclusiveSampleCount, profileMetaData: frame.profileMetaData, ); } @@ -27,48 +37,102 @@ class MethodTableGraphNode extends GraphNode { final String packageUri; - final ProfileMetaData profileMetaData; + final int? sourceLine; - String get id => '$name-$packageUri'; + final String _sourceUri; - String get display => '$name ($packageUri)'; + final ProfileMetaData profileMetaData; - // TODO(kenz): implement the calculation for exclusive and inclusive count. + String get id => '$name-$_sourceUri'; - /// The number of cpu samples where this frame is on top of the stack. - /// - /// This count is used to calculate self time. - int exclusiveSampleCount = 0; + String get display => + '$name${_sourceUri.isNotEmpty ? ' - ($_sourceUri)' : ''}'; - /// The number of cpu samples where this frame is anywhere on the stack. - /// - /// This count is used to calculate total time. - int inclusiveSampleCount = 0; + /// The number of cpu samples where this method is on top of the stack. + int get selfCount => _selfCount; + late int _selfCount; - late double totalTimeRatio = - safeDivide(inclusiveSampleCount, profileMetaData.sampleCount); + /// The number of cpu samples where this method is anywhere on the stack. + int get totalCount => _totalCount; + late int _totalCount; - late Duration totalTime = Duration( - microseconds: - (totalTimeRatio * profileMetaData.time!.duration.inMicroseconds) - .round(), - ); + double get selfTimeRatio => + safeDivide(selfCount, profileMetaData.sampleCount); - late double selfTimeRatio = - safeDivide(exclusiveSampleCount, profileMetaData.sampleCount); + Duration get selfTime => Duration( + microseconds: + (selfTimeRatio * profileMetaData.time!.duration.inMicroseconds) + .round(), + ); - late Duration selfTime = Duration( - microseconds: - (selfTimeRatio * profileMetaData.time!.duration.inMicroseconds).round(), - ); + double get totalTimeRatio => + safeDivide(totalCount, profileMetaData.sampleCount); - double get inclusiveSampleRatio => safeDivide( - inclusiveSampleCount, - profileMetaData.sampleCount, + Duration get totalTime => Duration( + microseconds: + (totalTimeRatio * profileMetaData.time!.duration.inMicroseconds) + .round(), ); - double get exclusiveSampleRatio => safeDivide( - exclusiveSampleCount, - profileMetaData.sampleCount, - ); + void merge(MethodTableGraphNode other) { + if (!shallowEquals(other)) return; + _totalCount += other.totalCount; + _selfCount += other.selfCount; + } + + bool shallowEquals(other) { + return other is MethodTableGraphNode && + other.name == name && + other._sourceUri == _sourceUri; + } + + @override + String toString() { + String generateDisplayFor( + Set nodes, { + required double Function(MethodTableGraphNode) percentCallback, + }) { + return nodes + .cast() + // Sort in descending order. + .sorted((a, b) => percentCallback(b).compareTo(percentCallback(a))) + .map( + (node) => '${node.display} - ${percent2(percentCallback(node))}', + ) + .join('\n '); + } + + final callers = generateDisplayFor( + predecessors, + percentCallback: predecessorEdgePercentage, + ); + + final callees = generateDisplayFor( + successors, + percentCallback: successorEdgePercentage, + ); + + return ''' +$display ($totalCount samples) + Callers: + ${callers.isEmpty ? '[]' : callers} + Callees: + ${callees.isEmpty ? '[]' : callees} +'''; + } + + MethodTableGraphNode copy() { + return MethodTableGraphNode( + name: name, + packageUri: packageUri, + sourceLine: sourceLine, + totalCount: totalCount, + selfCount: selfCount, + profileMetaData: profileMetaData, + ); + } +} + +extension MethodTableExtension on CpuStackFrame { + String get methodTableId => '$name-$packageUriWithSourceLine'; } diff --git a/packages/devtools_app/lib/src/shared/feature_flags.dart b/packages/devtools_app/lib/src/shared/feature_flags.dart index 4cf141474c2..abe16019830 100644 --- a/packages/devtools_app/lib/src/shared/feature_flags.dart +++ b/packages/devtools_app/lib/src/shared/feature_flags.dart @@ -51,13 +51,6 @@ abstract class FeatureFlags { /// this flag. static bool embeddedPerfetto = true; - /// Flag to enable the CPU profiler method table. - /// - /// This feature is under development. - /// TODO(https://github.com/flutter/devtools/issues/841): remove this flag and - /// enable by default when complete. - static bool methodTable = enableExperiments; - /// Flag to enable widget rebuild stats ui. /// /// https://github.com/flutter/devtools/issues/4564. diff --git a/packages/devtools_app/lib/src/shared/primitives/graph.dart b/packages/devtools_app/lib/src/shared/primitives/graph.dart index c938ebc7236..132294a3777 100644 --- a/packages/devtools_app/lib/src/shared/primitives/graph.dart +++ b/packages/devtools_app/lib/src/shared/primitives/graph.dart @@ -69,13 +69,13 @@ class GraphNode { } /// Create outgoing edge from [this] node to the given node [n]. - void outgoingEdge(GraphNode n, {int edgeCount = 1}) { + void outgoingEdge(GraphNode n, {int edgeWeight = 1}) { n.predecessors.add(this); final predEdgeCount = n.predecessorEdgeCounts[this] ?? 0; - n.predecessorEdgeCounts[this] = predEdgeCount + edgeCount; + n.predecessorEdgeCounts[this] = predEdgeCount + edgeWeight; successors.add(n); final succEdgeCount = successorEdgeCounts[n] ?? 0; - successorEdgeCounts[n] = succEdgeCount + edgeCount; + successorEdgeCounts[n] = succEdgeCount + edgeWeight; } } diff --git a/packages/devtools_app/lib/src/shared/profiler_utils.dart b/packages/devtools_app/lib/src/shared/profiler_utils.dart index 2f28ba2b4ac..4f3b60529b0 100644 --- a/packages/devtools_app/lib/src/shared/profiler_utils.dart +++ b/packages/devtools_app/lib/src/shared/profiler_utils.dart @@ -246,8 +246,9 @@ class MethodAndSourceDisplay extends StatelessWidget { const MethodAndSourceDisplay({ required this.methodName, required this.packageUri, - this.sourceLine, + required this.sourceLine, required this.isSelected, + this.displayInRow = true, super.key, }); @@ -261,6 +262,8 @@ class MethodAndSourceDisplay extends StatelessWidget { final bool isSelected; + final bool displayInRow; + @override Widget build(BuildContext context) { final textColor = isSelected ? defaultSelectionForegroundColor : null; @@ -304,22 +307,26 @@ class MethodAndSourceDisplay extends StatelessWidget { ); } } - return Row( - children: [ - RichText( - maxLines: 1, - overflow: TextOverflow.ellipsis, - text: TextSpan( - text: methodName, - style: fontStyle, - children: sourceTextSpans, - ), - ), - // Include this [Spacer] so that the clickable [VmServiceObjectLink] - // does not extend all the way to the end of the row. - const Spacer(), - ], + final richText = RichText( + maxLines: 1, + overflow: TextOverflow.ellipsis, + text: TextSpan( + text: methodName, + style: fontStyle, + children: sourceTextSpans, + ), ); + if (displayInRow) { + return Row( + children: [ + richText, + // Include this [Spacer] so that the clickable [VmServiceObjectLink] + // does not extend all the way to the end of the row. + const Spacer(), + ], + ); + } + return richText; } } diff --git a/packages/devtools_app/lib/src/shared/table/table_data.dart b/packages/devtools_app/lib/src/shared/table/table_data.dart index 56b71dcd690..0ba5196b0bb 100644 --- a/packages/devtools_app/lib/src/shared/table/table_data.dart +++ b/packages/devtools_app/lib/src/shared/table/table_data.dart @@ -187,8 +187,7 @@ abstract class TimeAndPercentageColumn extends ColumnData { this.percentageOnly = false, double columnWidth = _defaultTimeColumnWidth, super.titleTooltip, - }) : assert(percentageOnly == (timeProvider == null)), - super( + }) : super( title, fixedWidthPx: scaleByFontFactor(columnWidth), ); @@ -226,17 +225,28 @@ abstract class TimeAndPercentageColumn extends ColumnData { @override String getDisplayValue(T dataObject) { - final percentDisplay = '${percent2(percentAsDoubleProvider(dataObject))}'; - if (percentageOnly) { - return percentDisplay; - } - return '${msText(timeProvider!(dataObject), fractionDigits: 2)} ($percentDisplay)'; + if (percentageOnly) return _percentDisplay(dataObject); + return _timeAndPercentage(dataObject); } @override - String getTooltip(T dataObject) => tooltipProvider?.call(dataObject) ?? ''; + String getTooltip(T dataObject) { + if (tooltipProvider != null) { + return tooltipProvider!(dataObject); + } + if (percentageOnly && timeProvider != null) { + return _timeAndPercentage(dataObject); + } + return ''; + } @override InlineSpan? getRichTooltip(T dataObject, BuildContext context) => richTooltipProvider?.call(dataObject, context); + + String _timeAndPercentage(T dataObject) => + '${msText(timeProvider!(dataObject), fractionDigits: 2)} (${_percentDisplay(dataObject)})'; + + String _percentDisplay(T dataObject) => + '${percent2(percentAsDoubleProvider(dataObject))}'; } diff --git a/packages/devtools_app/test/cpu_profiler/cpu_profiler_controller_test.dart b/packages/devtools_app/test/cpu_profiler/cpu_profiler_controller_test.dart index a6512bcc60c..1485eec7996 100644 --- a/packages/devtools_app/test/cpu_profiler/cpu_profiler_controller_test.dart +++ b/packages/devtools_app/test/cpu_profiler/cpu_profiler_controller_test.dart @@ -338,47 +338,13 @@ void main() { await controller.loadDataWithTag(CpuProfilerController.groupByUserTag); expect( controller.dataNotifier.value!.cpuProfileRoot.profileAsString(), - equals( - ''' - all - children: 3 - excl: 0 - incl: 5 - userTagA - children: 1 - excl: 0 - incl: 2 - Frame1 - children: 2 - excl: 0 - incl: 2 - Frame2 - children: 1 - excl: 0 - incl: 1 - Frame3 - children: 0 - excl: 1 - incl: 1 - Frame5 - children: 0 - excl: 1 - incl: 1 - userTagB - children: 1 - excl: 0 - incl: 1 - Frame1 - children: 1 - excl: 0 - incl: 1 - Frame2 - children: 1 - excl: 0 - incl: 1 - Frame4 - children: 0 - excl: 1 - incl: 1 - userTagC - children: 1 - excl: 0 - incl: 2 - Frame1 - children: 1 - excl: 0 - incl: 2 - Frame5 - children: 1 - excl: 1 - incl: 2 - Frame6 - children: 0 - excl: 1 - incl: 1 -''', - ), + profileGroupedByUserTagsGolden, ); await controller.loadDataWithTag(CpuProfilerController.groupByVmTag); expect( controller.dataNotifier.value!.cpuProfileRoot.profileAsString(), - equals( - ''' - all - children: 3 - excl: 0 - incl: 5 - vmTagA - children: 1 - excl: 0 - incl: 2 - Frame1 - children: 2 - excl: 0 - incl: 2 - Frame2 - children: 1 - excl: 0 - incl: 1 - Frame3 - children: 0 - excl: 1 - incl: 1 - Frame5 - children: 0 - excl: 1 - incl: 1 - vmTagB - children: 1 - excl: 0 - incl: 1 - Frame1 - children: 1 - excl: 0 - incl: 1 - Frame2 - children: 1 - excl: 0 - incl: 1 - Frame4 - children: 0 - excl: 1 - incl: 1 - vmTagC - children: 1 - excl: 0 - incl: 2 - Frame1 - children: 1 - excl: 0 - incl: 2 - Frame5 - children: 1 - excl: 1 - incl: 2 - Frame6 - children: 0 - excl: 1 - incl: 1 -''', - ), + profileGroupedByVmTagsGolden, ); }); diff --git a/packages/devtools_app/test/cpu_profiler/cpu_profiler_test.dart b/packages/devtools_app/test/cpu_profiler/cpu_profiler_test.dart index 969880276d7..0d7be524c8d 100644 --- a/packages/devtools_app/test/cpu_profiler/cpu_profiler_test.dart +++ b/packages/devtools_app/test/cpu_profiler/cpu_profiler_test.dart @@ -13,7 +13,6 @@ import 'package:devtools_app/src/screens/profiler/panes/cpu_flame_chart.dart'; import 'package:devtools_app/src/screens/profiler/panes/method_table/method_table.dart'; import 'package:devtools_app/src/shared/charts/flame_chart.dart'; import 'package:devtools_app/src/shared/config_specific/import_export/import_export.dart'; -import 'package:devtools_app/src/shared/feature_flags.dart'; import 'package:devtools_test/devtools_test.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -36,8 +35,6 @@ void main() { when(app.isDebugFlutterAppNow).thenReturn(false); setUp(() async { - FeatureFlags.methodTable = true; - setCharacterWidthForTables(); setGlobal(ServiceConnectionManager, fakeServiceManager); diff --git a/packages/devtools_app/test/cpu_profiler/method_table/method_table_controller_test.dart b/packages/devtools_app/test/cpu_profiler/method_table/method_table_controller_test.dart new file mode 100644 index 00000000000..a2d3f88db23 --- /dev/null +++ b/packages/devtools_app/test/cpu_profiler/method_table/method_table_controller_test.dart @@ -0,0 +1,185 @@ +// Copyright 2023 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:devtools_app/devtools_app.dart'; +import 'package:devtools_app/src/screens/profiler/cpu_profile_controller.dart'; +import 'package:devtools_app/src/screens/profiler/cpu_profile_transformer.dart'; +import 'package:devtools_app/src/screens/profiler/panes/method_table/method_table_controller.dart'; +import 'package:devtools_app/src/screens/profiler/panes/method_table/method_table_model.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import '../../test_infra/test_data/cpu_profiler/simple_profile_1.dart'; +import '../../test_infra/test_data/cpu_profiler/simple_profile_2.dart'; + +void main() { + group('$MethodTableController', () { + late MethodTableController controller; + + setUp(() { + controller = MethodTableController(); + }); + + Future _initSingleRootData({ + required Map dataJson, + required String profileGolden, + }) async { + final data = CpuProfileData.parse(dataJson); + await CpuProfileTransformer().processData(data, processId: 'test'); + expect(data.callTreeRoots.length, 1); + expect(data.callTreeRoots.first.profileAsString(), profileGolden); + return data; + } + + Future initSimpleData1() async { + return await _initSingleRootData( + dataJson: simpleCpuProfile1, + profileGolden: simpleProfile1Golden, + ); + } + + Future initSimpleData2() async { + return await _initSingleRootData( + dataJson: simpleCpuProfile2, + profileGolden: simpleProfile2Golden, + ); + } + + test('createMethodTableGraph ', () async { + var data = await initSimpleData1(); + + expect(controller.methods.value, isEmpty); + controller.createMethodTableGraph(data); + expect(controller.methods.value.length, 4); + expect(controller.graphAsString(), simpleProfile1MethodTableGolden); + + controller.reset(); + data = await initSimpleData2(); + + expect(controller.methods.value, isEmpty); + controller.createMethodTableGraph(data); + expect(controller.methods.value.length, 5); + expect(controller.graphAsString(), simpleProfile2MethodTableGolden); + }); + + test('createMethodTableGraph with user tags ', () async { + final data = CpuProfileData.parse(simpleCpuProfile1); + final fullDataPair = CpuProfilePair( + functionProfile: data, + codeProfile: null, + ); + final cpuProfilePair = CpuProfilePair.withTagRoots( + fullDataPair, + CpuProfilerTagType.user, + ); + await cpuProfilePair.process( + transformer: CpuProfileTransformer(), + processId: 'test', + ); + + final processedData = cpuProfilePair.functionProfile; + expect(processedData.callTreeRoots.length, 2); + expect( + processedData.cpuProfileRoot.profileAsString(), + simpleProfile1GroupedByTagGolden, + ); + + expect(controller.methods.value, isEmpty); + controller.createMethodTableGraph(processedData); + expect(controller.methods.value.length, 4); + expect(controller.graphAsString(), simpleProfile1MethodTableGolden); + }); + + test('selectedNode updates', () async { + final data = await initSimpleData1(); + controller.createMethodTableGraph(data); + + expect(controller.selectedNode.value, isNull); + controller.selectedNode.value = controller.methods.value.first; + expect(controller.selectedNode.value, controller.methods.value.first); + controller.selectedNode.value = controller.methods.value[2]; + expect(controller.selectedNode.value, controller.methods.value[2]); + + controller.reset(); + expect(controller.selectedNode.value, isNull); + }); + + group('caller and callee percentage', () { + late List methods; + + setUp(() async { + final data = await initSimpleData1(); + controller.createMethodTableGraph(data); + methods = controller.methods.value; + expect(methods.length, 4); + }); + + test('when selected node is null', () { + expect(controller.selectedNode.value, isNull); + expect(controller.callerPercentageFor(methods[1]), 0.0); + expect(controller.calleePercentageFor(methods[1]), 0.0); + }); + + test('when node is disconnected', () { + controller.selectedNode.value = methods.first; + final selectedNode = controller.selectedNode.value!; + expect(selectedNode.name, 'A'); + final disconnctedNode = methods[2]; + expect(disconnctedNode.name, 'C'); + + expect(selectedNode.predecessors, isNot(contains(disconnctedNode))); + expect(selectedNode.successors, isNot(contains(disconnctedNode))); + + expect(controller.callerPercentageFor(disconnctedNode), 0.0); + expect(controller.calleePercentageFor(disconnctedNode), 0.0); + }); + + test('when node is connected', () { + final a = methods[0]; + final b = methods[1]; + final c = methods[2]; + final d = methods[3]; + + controller.selectedNode.value = a; + expect(controller.callerPercentageFor(a), 0.0); + expect(controller.callerPercentageFor(b), 0.0); + expect(controller.callerPercentageFor(c), 0.0); + expect(controller.callerPercentageFor(d), 0.0); + expect(controller.calleePercentageFor(a), 0.0); + expect(controller.calleePercentageFor(b), 0.7777777777777778); + expect(controller.calleePercentageFor(c), 0.0); + expect(controller.calleePercentageFor(d), 0.2222222222222222); + + controller.selectedNode.value = b; + expect(controller.callerPercentageFor(a), 1.0); + expect(controller.callerPercentageFor(b), 0.0); + expect(controller.callerPercentageFor(c), 0.0); + expect(controller.callerPercentageFor(d), 0.0); + expect(controller.calleePercentageFor(a), 0.0); + expect(controller.calleePercentageFor(b), 0.0); + expect(controller.calleePercentageFor(c), 1.0); + expect(controller.calleePercentageFor(d), 0.0); + + controller.selectedNode.value = c; + expect(controller.callerPercentageFor(a), 0.0); + expect(controller.callerPercentageFor(b), 0.6666666666666666); + expect(controller.callerPercentageFor(c), 0.0); + expect(controller.callerPercentageFor(d), 0.3333333333333333); + expect(controller.calleePercentageFor(a), 0.0); + expect(controller.calleePercentageFor(b), 0.0); + expect(controller.calleePercentageFor(c), 0.0); + expect(controller.calleePercentageFor(d), 0.0); + + controller.selectedNode.value = d; + expect(controller.callerPercentageFor(a), 1.0); + expect(controller.callerPercentageFor(b), 0.0); + expect(controller.callerPercentageFor(c), 0.0); + expect(controller.callerPercentageFor(d), 0.0); + expect(controller.calleePercentageFor(a), 0.0); + expect(controller.calleePercentageFor(b), 0.0); + expect(controller.calleePercentageFor(c), 1.0); + expect(controller.calleePercentageFor(d), 0.0); + }); + }); + }); +} diff --git a/packages/devtools_app/test/cpu_profiler/method_table/method_table_model_test.dart b/packages/devtools_app/test/cpu_profiler/method_table/method_table_model_test.dart new file mode 100644 index 00000000000..e67ca1320c3 --- /dev/null +++ b/packages/devtools_app/test/cpu_profiler/method_table/method_table_model_test.dart @@ -0,0 +1,105 @@ +// Copyright 2023 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:devtools_app/devtools_app.dart'; +import 'package:devtools_app/src/screens/profiler/panes/method_table/method_table_model.dart'; +import 'package:devtools_app/src/shared/profiler_utils.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + group('$MethodTableGraphNode', () { + final node1 = MethodTableGraphNode( + name: 'node 1', + packageUri: 'uri_1', + sourceLine: 1, + totalCount: 2, + selfCount: 1, + profileMetaData: ProfileMetaData( + sampleCount: 10, + time: TimeRange() + ..start = Duration.zero + ..end = const Duration(seconds: 1), + ), + ); + final node2 = MethodTableGraphNode( + name: 'node 1', + packageUri: 'uri_1', + sourceLine: 1, + totalCount: 4, + selfCount: 4, + profileMetaData: ProfileMetaData( + sampleCount: 10, + time: TimeRange() + ..start = Duration.zero + ..end = const Duration(seconds: 1), + ), + ); + final node3 = MethodTableGraphNode( + name: 'node 1', + packageUri: 'different_uri', + sourceLine: 1, + totalCount: 3, + selfCount: 2, + profileMetaData: ProfileMetaData( + sampleCount: 10, + time: TimeRange() + ..start = Duration.zero + ..end = const Duration(seconds: 1), + ), + ); + final node4 = MethodTableGraphNode( + name: 'different_name', + packageUri: 'uri_1', + sourceLine: 1, + totalCount: 3, + selfCount: 3, + profileMetaData: ProfileMetaData( + sampleCount: 10, + time: TimeRange() + ..start = Duration.zero + ..end = const Duration(seconds: 1), + ), + ); + + test('shallowEquals ', () async { + expect(node1.shallowEquals(node2), isTrue); + expect(node1.shallowEquals(node3), isFalse); + expect(node1.shallowEquals(node4), isFalse); + + expect(node2.shallowEquals(node1), isTrue); + expect(node2.shallowEquals(node3), isFalse); + expect(node2.shallowEquals(node4), isFalse); + + expect(node3.shallowEquals(node1), isFalse); + expect(node3.shallowEquals(node2), isFalse); + expect(node3.shallowEquals(node4), isFalse); + + expect(node4.shallowEquals(node1), isFalse); + expect(node4.shallowEquals(node2), isFalse); + expect(node4.shallowEquals(node3), isFalse); + }); + + test('merge ', () async { + // Make a copy so that we do not modify the original nodes. + final node1Copy = node1.copy(); + + expect(node1Copy.totalCount, 2); + expect(node1Copy.selfCount, 1); + + // Attempt the unsuccessful merges first and verify nothing is changed. + node1Copy.merge(node3); + expect(node1Copy.totalCount, 2); + expect(node1Copy.selfCount, 1); + node1Copy.merge(node3); + expect(node1Copy.totalCount, 2); + expect(node1Copy.selfCount, 1); + + expect(node2.totalCount, 4); + expect(node2.selfCount, 4); + node1Copy.merge(node2); + expect(node1Copy.totalCount, 6); + expect(node1Copy.selfCount, 5); + }); + }); +} diff --git a/packages/devtools_app/test/cpu_profiler/method_table/method_table_test.dart b/packages/devtools_app/test/cpu_profiler/method_table/method_table_test.dart new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/packages/devtools_app/test/cpu_profiler/method_table/method_table_test.dart @@ -0,0 +1 @@ + diff --git a/packages/devtools_app/test/shared/table_test.dart b/packages/devtools_app/test/shared/table_test.dart index 025b0d312ab..c1358c0568e 100644 --- a/packages/devtools_app/test/shared/table_test.dart +++ b/packages/devtools_app/test/shared/table_test.dart @@ -495,7 +495,7 @@ void main() { expect(columnWidths.length, equals(3)); expect(columnWidths[0], equals(300.0)); expect(columnWidths[1], equals(400.0)); - expect(columnWidths[2], equals(36.0)); + expect(columnWidths[2], equals(369.0)); } // TODO(jacobr): add a golden image test. diff --git a/packages/devtools_app/test/test_infra/test_data/cpu_profiler/cpu_profile.dart b/packages/devtools_app/test/test_infra/test_data/cpu_profiler/cpu_profile.dart index 4518f211eac..8fc170196ed 100644 --- a/packages/devtools_app/test/test_infra/test_data/cpu_profiler/cpu_profile.dart +++ b/packages/devtools_app/test/test_infra/test_data/cpu_profiler/cpu_profile.dart @@ -41,6 +41,7 @@ final Map cpuProfileDataWithUserTagsJson = { 'parent': 'cpuProfileRoot', 'resolvedUrl': '', 'packageUri': '', + 'sourceLine': 111, }, '140357727781376-2': { 'category': 'Dart', @@ -48,6 +49,7 @@ final Map cpuProfileDataWithUserTagsJson = { 'parent': '140357727781376-1', 'resolvedUrl': 'org-dartlang-sdk:///third_party/dart/sdk/lib/vm/compact_hash.dart', + 'sourceLine': 222, }, '140357727781376-3': { 'category': 'Dart', @@ -55,6 +57,7 @@ final Map cpuProfileDataWithUserTagsJson = { 'parent': '140357727781376-2', 'resolvedUrl': '', 'packageUri': '', + 'sourceLine': 333, }, '140357727781376-4': { 'category': 'Dart', @@ -62,6 +65,7 @@ final Map cpuProfileDataWithUserTagsJson = { 'parent': '140357727781376-2', 'resolvedUrl': '', 'packageUri': '', + 'sourceLine': 444, }, '140357727781376-5': { 'category': 'Dart', @@ -69,6 +73,7 @@ final Map cpuProfileDataWithUserTagsJson = { 'parent': '140357727781376-1', 'resolvedUrl': 'org-dartlang-sdk:///third_party/dart/sdk/lib/vm/compact_hash.dart', + 'sourceLine': 555, }, '140357727781376-6': { 'category': 'Dart', @@ -76,6 +81,7 @@ final Map cpuProfileDataWithUserTagsJson = { 'parent': '140357727781376-5', 'resolvedUrl': 'path/to/flutter/packages/flutter/lib/src/rendering/custom_layout.dart', + 'sourceLine': 666, }, }, 'traceEvents': [ @@ -147,6 +153,40 @@ final Map cpuProfileDataWithUserTagsJson = { ], }; +const profileGroupedByUserTagsGolden = ''' + all - children: 3 - excl: 0 - incl: 5 + userTagA - children: 1 - excl: 0 - incl: 2 + Frame1 - children: 2 - excl: 0 - incl: 2 + Frame2 - children: 1 - excl: 0 - incl: 1 + Frame3 - children: 0 - excl: 1 - incl: 1 + Frame5 - children: 0 - excl: 1 - incl: 1 + userTagB - children: 1 - excl: 0 - incl: 1 + Frame1 - children: 1 - excl: 0 - incl: 1 + Frame2 - children: 1 - excl: 0 - incl: 1 + Frame4 - children: 0 - excl: 1 - incl: 1 + userTagC - children: 1 - excl: 0 - incl: 2 + Frame1 - children: 1 - excl: 0 - incl: 2 + Frame5 - children: 1 - excl: 1 - incl: 2 + Frame6 - children: 0 - excl: 1 - incl: 1 +'''; + +const profileGroupedByVmTagsGolden = ''' + all - children: 3 - excl: 0 - incl: 5 + vmTagA - children: 1 - excl: 0 - incl: 2 + Frame1 - children: 2 - excl: 0 - incl: 2 + Frame2 - children: 1 - excl: 0 - incl: 1 + Frame3 - children: 0 - excl: 1 - incl: 1 + Frame5 - children: 0 - excl: 1 - incl: 1 + vmTagB - children: 1 - excl: 0 - incl: 1 + Frame1 - children: 1 - excl: 0 - incl: 1 + Frame2 - children: 1 - excl: 0 - incl: 1 + Frame4 - children: 0 - excl: 1 - incl: 1 + vmTagC - children: 1 - excl: 0 - incl: 2 + Frame1 - children: 1 - excl: 0 - incl: 2 + Frame5 - children: 1 - excl: 1 - incl: 2 + Frame6 - children: 0 - excl: 1 - incl: 1 +'''; + const goldenCpuProfileString = ''' all - children: 2 - excl: 0 - incl: 8 thread_start - children: 1 - excl: 0 - incl: 2 diff --git a/packages/devtools_app/test/test_infra/test_data/cpu_profiler/simple_profile_1.dart b/packages/devtools_app/test/test_infra/test_data/cpu_profiler/simple_profile_1.dart new file mode 100644 index 00000000000..9f4a2e1dd28 --- /dev/null +++ b/packages/devtools_app/test/test_infra/test_data/cpu_profiler/simple_profile_1.dart @@ -0,0 +1,238 @@ +// Copyright 2023 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +final Map simpleCpuProfile1 = { + 'type': '_CpuProfileTimeline', + 'samplePeriod': 50, + 'stackDepth': 128, + 'sampleCount': 10, + 'timeOriginMicros': 0, + 'timeExtentMicros': 10000, + 'stackFrames': _profileStackFrames, + 'traceEvents': _profileTraceEvents, +}; + +final _profileStackFrames = { + '140357727781376-1': { + 'category': 'Dart', + 'name': 'A', + 'parent': 'cpuProfileRoot', + 'resolvedUrl': 'path/to/my_app/packages/my_app/lib/src/a.dart', + 'packageUri': 'package:my_app/src/a.dart', + 'sourceLine': 111, + }, + '140357727781376-2': { + 'category': 'Dart', + 'name': 'B', + 'parent': '140357727781376-1', + 'resolvedUrl': 'path/to/my_app/packages/my_app/lib/src/b.dart', + 'packageUri': 'package:my_app/src/b.dart', + 'sourceLine': 222, + }, + '140357727781376-3': { + 'category': 'Dart', + 'name': 'C', + 'parent': '140357727781376-2', + 'resolvedUrl': 'path/to/my_app/packages/my_app/lib/src/c.dart', + 'packageUri': 'package:my_app/src/c.dart', + 'sourceLine': 333, + }, + '140357727781376-4': { + 'category': 'Dart', + 'name': 'D', + 'parent': '140357727781376-1', + 'resolvedUrl': 'path/to/my_app/packages/my_app/lib/src/d.dart', + 'packageUri': 'package:my_app/src/d.dart', + 'sourceLine': 444, + }, + '140357727781376-5': { + 'category': 'Dart', + 'name': 'C', + 'parent': '140357727781376-4', + 'resolvedUrl': 'path/to/my_app/packages/my_app/lib/src/c.dart', + 'packageUri': 'package:my_app/src/c.dart', + 'sourceLine': 333, + }, +}; + +final List> _profileTraceEvents = [ + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 0, + 'cat': 'Dart', + 'args': { + 'userTag': 'userTagA', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-1' + }, + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 1000, + 'cat': 'Dart', + 'args': { + 'userTag': 'Default', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-2' + }, + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 2000, + 'cat': 'Dart', + 'args': { + 'userTag': 'Default', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-2' + }, + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 3000, + 'cat': 'Dart', + 'args': { + 'userTag': 'Default', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-2' + }, + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 4000, + 'cat': 'Dart', + 'args': { + 'userTag': 'Default', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-3' + }, + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 5000, + 'cat': 'Dart', + 'args': { + 'userTag': 'Default', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-3' + }, + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 6000, + 'cat': 'Dart', + 'args': { + 'userTag': 'Default', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-3' + }, + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 7000, + 'cat': 'Dart', + 'args': { + 'userTag': 'Default', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-3' + }, + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 8000, + 'cat': 'Dart', + 'args': { + 'userTag': 'userTagA', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-5' + }, + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 9000, + 'cat': 'Dart', + 'args': { + 'userTag': 'userTagA', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-5' + }, +]; + +const String simpleProfile1Golden = ''' + A - children: 2 - excl: 1 - incl: 10 + B - children: 1 - excl: 3 - incl: 7 + C - children: 0 - excl: 4 - incl: 4 + D - children: 1 - excl: 0 - incl: 2 + C - children: 0 - excl: 2 - incl: 2 +'''; + +const String simpleProfile1GroupedByTagGolden = ''' + all - children: 2 - excl: 0 - incl: 10 + userTagA - children: 1 - excl: 0 - incl: 3 + A - children: 1 - excl: 1 - incl: 3 + D - children: 1 - excl: 0 - incl: 2 + C - children: 0 - excl: 2 - incl: 2 + Default - children: 1 - excl: 0 - incl: 7 + A - children: 1 - excl: 0 - incl: 7 + B - children: 1 - excl: 3 - incl: 7 + C - children: 0 - excl: 4 - incl: 4 +'''; + +const String simpleProfile1MethodTableGolden = ''' +A (package:my_app/src/a.dart:111) (10 samples) + Callers: + [] + Callees: + B (package:my_app/src/b.dart:222) - 77.78% + D (package:my_app/src/d.dart:444) - 22.22% + +B (package:my_app/src/b.dart:222) (7 samples) + Callers: + A (package:my_app/src/a.dart:111) - 100.00% + Callees: + C (package:my_app/src/c.dart:333) - 100.00% + +C (package:my_app/src/c.dart:333) (6 samples) + Callers: + B (package:my_app/src/b.dart:222) - 66.67% + D (package:my_app/src/d.dart:444) - 33.33% + Callees: + [] + +D (package:my_app/src/d.dart:444) (2 samples) + Callers: + A (package:my_app/src/a.dart:111) - 100.00% + Callees: + C (package:my_app/src/c.dart:333) - 100.00% +'''; diff --git a/packages/devtools_app/test/test_infra/test_data/cpu_profiler/simple_profile_2.dart b/packages/devtools_app/test/test_infra/test_data/cpu_profiler/simple_profile_2.dart new file mode 100644 index 00000000000..4577cb3d9fb --- /dev/null +++ b/packages/devtools_app/test/test_infra/test_data/cpu_profiler/simple_profile_2.dart @@ -0,0 +1,261 @@ +// Copyright 2023 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +final Map simpleCpuProfile2 = { + 'type': '_CpuProfileTimeline', + 'samplePeriod': 50, + 'stackDepth': 128, + 'sampleCount': 10, + 'timeOriginMicros': 0, + 'timeExtentMicros': 10000, + 'stackFrames': _profileStackFrames, + 'traceEvents': _profileTraceEvents, +}; + +final _profileStackFrames = { + '140357727781376-1': { + 'category': 'Dart', + 'name': 'A', + 'parent': 'cpuProfileRoot', + 'resolvedUrl': 'path/to/my_app/packages/my_app/lib/src/a.dart', + 'packageUri': 'package:my_app/src/a.dart', + 'sourceLine': 111, + }, + '140357727781376-2': { + 'category': 'Dart', + 'name': 'B', + 'parent': '140357727781376-1', + 'resolvedUrl': 'path/to/my_app/packages/my_app/lib/src/b.dart', + 'packageUri': 'package:my_app/src/b.dart', + 'sourceLine': 222, + }, + '140357727781376-3': { + 'category': 'Dart', + 'name': 'C', + 'parent': '140357727781376-2', + 'resolvedUrl': 'path/to/my_app/packages/my_app/lib/src/c.dart', + 'packageUri': 'package:my_app/src/c.dart', + 'sourceLine': 333, + }, + '140357727781376-4': { + 'category': 'Dart', + 'name': 'D', + 'parent': '140357727781376-1', + 'resolvedUrl': 'path/to/my_app/packages/my_app/lib/src/d.dart', + 'packageUri': 'package:my_app/src/d.dart', + 'sourceLine': 444, + }, + '140357727781376-5': { + 'category': 'Dart', + 'name': 'C', + 'parent': '140357727781376-4', + 'resolvedUrl': 'path/to/my_app/packages/my_app/lib/src/c.dart', + 'packageUri': 'package:my_app/src/c.dart', + 'sourceLine': 333, + }, + '140357727781376-6': { + 'category': 'Dart', + 'name': 'F', + 'parent': '140357727781376-1', + 'resolvedUrl': 'path/to/my_app/packages/my_app/lib/src/f.dart', + 'packageUri': 'package:my_app/src/f.dart', + 'sourceLine': 555, + }, + '140357727781376-7': { + 'category': 'Dart', + 'name': 'B', + 'parent': '140357727781376-6', + 'resolvedUrl': 'path/to/my_app/packages/my_app/lib/src/b.dart', + 'packageUri': 'package:my_app/src/b.dart', + 'sourceLine': 222, + }, + '140357727781376-8': { + 'category': 'Dart', + 'name': 'C', + 'parent': '140357727781376-7', + 'resolvedUrl': 'path/to/my_app/packages/my_app/lib/src/c.dart', + 'packageUri': 'package:my_app/src/c.dart', + 'sourceLine': 333, + }, +}; + +final List> _profileTraceEvents = [ + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 0, + 'cat': 'Dart', + 'args': { + 'userTag': 'Default', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-1' + }, + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 1000, + 'cat': 'Dart', + 'args': { + 'userTag': 'Default', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-2' + }, + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 2000, + 'cat': 'Dart', + 'args': { + 'userTag': 'Default', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-7' + }, + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 3000, + 'cat': 'Dart', + 'args': { + 'userTag': 'Default', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-7' + }, + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 4000, + 'cat': 'Dart', + 'args': { + 'userTag': 'Default', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-3' + }, + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 5000, + 'cat': 'Dart', + 'args': { + 'userTag': 'Default', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-3' + }, + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 6000, + 'cat': 'Dart', + 'args': { + 'userTag': 'Default', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-3' + }, + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 7000, + 'cat': 'Dart', + 'args': { + 'userTag': 'Default', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-8' + }, + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 8000, + 'cat': 'Dart', + 'args': { + 'userTag': 'Default', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-5' + }, + { + 'ph': 'P', + 'name': '', + 'pid': 77616, + 'tid': 42247, + 'ts': 9000, + 'cat': 'Dart', + 'args': { + 'userTag': 'Default', + 'vmTag': 'VM', + }, + 'sf': '140357727781376-5' + }, +]; + +const String simpleProfile2Golden = ''' + A - children: 3 - excl: 1 - incl: 10 + B - children: 1 - excl: 1 - incl: 4 + C - children: 0 - excl: 3 - incl: 3 + D - children: 1 - excl: 0 - incl: 2 + C - children: 0 - excl: 2 - incl: 2 + F - children: 1 - excl: 0 - incl: 3 + B - children: 1 - excl: 2 - incl: 3 + C - children: 0 - excl: 1 - incl: 1 +'''; + +const String simpleProfile2MethodTableGolden = ''' +A (package:my_app/src/a.dart:111) (10 samples) + Callers: + [] + Callees: + B (package:my_app/src/b.dart:222) - 44.44% + F (package:my_app/src/f.dart:555) - 33.33% + D (package:my_app/src/d.dart:444) - 22.22% + +B (package:my_app/src/b.dart:222) (7 samples) + Callers: + A (package:my_app/src/a.dart:111) - 57.14% + F (package:my_app/src/f.dart:555) - 42.86% + Callees: + C (package:my_app/src/c.dart:333) - 100.00% + +C (package:my_app/src/c.dart:333) (6 samples) + Callers: + B (package:my_app/src/b.dart:222) - 66.67% + D (package:my_app/src/d.dart:444) - 33.33% + Callees: + [] + +F (package:my_app/src/f.dart:555) (3 samples) + Callers: + A (package:my_app/src/a.dart:111) - 100.00% + Callees: + B (package:my_app/src/b.dart:222) - 100.00% + +D (package:my_app/src/d.dart:444) (2 samples) + Callers: + A (package:my_app/src/a.dart:111) - 100.00% + Callees: + C (package:my_app/src/c.dart:333) - 100.00% +'''; From 49045981ff78353407784c52405c2809dbb6bb9b Mon Sep 17 00:00:00 2001 From: Kenzie Schmoll Date: Tue, 7 Mar 2023 16:27:23 -0800 Subject: [PATCH 02/10] update release notes --- packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md b/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md index 99e94e3ef77..ea02b3b4f4e 100644 --- a/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md +++ b/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md @@ -15,6 +15,7 @@ TODO: Remove this section if there are not any general updates. * Persist a user's preference for whether the Flutter Frames chart should be shown by default. - [#5339](https://github.com/flutter/devtools/pull/5339) ## CPU profiler updates +* Add a Method Table to the CPU profiler - [#]() * Add ability to inspect statistics for a CPU profile - [#5340](https://github.com/flutter/devtools/pull/5340) * Fix a bug where Native stack frames were missing their name - [#5344](https://github.com/flutter/devtools/pull/5344) * Fix an error in total and self time calculations for the bottom up tree - [#5348](https://github.com/flutter/devtools/pull/5348) From 1e98524d396b64f7035fd9ae235f27eb00c83894 Mon Sep 17 00:00:00 2001 From: Kenzie Schmoll Date: Tue, 7 Mar 2023 16:30:02 -0800 Subject: [PATCH 03/10] add blocking todo --- .../profiler/panes/method_table/method_table_controller.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_controller.dart b/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_controller.dart index decd7109090..a9ef90fbe0b 100644 --- a/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_controller.dart +++ b/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_controller.dart @@ -19,6 +19,8 @@ class MethodTableController { final _methods = ValueNotifier>([]); + // BLOCKER - TODO(kenz): before submitting figure out why total time + // percentages are greater than 100%. void createMethodTableGraph(CpuProfileData cpuProfileData) { reset(); assert(cpuProfileData.processed); From 0fdaf10164d170ad46e652c0011b6a97ebaf054b Mon Sep 17 00:00:00 2001 From: Kenzie Schmoll Date: Wed, 8 Mar 2023 13:19:08 -0800 Subject: [PATCH 04/10] Fix bug with double counting total time --- .../screens/profiler/cpu_profile_model.dart | 10 ++++ .../method_table/method_table_controller.dart | 9 ++-- .../method_table/method_table_model.dart | 17 +++++-- .../lib/src/shared/primitives/utils.dart | 9 ++++ .../release_notes/NEXT_RELEASE_NOTES.md | 2 +- .../cpu_profiler/cpu_profile_model_test.dart | 34 +++++++++++++ .../method_table/method_table_model_test.dart | 4 ++ .../cpu_profiler/simple_profile_1.dart | 24 ++++----- .../cpu_profiler/simple_profile_2.dart | 51 +++++++++++-------- 9 files changed, 120 insertions(+), 40 deletions(-) diff --git a/packages/devtools_app/lib/src/screens/profiler/cpu_profile_model.dart b/packages/devtools_app/lib/src/screens/profiler/cpu_profile_model.dart index 6b0c9ce788f..e78adfd4eb0 100644 --- a/packages/devtools_app/lib/src/screens/profiler/cpu_profile_model.dart +++ b/packages/devtools_app/lib/src/screens/profiler/cpu_profile_model.dart @@ -918,6 +918,16 @@ class CpuStackFrame extends TreeNode final String? parentId; + /// The set of ids for all ancesctors of this [CpuStackFrame]. + /// + /// This is late and final, so it will only be created once for performance + /// reasons. This method should only be called when the [CpuStackFrame] is + /// part of a processed CPU profile. + late final Set ancestorIds = { + if (parentId != null) parentId!, + ...parent?.ancestorIds ?? {} + }; + @override CpuProfileMetaData get profileMetaData => _profileMetaData; diff --git a/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_controller.dart b/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_controller.dart index a9ef90fbe0b..27ec0101cbb 100644 --- a/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_controller.dart +++ b/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_controller.dart @@ -5,6 +5,7 @@ import 'package:flutter/foundation.dart'; import '../../../../shared/primitives/trees.dart'; +import '../../../../shared/primitives/utils.dart'; import '../../cpu_profile_model.dart'; import 'method_table_model.dart'; @@ -19,8 +20,6 @@ class MethodTableController { final _methods = ValueNotifier>([]); - // BLOCKER - TODO(kenz): before submitting figure out why total time - // percentages are greater than 100%. void createMethodTableGraph(CpuProfileData cpuProfileData) { reset(); assert(cpuProfileData.processed); @@ -51,9 +50,13 @@ class MethodTableController { var graphNode = MethodTableGraphNode.fromStackFrame(frame); final existingNode = methodMap[frame.methodTableId]; if (existingNode != null) { + // Do not merge the total time if the [existingNode] already counted + // the total time for one of [frame]'s ancestors. + final shouldMergeTotalTime = + !existingNode.stackFrameIds.containsAny(frame.ancestorIds); // If the graph node already exists, merge the new one with the old // one and use the existing instance. - existingNode.merge(graphNode); + existingNode.merge(graphNode, mergeTotalTime: shouldMergeTotalTime); graphNode = existingNode; } methodMap[graphNode.id] = graphNode; diff --git a/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_model.dart b/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_model.dart index daba67e0142..4a0424f17a1 100644 --- a/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_model.dart +++ b/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_model.dart @@ -18,6 +18,7 @@ class MethodTableGraphNode extends GraphNode { required int totalCount, required int selfCount, required this.profileMetaData, + required this.stackFrameIds, }) : _totalCount = totalCount, _selfCount = selfCount, _sourceUri = uriWithSourceLine(packageUri, sourceLine); @@ -30,6 +31,7 @@ class MethodTableGraphNode extends GraphNode { totalCount: frame.inclusiveSampleCount, selfCount: frame.exclusiveSampleCount, profileMetaData: frame.profileMetaData, + stackFrameIds: {frame.id}, ); } @@ -43,6 +45,10 @@ class MethodTableGraphNode extends GraphNode { final ProfileMetaData profileMetaData; + /// The set of all [CpuStackFrame.id]s that contribute to this method table + /// node for a profile. + final Set stackFrameIds; + String get id => '$name-$_sourceUri'; String get display => @@ -74,10 +80,13 @@ class MethodTableGraphNode extends GraphNode { .round(), ); - void merge(MethodTableGraphNode other) { + void merge(MethodTableGraphNode other, {bool mergeTotalTime = false}) { if (!shallowEquals(other)) return; - _totalCount += other.totalCount; + stackFrameIds.addAll(other.stackFrameIds); _selfCount += other.selfCount; + if (mergeTotalTime) { + _totalCount += other.totalCount; + } } bool shallowEquals(other) { @@ -92,6 +101,7 @@ class MethodTableGraphNode extends GraphNode { Set nodes, { required double Function(MethodTableGraphNode) percentCallback, }) { + const newLineAndIndent = '\n '; return nodes .cast() // Sort in descending order. @@ -99,7 +109,7 @@ class MethodTableGraphNode extends GraphNode { .map( (node) => '${node.display} - ${percent2(percentCallback(node))}', ) - .join('\n '); + .join(newLineAndIndent); } final callers = generateDisplayFor( @@ -129,6 +139,7 @@ $display ($totalCount samples) totalCount: totalCount, selfCount: selfCount, profileMetaData: profileMetaData, + stackFrameIds: Set.from(stackFrameIds), ); } } diff --git a/packages/devtools_app/lib/src/shared/primitives/utils.dart b/packages/devtools_app/lib/src/shared/primitives/utils.dart index 1a32cff250b..b12dddae549 100644 --- a/packages/devtools_app/lib/src/shared/primitives/utils.dart +++ b/packages/devtools_app/lib/src/shared/primitives/utils.dart @@ -1148,6 +1148,15 @@ extension SetExtension on Set { } return false; } + + bool containsAny(Iterable any) { + for (var e in any) { + if (contains(e)) { + return true; + } + } + return false; + } } extension UiListExtension on List { diff --git a/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md b/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md index ea02b3b4f4e..ec36fb2f43a 100644 --- a/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md +++ b/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md @@ -15,7 +15,7 @@ TODO: Remove this section if there are not any general updates. * Persist a user's preference for whether the Flutter Frames chart should be shown by default. - [#5339](https://github.com/flutter/devtools/pull/5339) ## CPU profiler updates -* Add a Method Table to the CPU profiler - [#]() +* Add a Method Table to the CPU profiler - [#5366](https://github.com/flutter/devtools/pull/5366) * Add ability to inspect statistics for a CPU profile - [#5340](https://github.com/flutter/devtools/pull/5340) * Fix a bug where Native stack frames were missing their name - [#5344](https://github.com/flutter/devtools/pull/5344) * Fix an error in total and self time calculations for the bottom up tree - [#5348](https://github.com/flutter/devtools/pull/5348) diff --git a/packages/devtools_app/test/cpu_profiler/cpu_profile_model_test.dart b/packages/devtools_app/test/cpu_profiler/cpu_profile_model_test.dart index 75ebf570d38..148d90d9bf0 100644 --- a/packages/devtools_app/test/cpu_profiler/cpu_profile_model_test.dart +++ b/packages/devtools_app/test/cpu_profiler/cpu_profile_model_test.dart @@ -272,6 +272,40 @@ void main() { expect(stackFrameF.selfTime.inMicroseconds, equals(0)); }); + test('ancestorIds', () { + expect(testStackFrame.ancestorIds.toList(), ['cpuProfileRoot']); + expect(stackFrameA.ancestorIds.toList(), ['cpuProfileRoot']); + expect(stackFrameB.ancestorIds.toList(), ['id_0', 'cpuProfileRoot']); + expect( + stackFrameC.ancestorIds.toList(), + ['id_1','id_0', 'cpuProfileRoot'], + ); + expect( + stackFrameD.ancestorIds.toList(), + ['id_1','id_0', 'cpuProfileRoot'], + ); + expect( + stackFrameE.ancestorIds.toList(), + ['id_3', 'id_1','id_0', 'cpuProfileRoot'], + ); + expect( + stackFrameF.ancestorIds.toList(), + ['id_4', 'id_3', 'id_1','id_0', 'cpuProfileRoot'], + ); + expect( + stackFrameF2.ancestorIds.toList(), + ['id_3', 'id_1','id_0', 'cpuProfileRoot'], + ); + expect( + stackFrameC2.ancestorIds.toList(), + ['id_5', 'id_4', 'id_3', 'id_1','id_0', 'cpuProfileRoot'], + ); + expect( + stackFrameC3.ancestorIds.toList(), + ['id_6', 'id_3', 'id_1','id_0', 'cpuProfileRoot'], + ); + }); + test('shallowCopy', () { expect(stackFrameD.children.length, 2); expect(stackFrameD.parent, stackFrameB); diff --git a/packages/devtools_app/test/cpu_profiler/method_table/method_table_model_test.dart b/packages/devtools_app/test/cpu_profiler/method_table/method_table_model_test.dart index e67ca1320c3..61d7e92300c 100644 --- a/packages/devtools_app/test/cpu_profiler/method_table/method_table_model_test.dart +++ b/packages/devtools_app/test/cpu_profiler/method_table/method_table_model_test.dart @@ -21,6 +21,7 @@ void main() { ..start = Duration.zero ..end = const Duration(seconds: 1), ), + stackFrameIds: {'1'}, ); final node2 = MethodTableGraphNode( name: 'node 1', @@ -34,6 +35,7 @@ void main() { ..start = Duration.zero ..end = const Duration(seconds: 1), ), + stackFrameIds: {'2'}, ); final node3 = MethodTableGraphNode( name: 'node 1', @@ -47,6 +49,7 @@ void main() { ..start = Duration.zero ..end = const Duration(seconds: 1), ), + stackFrameIds: {'3'}, ); final node4 = MethodTableGraphNode( name: 'different_name', @@ -60,6 +63,7 @@ void main() { ..start = Duration.zero ..end = const Duration(seconds: 1), ), + stackFrameIds: {'4'}, ); test('shallowEquals ', () async { diff --git a/packages/devtools_app/test/test_infra/test_data/cpu_profiler/simple_profile_1.dart b/packages/devtools_app/test/test_infra/test_data/cpu_profiler/simple_profile_1.dart index 9f4a2e1dd28..c6080149f03 100644 --- a/packages/devtools_app/test/test_infra/test_data/cpu_profiler/simple_profile_1.dart +++ b/packages/devtools_app/test/test_infra/test_data/cpu_profiler/simple_profile_1.dart @@ -210,29 +210,29 @@ const String simpleProfile1GroupedByTagGolden = ''' '''; const String simpleProfile1MethodTableGolden = ''' -A (package:my_app/src/a.dart:111) (10 samples) +A - (package:my_app/src/a.dart:111) (10 samples) Callers: [] Callees: - B (package:my_app/src/b.dart:222) - 77.78% - D (package:my_app/src/d.dart:444) - 22.22% + B - (package:my_app/src/b.dart:222) - 77.78% + D - (package:my_app/src/d.dart:444) - 22.22% -B (package:my_app/src/b.dart:222) (7 samples) +B - (package:my_app/src/b.dart:222) (7 samples) Callers: - A (package:my_app/src/a.dart:111) - 100.00% + A - (package:my_app/src/a.dart:111) - 100.00% Callees: - C (package:my_app/src/c.dart:333) - 100.00% + C - (package:my_app/src/c.dart:333) - 100.00% -C (package:my_app/src/c.dart:333) (6 samples) +C - (package:my_app/src/c.dart:333) (6 samples) Callers: - B (package:my_app/src/b.dart:222) - 66.67% - D (package:my_app/src/d.dart:444) - 33.33% + B - (package:my_app/src/b.dart:222) - 66.67% + D - (package:my_app/src/d.dart:444) - 33.33% Callees: [] -D (package:my_app/src/d.dart:444) (2 samples) +D - (package:my_app/src/d.dart:444) (2 samples) Callers: - A (package:my_app/src/a.dart:111) - 100.00% + A - (package:my_app/src/a.dart:111) - 100.00% Callees: - C (package:my_app/src/c.dart:333) - 100.00% + C - (package:my_app/src/c.dart:333) - 100.00% '''; diff --git a/packages/devtools_app/test/test_infra/test_data/cpu_profiler/simple_profile_2.dart b/packages/devtools_app/test/test_infra/test_data/cpu_profiler/simple_profile_2.dart index 4577cb3d9fb..c9e0dff9b14 100644 --- a/packages/devtools_app/test/test_infra/test_data/cpu_profiler/simple_profile_2.dart +++ b/packages/devtools_app/test/test_infra/test_data/cpu_profiler/simple_profile_2.dart @@ -78,6 +78,14 @@ final _profileStackFrames = { 'packageUri': 'package:my_app/src/c.dart', 'sourceLine': 333, }, + '140357727781376-9': { + 'category': 'Dart', + 'name': 'A', + 'parent': '140357727781376-5', + 'resolvedUrl': 'path/to/my_app/packages/my_app/lib/src/a.dart', + 'packageUri': 'package:my_app/src/a.dart', + 'sourceLine': 111, + }, }; final List> _profileTraceEvents = [ @@ -209,7 +217,7 @@ final List> _profileTraceEvents = [ 'userTag': 'Default', 'vmTag': 'VM', }, - 'sf': '140357727781376-5' + 'sf': '140357727781376-9' }, ]; @@ -218,44 +226,45 @@ const String simpleProfile2Golden = ''' B - children: 1 - excl: 1 - incl: 4 C - children: 0 - excl: 3 - incl: 3 D - children: 1 - excl: 0 - incl: 2 - C - children: 0 - excl: 2 - incl: 2 + C - children: 1 - excl: 1 - incl: 2 + A - children: 0 - excl: 1 - incl: 1 F - children: 1 - excl: 0 - incl: 3 B - children: 1 - excl: 2 - incl: 3 C - children: 0 - excl: 1 - incl: 1 '''; const String simpleProfile2MethodTableGolden = ''' -A (package:my_app/src/a.dart:111) (10 samples) +A - (package:my_app/src/a.dart:111) (10 samples) Callers: - [] + C - (package:my_app/src/c.dart:333) - 100.00% Callees: - B (package:my_app/src/b.dart:222) - 44.44% - F (package:my_app/src/f.dart:555) - 33.33% - D (package:my_app/src/d.dart:444) - 22.22% + B - (package:my_app/src/b.dart:222) - 44.44% + F - (package:my_app/src/f.dart:555) - 33.33% + D - (package:my_app/src/d.dart:444) - 22.22% -B (package:my_app/src/b.dart:222) (7 samples) +B - (package:my_app/src/b.dart:222) (7 samples) Callers: - A (package:my_app/src/a.dart:111) - 57.14% - F (package:my_app/src/f.dart:555) - 42.86% + A - (package:my_app/src/a.dart:111) - 57.14% + F - (package:my_app/src/f.dart:555) - 42.86% Callees: - C (package:my_app/src/c.dart:333) - 100.00% + C - (package:my_app/src/c.dart:333) - 100.00% -C (package:my_app/src/c.dart:333) (6 samples) +C - (package:my_app/src/c.dart:333) (6 samples) Callers: - B (package:my_app/src/b.dart:222) - 66.67% - D (package:my_app/src/d.dart:444) - 33.33% + B - (package:my_app/src/b.dart:222) - 66.67% + D - (package:my_app/src/d.dart:444) - 33.33% Callees: - [] + A - (package:my_app/src/a.dart:111) - 100.00% -F (package:my_app/src/f.dart:555) (3 samples) +F - (package:my_app/src/f.dart:555) (3 samples) Callers: - A (package:my_app/src/a.dart:111) - 100.00% + A - (package:my_app/src/a.dart:111) - 100.00% Callees: - B (package:my_app/src/b.dart:222) - 100.00% + B - (package:my_app/src/b.dart:222) - 100.00% -D (package:my_app/src/d.dart:444) (2 samples) +D - (package:my_app/src/d.dart:444) (2 samples) Callers: - A (package:my_app/src/a.dart:111) - 100.00% + A - (package:my_app/src/a.dart:111) - 100.00% Callees: - C (package:my_app/src/c.dart:333) - 100.00% + C - (package:my_app/src/c.dart:333) - 100.00% '''; From cbf955dad7d9e4fdc383111355825cd8dfb44c1d Mon Sep 17 00:00:00 2001 From: Kenzie Schmoll Date: Wed, 8 Mar 2023 15:17:59 -0800 Subject: [PATCH 05/10] Add test --- .../screens/profiler/cpu_profile_model.dart | 2 +- .../panes/method_table/method_table.dart | 28 ++-- .../cpu_profiler/cpu_profile_model_test.dart | 14 +- .../method_table/method_table_test.dart | 123 ++++++++++++++++++ .../method_table_no_selection.png | Bin 0 -> 12170 bytes .../method_table_with_selection.png | Bin 0 -> 13585 bytes .../method_table_with_selection_2.png | Bin 0 -> 12934 bytes 7 files changed, 149 insertions(+), 18 deletions(-) create mode 100644 packages/devtools_app/test/test_infra/goldens/cpu_profiler/method_table_no_selection.png create mode 100644 packages/devtools_app/test/test_infra/goldens/cpu_profiler/method_table_with_selection.png create mode 100644 packages/devtools_app/test/test_infra/goldens/cpu_profiler/method_table_with_selection_2.png diff --git a/packages/devtools_app/lib/src/screens/profiler/cpu_profile_model.dart b/packages/devtools_app/lib/src/screens/profiler/cpu_profile_model.dart index e78adfd4eb0..e43f57ccd72 100644 --- a/packages/devtools_app/lib/src/screens/profiler/cpu_profile_model.dart +++ b/packages/devtools_app/lib/src/screens/profiler/cpu_profile_model.dart @@ -919,7 +919,7 @@ class CpuStackFrame extends TreeNode final String? parentId; /// The set of ids for all ancesctors of this [CpuStackFrame]. - /// + /// /// This is late and final, so it will only be created once for performance /// reasons. This method should only be called when the [CpuStackFrame] is /// part of a processed CPU profile. diff --git a/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table.dart b/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table.dart index ee63617f146..367ad5ec629 100644 --- a/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table.dart +++ b/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table.dart @@ -97,20 +97,28 @@ class _MethodGraphState extends State<_MethodGraph> with AutoDisposeMixin { void initState() { super.initState(); - _selectedGraphNode = widget.methodTableController.selectedNode.value; + _initGraphNodes(); addAutoDisposeListener(widget.methodTableController.selectedNode, () { setState(() { - _selectedGraphNode = widget.methodTableController.selectedNode.value; - _callers = _selectedGraphNode!.predecessors - .cast() - .toList(); - _callees = _selectedGraphNode!.successors - .cast() - .toList(); + _initGraphNodes(); }); }); } + void _initGraphNodes() { + _selectedGraphNode = widget.methodTableController.selectedNode.value; + if (_selectedGraphNode == null) { + _callers = []; + _callees = []; + } else { + _callers = _selectedGraphNode!.predecessors + .cast() + .toList(); + _callees = + _selectedGraphNode!.successors.cast().toList(); + } + } + @override Widget build(BuildContext context) { final selectedNode = _selectedGraphNode; @@ -185,7 +193,7 @@ class _CallersTable extends StatelessWidget { @override Widget build(BuildContext context) { return FlatTable( - keyFactory: (node) => ValueKey(node.id), + keyFactory: (node) => ValueKey('caller-${node.id}'), data: _callers, dataKey: 'cpu-profile-method-callers', columns: columns, @@ -221,7 +229,7 @@ class _CalleesTable extends StatelessWidget { @override Widget build(BuildContext context) { return FlatTable( - keyFactory: (node) => ValueKey(node.id), + keyFactory: (node) => ValueKey('callee-${node.id}'), data: _callees, dataKey: 'cpu-profile-method-callees', columns: _columns, diff --git a/packages/devtools_app/test/cpu_profiler/cpu_profile_model_test.dart b/packages/devtools_app/test/cpu_profiler/cpu_profile_model_test.dart index 148d90d9bf0..b019b72dfab 100644 --- a/packages/devtools_app/test/cpu_profiler/cpu_profile_model_test.dart +++ b/packages/devtools_app/test/cpu_profiler/cpu_profile_model_test.dart @@ -278,31 +278,31 @@ void main() { expect(stackFrameB.ancestorIds.toList(), ['id_0', 'cpuProfileRoot']); expect( stackFrameC.ancestorIds.toList(), - ['id_1','id_0', 'cpuProfileRoot'], + ['id_1', 'id_0', 'cpuProfileRoot'], ); expect( stackFrameD.ancestorIds.toList(), - ['id_1','id_0', 'cpuProfileRoot'], + ['id_1', 'id_0', 'cpuProfileRoot'], ); expect( stackFrameE.ancestorIds.toList(), - ['id_3', 'id_1','id_0', 'cpuProfileRoot'], + ['id_3', 'id_1', 'id_0', 'cpuProfileRoot'], ); expect( stackFrameF.ancestorIds.toList(), - ['id_4', 'id_3', 'id_1','id_0', 'cpuProfileRoot'], + ['id_4', 'id_3', 'id_1', 'id_0', 'cpuProfileRoot'], ); expect( stackFrameF2.ancestorIds.toList(), - ['id_3', 'id_1','id_0', 'cpuProfileRoot'], + ['id_3', 'id_1', 'id_0', 'cpuProfileRoot'], ); expect( stackFrameC2.ancestorIds.toList(), - ['id_5', 'id_4', 'id_3', 'id_1','id_0', 'cpuProfileRoot'], + ['id_5', 'id_4', 'id_3', 'id_1', 'id_0', 'cpuProfileRoot'], ); expect( stackFrameC3.ancestorIds.toList(), - ['id_6', 'id_3', 'id_1','id_0', 'cpuProfileRoot'], + ['id_6', 'id_3', 'id_1', 'id_0', 'cpuProfileRoot'], ); }); diff --git a/packages/devtools_app/test/cpu_profiler/method_table/method_table_test.dart b/packages/devtools_app/test/cpu_profiler/method_table/method_table_test.dart index 8b137891791..4a6252b45b7 100644 --- a/packages/devtools_app/test/cpu_profiler/method_table/method_table_test.dart +++ b/packages/devtools_app/test/cpu_profiler/method_table/method_table_test.dart @@ -1 +1,124 @@ +// Copyright 2023 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +import 'package:devtools_app/devtools_app.dart'; +import 'package:devtools_app/src/screens/profiler/cpu_profile_transformer.dart'; +import 'package:devtools_app/src/screens/profiler/panes/method_table/method_table.dart'; +import 'package:devtools_app/src/screens/profiler/panes/method_table/method_table_controller.dart'; +import 'package:devtools_app/src/screens/profiler/panes/method_table/method_table_model.dart'; +import 'package:devtools_app/src/shared/table/table.dart'; +import 'package:devtools_test/devtools_test.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mockito/mockito.dart'; +import 'package:vm_service/vm_service.dart'; + +import '../../test_infra/matchers/_golden_matcher_io.dart'; +import '../../test_infra/test_data/cpu_profiler/simple_profile_2.dart'; +import '../../test_infra/utils/test_utils.dart'; + +void main() { + late MethodTableController methodTableController; + + setUp(() async { + setCharacterWidthForTables(); + setGlobal(ServiceConnectionManager, MockServiceConnectionManager()); + setGlobal(IdeTheme, IdeTheme()); + final mockScriptManager = MockScriptManager(); + when(mockScriptManager.sortedScripts).thenReturn( + ValueNotifier>([]), + ); + when(mockScriptManager.scriptRefForUri(any)).thenReturn( + ScriptRef( + uri: 'package:test/script.dart', + id: 'script.dart', + ), + ); + setGlobal(ScriptManager, mockScriptManager); + final data = CpuProfileData.parse(simpleCpuProfile2); + await CpuProfileTransformer().processData(data, processId: 'test'); + methodTableController = MethodTableController() + ..createMethodTableGraph(data); + }); + + const windowSize = Size(2000.0, 1000.0); + + Future pumpMethodTable(WidgetTester tester) async { + await tester.pumpWidget( + wrap( + CpuMethodTable( + methodTableController: methodTableController, + ), + ), + ); + await tester.pumpAndSettle(); + expect(find.byType(CpuMethodTable), findsOneWidget); + } + + group('$CpuMethodTable', () { + testWidgetsWithWindowSize( + 'loads methods with no selection', + windowSize, + (WidgetTester tester) async { + await pumpMethodTable(tester); + expect(find.byType(FlatTable), findsOneWidget); + expect(find.text('Method'), findsOneWidget); + expect(find.text('Total %'), findsOneWidget); + expect(find.text('Self %'), findsOneWidget); + expect(find.text('Caller %'), findsNothing); + expect(find.text('Callee %'), findsNothing); + expect( + find.text('Select a method to view its call graph.'), + findsOneWidget, + ); + await expectLater( + find.byType(CpuMethodTable), + matchesDevToolsGolden( + '../../test_infra/goldens/cpu_profiler/method_table_no_selection.png', + ), + ); + }, + ); + + testWidgetsWithWindowSize( + 'loads methods with selection', + windowSize, + (WidgetTester tester) async { + final interestingNode = methodTableController.methods.value.first; + expect(interestingNode.name, 'A'); + expect(interestingNode.predecessors, isNotEmpty); + expect(interestingNode.successors, isNotEmpty); + + methodTableController.selectedNode.value = interestingNode; + await pumpMethodTable(tester); + expect(find.byType(FlatTable), findsNWidgets(3)); + expect(find.text('Method'), findsNWidgets(3)); + expect(find.text('Total %'), findsOneWidget); + expect(find.text('Self %'), findsOneWidget); + expect(find.text('Caller %'), findsOneWidget); + expect(find.text('Callee %'), findsOneWidget); + expect( + find.text('Select a method to view its call graph.'), + findsNothing, + ); + await expectLater( + find.byType(CpuMethodTable), + matchesDevToolsGolden( + '../../test_infra/goldens/cpu_profiler/method_table_with_selection.png', + ), + ); + + methodTableController.selectedNode.value = + methodTableController.methods.value.last; + await tester.pumpAndSettle(); + await expectLater( + find.byType(CpuMethodTable), + matchesDevToolsGolden( + '../../test_infra/goldens/cpu_profiler/method_table_with_selection_2.png', + ), + ); + }, + ); + }); +} diff --git a/packages/devtools_app/test/test_infra/goldens/cpu_profiler/method_table_no_selection.png b/packages/devtools_app/test/test_infra/goldens/cpu_profiler/method_table_no_selection.png new file mode 100644 index 0000000000000000000000000000000000000000..16554474b3647c4429e446a5f55c10b85eb228fa GIT binary patch literal 12170 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�ngSr0jT zoE<>zGf2HDL0CsJ)2kxM-Y8Hn9PWJCa@65PLOig8 zck}N7Y{Keb*r5LVV55->Dr3%gXC#AVh~Gr4CoKKtI34c&C#RxTBcAo%x~$gm0;|kA z4%TI`jsrvj>$(7oVcmzW%i#YE4)hZ3bO^kfkRDTC!Nt9B7qm-o;tV(PhbuYetCrm1 z>hqQ}SRbvNJ-oJZuJ7>5Y34UpIJ@=X)@8ShCt&?n4;WeafOVj(t&-6;?3y|0`2OMF SAqTWS_`{+1YTrHn<-Y@yRQbFB literal 0 HcmV?d00001 diff --git a/packages/devtools_app/test/test_infra/goldens/cpu_profiler/method_table_with_selection_2.png b/packages/devtools_app/test/test_infra/goldens/cpu_profiler/method_table_with_selection_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2a8fb4b6169a65909e82eee4ef56f735fa7e08b0 GIT binary patch literal 12934 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 I9{v4)1ILAmV*mgE literal 0 HcmV?d00001 From 8f15fa00a3c98a226fb677dea9078b5ed70aaa62 Mon Sep 17 00:00:00 2001 From: Kenzie Schmoll Date: Wed, 8 Mar 2023 15:30:00 -0800 Subject: [PATCH 06/10] add image to release notes --- .../release_notes/NEXT_RELEASE_NOTES.md | 3 +++ .../release_notes/images/image1.png | Bin 0 -> 288900 bytes 2 files changed, 3 insertions(+) create mode 100644 packages/devtools_app/release_notes/images/image1.png diff --git a/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md b/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md index ec36fb2f43a..14327d48a2a 100644 --- a/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md +++ b/packages/devtools_app/release_notes/NEXT_RELEASE_NOTES.md @@ -16,6 +16,9 @@ TODO: Remove this section if there are not any general updates. ## CPU profiler updates * Add a Method Table to the CPU profiler - [#5366](https://github.com/flutter/devtools/pull/5366) + +![method table](images/image1.png "method_table") + * Add ability to inspect statistics for a CPU profile - [#5340](https://github.com/flutter/devtools/pull/5340) * Fix a bug where Native stack frames were missing their name - [#5344](https://github.com/flutter/devtools/pull/5344) * Fix an error in total and self time calculations for the bottom up tree - [#5348](https://github.com/flutter/devtools/pull/5348) diff --git a/packages/devtools_app/release_notes/images/image1.png b/packages/devtools_app/release_notes/images/image1.png new file mode 100644 index 0000000000000000000000000000000000000000..c90d043bddd045040e1c1a24e01a5304599e1278 GIT binary patch literal 288900 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

?VFP=^t;J{sn)^LG<2U6TTdFRyt~s|f))Fua){ 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

V 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

8elKc~2_< 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 AR{#J2 literal 0 HcmV?d00001 From 44be1c58f27d5d8bc5b2efb449e2c9b5704938d5 Mon Sep 17 00:00:00 2001 From: Kenzie Schmoll Date: Wed, 8 Mar 2023 16:08:19 -0800 Subject: [PATCH 07/10] fix tests --- .../method_table/method_table_model.dart | 2 +- .../test/cpu_profiler/cpu_profiler_test.dart | 12 +++++------ .../method_table/method_table_model_test.dart | 20 +++++++++++++++--- .../bottom_up_guidelines.png} | Bin .../bottom_up_no_guidelines.png} | Bin .../call_tree_guidelines.png} | Bin .../call_tree_no_guidelines.png} | Bin 7 files changed, 24 insertions(+), 10 deletions(-) rename packages/devtools_app/test/test_infra/goldens/{cpu_profiler_bottom_up_guidelines.png => cpu_profiler/bottom_up_guidelines.png} (100%) rename packages/devtools_app/test/test_infra/goldens/{cpu_profiler_bottom_up_no_guidelines.png => cpu_profiler/bottom_up_no_guidelines.png} (100%) rename packages/devtools_app/test/test_infra/goldens/{cpu_profiler_call_tree_guidelines.png => cpu_profiler/call_tree_guidelines.png} (100%) rename packages/devtools_app/test/test_infra/goldens/{cpu_profiler_call_tree_no_guidelines.png => cpu_profiler/call_tree_no_guidelines.png} (100%) diff --git a/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_model.dart b/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_model.dart index 4a0424f17a1..66dea19a40e 100644 --- a/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_model.dart +++ b/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table_model.dart @@ -80,7 +80,7 @@ class MethodTableGraphNode extends GraphNode { .round(), ); - void merge(MethodTableGraphNode other, {bool mergeTotalTime = false}) { + void merge(MethodTableGraphNode other, {required bool mergeTotalTime}) { if (!shallowEquals(other)) return; stackFrameIds.addAll(other.stackFrameIds); _selfCount += other.selfCount; diff --git a/packages/devtools_app/test/cpu_profiler/cpu_profiler_test.dart b/packages/devtools_app/test/cpu_profiler/cpu_profiler_test.dart index 0d7be524c8d..a7057d8e6a6 100644 --- a/packages/devtools_app/test/cpu_profiler/cpu_profiler_test.dart +++ b/packages/devtools_app/test/cpu_profiler/cpu_profiler_test.dart @@ -479,7 +479,7 @@ void main() { await expectLater( find.byType(CpuProfiler), matchesDevToolsGolden( - '../test_infra/goldens/cpu_profiler_call_tree_no_guidelines.png', + '../test_infra/goldens/cpu_profiler/call_tree_no_guidelines.png', ), ); await tester.tap(find.byType(DisplayTreeGuidelinesToggle)); @@ -489,7 +489,7 @@ void main() { await expectLater( find.byType(CpuProfiler), matchesDevToolsGolden( - '../test_infra/goldens/cpu_profiler_call_tree_guidelines.png', + '../test_infra/goldens/cpu_profiler/call_tree_guidelines.png', ), ); await tester.tap(find.byType(DisplayTreeGuidelinesToggle)); @@ -499,7 +499,7 @@ void main() { await expectLater( find.byType(CpuProfiler), matchesDevToolsGolden( - '../test_infra/goldens/cpu_profiler_call_tree_no_guidelines.png', + '../test_infra/goldens/cpu_profiler/call_tree_no_guidelines.png', ), ); @@ -515,7 +515,7 @@ void main() { await expectLater( find.byType(CpuProfiler), matchesDevToolsGolden( - '../test_infra/goldens/cpu_profiler_bottom_up_no_guidelines.png', + '../test_infra/goldens/cpu_profiler/bottom_up_no_guidelines.png', ), ); await tester.tap(find.byType(DisplayTreeGuidelinesToggle)); @@ -525,7 +525,7 @@ void main() { await expectLater( find.byType(CpuProfiler), matchesDevToolsGolden( - '../test_infra/goldens/cpu_profiler_bottom_up_guidelines.png', + '../test_infra/goldens/cpu_profiler/bottom_up_guidelines.png', ), ); await tester.tap(find.byType(DisplayTreeGuidelinesToggle)); @@ -535,7 +535,7 @@ void main() { await expectLater( find.byType(CpuProfiler), matchesDevToolsGolden( - '../test_infra/goldens/cpu_profiler_bottom_up_no_guidelines.png', + '../test_infra/goldens/cpu_profiler/bottom_up_no_guidelines.png', ), ); }, diff --git a/packages/devtools_app/test/cpu_profiler/method_table/method_table_model_test.dart b/packages/devtools_app/test/cpu_profiler/method_table/method_table_model_test.dart index 61d7e92300c..6fba2b0efd3 100644 --- a/packages/devtools_app/test/cpu_profiler/method_table/method_table_model_test.dart +++ b/packages/devtools_app/test/cpu_profiler/method_table/method_table_model_test.dart @@ -92,18 +92,32 @@ void main() { expect(node1Copy.selfCount, 1); // Attempt the unsuccessful merges first and verify nothing is changed. - node1Copy.merge(node3); + node1Copy.merge(node3, mergeTotalTime: true); expect(node1Copy.totalCount, 2); expect(node1Copy.selfCount, 1); - node1Copy.merge(node3); + node1Copy.merge(node3, mergeTotalTime: true); expect(node1Copy.totalCount, 2); expect(node1Copy.selfCount, 1); expect(node2.totalCount, 4); expect(node2.selfCount, 4); - node1Copy.merge(node2); + node1Copy.merge(node2, mergeTotalTime: true); expect(node1Copy.totalCount, 6); expect(node1Copy.selfCount, 5); }); + + test('merge without total time', () async { + // Make a copy so that we do not modify the original nodes. + final node1Copy = node1.copy(); + + expect(node1Copy.totalCount, 2); + expect(node1Copy.selfCount, 1); + expect(node2.totalCount, 4); + expect(node2.selfCount, 4); + + node1Copy.merge(node2, mergeTotalTime: false); + expect(node1Copy.totalCount, 2); + expect(node1Copy.selfCount, 5); + }); }); } diff --git a/packages/devtools_app/test/test_infra/goldens/cpu_profiler_bottom_up_guidelines.png b/packages/devtools_app/test/test_infra/goldens/cpu_profiler/bottom_up_guidelines.png similarity index 100% rename from packages/devtools_app/test/test_infra/goldens/cpu_profiler_bottom_up_guidelines.png rename to packages/devtools_app/test/test_infra/goldens/cpu_profiler/bottom_up_guidelines.png diff --git a/packages/devtools_app/test/test_infra/goldens/cpu_profiler_bottom_up_no_guidelines.png b/packages/devtools_app/test/test_infra/goldens/cpu_profiler/bottom_up_no_guidelines.png similarity index 100% rename from packages/devtools_app/test/test_infra/goldens/cpu_profiler_bottom_up_no_guidelines.png rename to packages/devtools_app/test/test_infra/goldens/cpu_profiler/bottom_up_no_guidelines.png diff --git a/packages/devtools_app/test/test_infra/goldens/cpu_profiler_call_tree_guidelines.png b/packages/devtools_app/test/test_infra/goldens/cpu_profiler/call_tree_guidelines.png similarity index 100% rename from packages/devtools_app/test/test_infra/goldens/cpu_profiler_call_tree_guidelines.png rename to packages/devtools_app/test/test_infra/goldens/cpu_profiler/call_tree_guidelines.png diff --git a/packages/devtools_app/test/test_infra/goldens/cpu_profiler_call_tree_no_guidelines.png b/packages/devtools_app/test/test_infra/goldens/cpu_profiler/call_tree_no_guidelines.png similarity index 100% rename from packages/devtools_app/test/test_infra/goldens/cpu_profiler_call_tree_no_guidelines.png rename to packages/devtools_app/test/test_infra/goldens/cpu_profiler/call_tree_no_guidelines.png From 9321e1f0248725a825cffdefc6d0ea8e78c206a8 Mon Sep 17 00:00:00 2001 From: Kenzie Schmoll Date: Wed, 8 Mar 2023 16:10:38 -0800 Subject: [PATCH 08/10] fix golden --- ...meline_flame_chart_with_selected_frame.png | Bin 16787 -> 16812 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/packages/devtools_app/test/test_infra/goldens/timeline_flame_chart_with_selected_frame.png b/packages/devtools_app/test/test_infra/goldens/timeline_flame_chart_with_selected_frame.png index f1051217c864cad7af75f92a949edf7490554b10..bfaa53b4af1ae638332264701cc1e513d28d1636 100644 GIT binary patch delta 3951 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 Lz!SB{qW<=8t?Mca delta 3852 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 From 3f3354f9e74d0dbc8793cf1a66a34b575f25e7f1 Mon Sep 17 00:00:00 2001 From: Kenzie Schmoll Date: Thu, 9 Mar 2023 11:30:59 -0800 Subject: [PATCH 09/10] formatting --- .../test/cpu_profiler/method_table/method_table_model_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/devtools_app/test/cpu_profiler/method_table/method_table_model_test.dart b/packages/devtools_app/test/cpu_profiler/method_table/method_table_model_test.dart index 6fba2b0efd3..3291969d446 100644 --- a/packages/devtools_app/test/cpu_profiler/method_table/method_table_model_test.dart +++ b/packages/devtools_app/test/cpu_profiler/method_table/method_table_model_test.dart @@ -114,7 +114,7 @@ void main() { expect(node1Copy.selfCount, 1); expect(node2.totalCount, 4); expect(node2.selfCount, 4); - + node1Copy.merge(node2, mergeTotalTime: false); expect(node1Copy.totalCount, 2); expect(node1Copy.selfCount, 5); From 80d2d6ba5a075f126502e6290e3d4366c9bfe4c9 Mon Sep 17 00:00:00 2001 From: Kenzie Schmoll Date: Thu, 9 Mar 2023 12:05:53 -0800 Subject: [PATCH 10/10] undo accidental test change --- packages/devtools_app/test/shared/table_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/devtools_app/test/shared/table_test.dart b/packages/devtools_app/test/shared/table_test.dart index c1358c0568e..025b0d312ab 100644 --- a/packages/devtools_app/test/shared/table_test.dart +++ b/packages/devtools_app/test/shared/table_test.dart @@ -495,7 +495,7 @@ void main() { expect(columnWidths.length, equals(3)); expect(columnWidths[0], equals(300.0)); expect(columnWidths[1], equals(400.0)); - expect(columnWidths[2], equals(369.0)); + expect(columnWidths[2], equals(36.0)); } // TODO(jacobr): add a golden image test.