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

Unified Diff: chrome/browser/resources/tracing/timeline_model_test.html

Issue 8513009: Add TRACE_COUNTER support to about:tracing (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month 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
Index: chrome/browser/resources/tracing/timeline_model_test.html
diff --git a/chrome/browser/resources/tracing/timeline_model_test.html b/chrome/browser/resources/tracing/timeline_model_test.html
index 84c6d4eedda4f2aeda7b9f5be3951f97b3c6e2a8..d8a424dae910b3d72f1479b41cbeedb38d3f6549 100644
--- a/chrome/browser/resources/tracing/timeline_model_test.html
+++ b/chrome/browser/resources/tracing/timeline_model_test.html
@@ -6,7 +6,7 @@ Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<head>
-<title></title>
+<title>TimelineModel tests</title>
<script src="http://closure-library.googlecode.com/svn/trunk/closure/goog/base.js"></script>
<script src="../shared/js/cr.js"></script>
<script src="../shared/js/cr/event_target.js"></script>
@@ -55,7 +55,7 @@ function testNestedParsing() {
{name: 'a', args: {}, pid: 1, ts: 1, cat: 'foo', tid: 1, ph: 'B'},
{name: 'b', args: {}, pid: 1, ts: 2, cat: 'foo', tid: 1, ph: 'B'},
{name: 'b', args: {}, pid: 1, ts: 3, cat: 'foo', tid: 1, ph: 'E'},
- {name: 'a', args: {}, pid: 1, ts: 4, cat: 'foo', tid: 1, ph: 'E'},
+ {name: 'a', args: {}, pid: 1, ts: 4, cat: 'foo', tid: 1, ph: 'E'}
];
var m = new tracing.TimelineModel(events);
var p = m.processes[1];
@@ -81,12 +81,12 @@ function testNestedParsing() {
function testAutoclosing() {
var events = [
- // Slice that doesn't finish
+ // Slice that doesn't finish.
{name: 'a', args: {}, pid: 1, ts: 1, cat: 'foo', tid: 1, ph: 'B'},
- // Slice that does finish to give an 'end time' to make autoclosing work
+ // Slice that does finish to give an 'end time' to make autoclosing work.
{name: 'b', args: {}, pid: 1, ts: 1, cat: 'foo', tid: 2, ph: 'B'},
- {name: 'b', args: {}, pid: 1, ts: 2, cat: 'foo', tid: 2, ph: 'E'},
+ {name: 'b', args: {}, pid: 1, ts: 2, cat: 'foo', tid: 2, ph: 'E'}
];
var m = new tracing.TimelineModel(events);
var p = m.processes[1];
@@ -102,13 +102,13 @@ function testAutoclosing() {
function testNestedAutoclosing() {
var events = [
- // Tasks that dont finish
+ // Tasks that dont finish.
{name: 'a1', args: {}, pid: 1, ts: 1, cat: 'foo', tid: 1, ph: 'B'},
{name: 'a2', args: {}, pid: 1, ts: 1.5, cat: 'foo', tid: 1, ph: 'B'},
- // Slice that does finish to give an 'end time' to make autoclosing work
+ // Slice that does finish to give an 'end time' to make autoclosing work.
{name: 'b', args: {}, pid: 1, ts: 1, cat: 'foo', tid: 2, ph: 'B'},
- {name: 'b', args: {}, pid: 1, ts: 2, cat: 'foo', tid: 2, ph: 'E'},
+ {name: 'b', args: {}, pid: 1, ts: 2, cat: 'foo', tid: 2, ph: 'E'}
];
var m = new tracing.TimelineModel(events);
var p = m.processes[1];
@@ -138,7 +138,7 @@ function testTaskColoring() {
{name: 'b', args: {}, pid: 1, ts: 3, cat: 'foo', tid: 1, ph: 'B'},
{name: 'b', args: {}, pid: 1, ts: 4, cat: 'foo', tid: 1, ph: 'E'},
{name: 'a', args: {}, pid: 1, ts: 5, cat: 'foo', tid: 1, ph: 'B'},
- {name: 'a', args: {}, pid: 1, ts: 6, cat: 'foo', tid: 1, ph: 'E'},
+ {name: 'a', args: {}, pid: 1, ts: 6, cat: 'foo', tid: 1, ph: 'E'}
];
var m = new tracing.TimelineModel(events);
var p = m.processes[1];
@@ -168,7 +168,7 @@ function testMultipleThreadParsing() {
assertEquals(2, p.numThreads);
- // Check thread 1
+ // Check thread 1.
var t = p.threads[1];
assertNotUndefined(t);
assertEquals(1, t.subRows.length);
@@ -182,7 +182,7 @@ function testMultipleThreadParsing() {
assertEquals((2 - 1) / 1000, slice.duration);
assertEquals(0, slice.subSlices.length);
- // Check thread 2
+ // Check thread 2.
var t = p.threads[2];
assertNotUndefined(t);
assertEquals(1, t.subRows.length);
@@ -211,7 +211,7 @@ function testMultiplePidParsing() {
assertEquals(1, p.numThreads);
- // Check process 1 thread 1
+ // Check process 1 thread 1.
var t = p.threads[1];
assertNotUndefined(t);
assertEquals(1, t.subRows.length);
@@ -225,7 +225,7 @@ function testMultiplePidParsing() {
assertEquals((2 - 1) / 1000, slice.duration);
assertEquals(0, slice.subSlices.length);
- // Check process 2 thread 2
+ // Check process 2 thread 2.
var p = m.processes[2];
assertNotUndefined(p);
assertEquals(1, p.numThreads);
@@ -244,34 +244,34 @@ function testMultiplePidParsing() {
// Check getAllThreads.
assertArrayEquals([m.processes[1].threads[1], m.processes[2].threads[2]],
- m.getAllThreads())
+ m.getAllThreads());
}
-// Thread names
+// Thread names.
function testThreadNames() {
var events = [
{name: 'thread_name', args: {name: 'Thread 1'},
- pid: 1, ts: 0, tid: 1, ph: 'M'},
+ pid: 1, ts: 0, tid: 1, ph: 'M'},
{name: 'a', args: {}, pid: 1, ts: 1, cat: 'foo', tid: 1, ph: 'B'},
{name: 'a', args: {}, pid: 1, ts: 2, cat: 'foo', tid: 1, ph: 'E'},
{name: 'b', args: {}, pid: 2, ts: 3, cat: 'foo', tid: 2, ph: 'B'},
{name: 'b', args: {}, pid: 2, ts: 4, cat: 'foo', tid: 2, ph: 'E'},
{name: 'thread_name', args: {name: 'Thread 2'},
- pid: 2, ts: 0, tid: 2, ph: 'M'},
+ pid: 2, ts: 0, tid: 2, ph: 'M'}
];
var m = new tracing.TimelineModel(events);
assertEquals('Thread 1', m.processes[1].threads[1].name);
assertEquals('Thread 2', m.processes[2].threads[2].name);
}
-// User time
+// User time.
function testUserTime() {
var events = [
{name: 'thread_name', args: {name: 'Thread 1'},
- pid: 1, ts: 0, tid: 1, ph: 'M'},
+ pid: 1, ts: 0, tid: 1, ph: 'M'},
{name: 'a', args: {}, pid: 1, ts: 1, uts: 70, cat: 'foo', tid: 1, ph: 'B'},
{name: 'a', args: {}, pid: 1, ts: 2, uts: 77, cat: 'foo', tid: 1, ph: 'E'},
- {name: 'a', args: {}, pid: 1, ts: 2 , uts: 80, cat: 'foo', tid: 1, ph: 'I'},
+ {name: 'a', args: {}, pid: 1, ts: 2 , uts: 80, cat: 'foo', tid: 1, ph: 'I'}
];
var m = new tracing.TimelineModel(events);
var subRow = m.processes[1].threads[1].subRows[0];
@@ -288,7 +288,7 @@ function testImmediateParsing() {
// recentering/zeroing doesn't clobber their timestamp.
{name: 'a', args: {}, pid: 1, ts: 1, cat: 'foo', tid: 1, ph: 'B'},
{name: 'immediate', args: {}, pid: 1, ts: 2, cat: 'foo', tid: 1, ph: 'I'},
- {name: 'a', args: {}, pid: 1, ts: 4, cat: 'foo', tid: 1, ph: 'E'},
+ {name: 'a', args: {}, pid: 1, ts: 4, cat: 'foo', tid: 1, ph: 'E'}
];
var m = new tracing.TimelineModel(events);
var p = m.processes[1];
@@ -310,6 +310,93 @@ function testImmediateParsing() {
subRow = t.subRows[1];
assertEquals(immed, subRow[0]);
}
+
+function testSimpleCounter() {
+ var events = [
+ {name: 'ctr', args: {'value': 0}, pid: 1, ts: 0, cat: 'foo', tid: 1,
+ ph: 'C'},
+ {name: 'ctr', args: {'value': 10}, pid: 1, ts: 10, cat: 'foo', tid: 1,
+ ph: 'C'},
+ {name: 'ctr', args: {'value': 0}, pid: 1, ts: 20, cat: 'foo', tid: 1,
+ ph: 'C'}
+
+ ];
+ var m = new tracing.TimelineModel(events);
+ var p = m.processes[1];
+ var ctr = m.processes[1].counters['ctr'];
+
+ assertEquals('ctr', ctr.name);
+ assertEquals(3, ctr.numSamples);
+ assertEquals(1, ctr.numSeries);
+
+ assertArrayEquals(['value'], ctr.seriesNames);
+ assertArrayEquals([tracing.getStringHash('ctr.value')], ctr.seriesColors);
+ assertArrayEquals([0, 0.01, 0.02], ctr.timestamps);
+ assertArrayEquals([0, 10, 0], ctr.samples);
+ assertArrayEquals([0, 10, 0], ctr.totals);
+ assertEquals(10, ctr.maxTotal);
+}
+
+function testMultiCounterUpdateBounds() {
+ var ctr = new tracing.TimelineCounter(undefined, 'testBasicCounter');
+ ctr.numSeries = 1;
+ ctr.seriesNames = ['value1', 'value2'];
+ ctr.seriesColors = ['testBasicCounter.value1', 'testBasicCounter.value2'];
+ ctr.timestamps = [0, 1, 2, 3, 4, 5, 6, 7];
+ ctr.samples = [0, 0,
+ 1, 0,
+ 1, 1,
+ 2, 1.1,
+ 3, 0,
+ 1, 7,
+ 3, 0,
+ 3.1, 0.5];
+ ctr.updateBounds();
+ assertEquals(0, ctr.minTimestamp);
+ assertEquals(7, ctr.maxTimestamp);
+ assertEquals(8, ctr.maxTotal);
+ assertArrayEquals([0, 0,
+ 1, 1,
+ 1, 2,
+ 2, 3.1,
+ 3, 3,
+ 1, 8,
+ 3, 3,
+ 3.1, 3.6], ctr.totals);
+}
+
+function testMultiCounter() {
+ var events = [
+ {name: 'ctr', args: {'value1': 0, 'value2': 7}, pid: 1, ts: 0, cat: 'foo',
+ tid: 1, ph: 'C'},
+ {name: 'ctr', args: {'value1': 10, 'value2': 4}, pid: 1, ts: 10, cat: 'foo',
+ tid: 1, ph: 'C'},
+ {name: 'ctr', args: {'value1': 0, 'value2': 1 }, pid: 1, ts: 20, cat: 'foo',
+ tid: 1, ph: 'C'}
+ ];
+ var m = new tracing.TimelineModel(events);
+ var p = m.processes[1];
+ var ctr = m.processes[1].counters['ctr'];
+ assertEquals('ctr', ctr.name);
+
+ assertEquals('ctr', ctr.name);
+ assertEquals(3, ctr.numSamples);
+ assertEquals(2, ctr.numSeries);
+
+ assertArrayEquals(['value1', 'value2'], ctr.seriesNames);
+ assertArrayEquals([tracing.getStringHash('ctr.value1'),
+ tracing.getStringHash('ctr.value2')],
+ ctr.seriesColors);
+ assertArrayEquals([0, 0.01, 0.02], ctr.timestamps);
+ assertArrayEquals([0, 7,
+ 10, 4,
+ 0, 1], ctr.samples);
+ assertArrayEquals([0, 7,
+ 10, 14,
+ 0, 1], ctr.totals);
+ assertEquals(14, ctr.maxTotal);
+}
+
</script>
</body>
</html>

Powered by Google App Engine
This is Rietveld 408576698