Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1834)

Unified Diff: test/mjsunit/tools/profile.js

Issue 99181: Enhancing profiling data processing code with functionality needed for the Dev Tools Profiler. (Closed)
Patch Set: Created 11 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tools/profile.js » ('j') | tools/profile_view.js » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/tools/profile.js
diff --git a/test/mjsunit/tools/profile.js b/test/mjsunit/tools/profile.js
index aaa9aa76c1850d2e01c5afc1986c236d31c3a858..49eef3b0aaa329ec54399e6d7c489762e96c3191 100644
--- a/test/mjsunit/tools/profile.js
+++ b/test/mjsunit/tools/profile.js
@@ -124,6 +124,10 @@ ProfileTestDriver.prototype.execute = function() {
this.leave();
this.leave();
this.leave();
+ this.enter('lib2-f1');
+ this.enter('lib1-f1');
+ this.leave();
+ this.leave();
this.stay();
this.leave();
};
@@ -149,14 +153,14 @@ function Inherits(childCtor, parentCtor) {
Driver.prototype.enter = function(func) {
this.namesTopDown.push(func);
this.namesBottomUp.unshift(func);
- assertNoPathExists(this.profile.getTopDownTreeRoot(), this.namesTopDown,
+ assertNoPathExists(this.profile.getTopDownProfile().getRoot(), this.namesTopDown,
'pre enter/topDown');
- assertNoPathExists(this.profile.getBottomUpTreeRoot(), this.namesBottomUp,
+ assertNoPathExists(this.profile.getBottomUpProfile().getRoot(), this.namesBottomUp,
'pre enter/bottomUp');
Driver.superClass_.enter.call(this, func);
- assertPathExists(this.profile.getTopDownTreeRoot(), this.namesTopDown,
+ assertPathExists(this.profile.getTopDownProfile().getRoot(), this.namesTopDown,
'post enter/topDown');
- assertPathExists(this.profile.getBottomUpTreeRoot(), this.namesBottomUp,
+ assertPathExists(this.profile.getBottomUpProfile().getRoot(), this.namesBottomUp,
'post enter/bottomUp');
};
@@ -196,8 +200,8 @@ function assertNodeWeights(root, path, selfTicks, totalTicks) {
testDriver.execute();
var pathWeights = [
- [['lib1-f1'], 1, 14],
- [['lib1-f1', 'lib1-f2'], 2, 13],
+ [['lib1-f1'], 1, 16],
+ [['lib1-f1', 'lib1-f2'], 2, 15],
[['lib1-f1', 'lib1-f2', 'T: F1'], 2, 11],
[['lib1-f1', 'lib1-f2', 'T: F1', 'T: F2'], 1, 1],
[['lib1-f1', 'lib1-f2', 'T: F1', 'lib2-f1'], 2, 3],
@@ -205,10 +209,12 @@ function assertNodeWeights(root, path, selfTicks, totalTicks) {
[['lib1-f1', 'lib1-f2', 'T: F1', 'T: F3'], 1, 5],
[['lib1-f1', 'lib1-f2', 'T: F1', 'T: F3', 'T: F3'], 1, 4],
[['lib1-f1', 'lib1-f2', 'T: F1', 'T: F3', 'T: F3', 'T: F3'], 1, 1],
- [['lib1-f1', 'lib1-f2', 'T: F1', 'T: F3', 'T: F3', 'T: F2'], 2, 2]
+ [['lib1-f1', 'lib1-f2', 'T: F1', 'T: F3', 'T: F3', 'T: F2'], 2, 2],
+ [['lib1-f1', 'lib1-f2', 'lib2-f1'], 1, 2],
+ [['lib1-f1', 'lib1-f2', 'lib2-f1', 'lib1-f1'], 1, 1]
];
- var root = testDriver.profile.getTopDownTreeRoot();
+ var root = testDriver.profile.getTopDownProfile().getRoot();
for (var i = 0; i < pathWeights.length; ++i) {
var data = pathWeights[i];
assertNodeWeights(root, data[0], data[1], data[2]);
@@ -221,6 +227,7 @@ function assertNodeWeights(root, path, selfTicks, totalTicks) {
ProfileTestDriver.call(this);
this.namesTopDown = [''];
this.counters = {};
+ this.root = null;
};
Inherits(Driver, ProfileTestDriver);
@@ -262,16 +269,26 @@ function assertNodeWeights(root, path, selfTicks, totalTicks) {
this.namesTopDown.pop();
};
+ Driver.prototype.extractRoot = function() {
+ assertTrue('' in this.counters);
+ this.root = this.counters[''];
+ delete this.counters[''];
+ };
+
var testDriver = new Driver();
testDriver.execute();
+ testDriver.extractRoot();
var counted = 0;
for (var c in testDriver.counters) {
counted++;
}
- var flatProfile =
- testDriver.profile.getFlatProfile().getRoot().exportChildren();
+ var flatProfileRoot = testDriver.profile.getFlatProfile().getRoot();
+ assertEquals(testDriver.root.self, flatProfileRoot.selfWeight);
+ assertEquals(testDriver.root.total, flatProfileRoot.totalWeight);
+
+ var flatProfile = flatProfileRoot.exportChildren();
assertEquals(counted, flatProfile.length, 'counted vs. flatProfile');
for (var i = 0; i < flatProfile.length; ++i) {
var rec = flatProfile[i];
@@ -282,3 +299,50 @@ function assertNodeWeights(root, path, selfTicks, totalTicks) {
}
})();
+
+
+(function testFunctionCalleesProfileTicks() {
+ var testDriver = new ProfileTestDriver();
+ testDriver.execute();
+
+ var pathWeights = [
+ [['lib2-f1'], 3, 5],
+ [['lib2-f1', 'lib2-f1'], 1, 1],
+ [['lib2-f1', 'lib1-f1'], 1, 1]
+ ];
+
+ var profile = testDriver.profile.getTopDownProfile('lib2-f1');
+ var root = profile.getRoot();
+ for (var i = 0; i < pathWeights.length; ++i) {
+ var data = pathWeights[i];
+ assertNodeWeights(root, data[0], data[1], data[2]);
+ }
+})();
+
+
+(function testFunctionFlatProfileTicks() {
+ var testDriver = new ProfileTestDriver();
+ testDriver.execute();
+
+ var flatWeights = {
+ 'lib2-f1': [1, 1],
+ 'lib1-f1': [1, 1]
+ };
+
+ var flatProfileRoot =
+ testDriver.profile.getFlatProfile('lib2-f1').findOrAddChild('lib2-f1');
+ assertEquals(3, flatProfileRoot.selfWeight);
+ assertEquals(5, flatProfileRoot.totalWeight);
+
+ var flatProfile = flatProfileRoot.exportChildren();
+ assertEquals(2, flatProfile.length, 'counted vs. flatProfile');
+ for (var i = 0; i < flatProfile.length; ++i) {
+ var rec = flatProfile[i];
+ assertTrue(rec.label in flatWeights, 'uncounted: ' + rec.label);
+ var reference = flatWeights[rec.label];
+ assertEquals(reference[0], rec.selfWeight, 'self of ' + rec.label);
+ assertEquals(reference[1], rec.totalWeight, 'total of ' + rec.label);
+ }
+
+})();
+
« no previous file with comments | « no previous file | tools/profile.js » ('j') | tools/profile_view.js » ('J')

Powered by Google App Engine
This is Rietveld 408576698