Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / trace_viewer / tracing / importer / v8_log_importer_test.js
index 8a7e8b9..b0a5259 100644 (file)
@@ -14,12 +14,13 @@ tvcm.unittest.testSuite('tracing.importer.v8_log_importer_test', function() {
     var lines = [
       'shared-library,"/usr/lib/libc++.1.dylib",0x99d8aae0,0x99dce729',
       'tick,0x99d8aae4,12158,0,0x0,5'];
-    var m = new tracing.TraceModel(lines.join('\n'));
+    var m = new tracing.TraceModel(lines.join('\n'), false);
     var p = m.processes[-32];
-    var threads = p.findAllThreadsNamed('V8 PC');
-    var t = threads[0];
+    var t = p.findAllThreadsNamed('V8')[0];
     assertEquals(1, t.samples.length);
-    assertEquals('/usr/lib/libc++.1.dylib', t.samples[0].title);
+    assertEquals('V8 PC', t.samples[0].title);
+    assertEquals(12158 / 1000, t.samples[0].start);
+    assertEquals('/usr/lib/libc++.1.dylib', t.samples[0].leafStackFrame.title);
   });
 
   test('tickEventInGeneratedCode', function() {
@@ -27,12 +28,12 @@ tvcm.unittest.testSuite('tracing.importer.v8_log_importer_test', function() {
       'shared-library,"/usr/lib/libc++.1.dylib",0x99d8aae0,0x99dce729',
       'code-creation,Stub,2,0x5b60ce80,1259,"StringAddStub"',
       'tick,0x5b60ce84,12158,0,0x0,5'];
-    var m = new tracing.TraceModel(lines.join('\n'));
+    var m = new tracing.TraceModel(lines.join('\n'), false);
     var p = m.processes[-32];
-    var threads = p.findAllThreadsNamed('V8 PC');
+    var threads = p.findAllThreadsNamed('V8');
     var t = threads[0];
     assertEquals(1, t.samples.length);
-    assertEquals('StringAddStub', t.samples[0].title);
+    assertEquals('StringAddStub', t.samples[0].leafStackFrame.title);
   });
 
   test('tickEventInUknownCode', function() {
@@ -40,29 +41,25 @@ tvcm.unittest.testSuite('tracing.importer.v8_log_importer_test', function() {
       'shared-library,"/usr/lib/libc++.1.dylib",0x99d8aae0,0x99dce729',
       'code-creation,Stub,2,0x5b60ce80,1259,"StringAddStub"',
       'tick,0x4,0xbff02f08,12158,0,0x0,5'];
-    var m = new tracing.TraceModel(lines.join('\n'));
+    var m = new tracing.TraceModel(lines.join('\n'), false);
     var p = m.processes[-32];
-    var threads = p.findAllThreadsNamed('V8 PC');
+    var threads = p.findAllThreadsNamed('V8');
     var t = threads[0];
     assertEquals(1, t.samples.length);
-    assertEquals('UnknownCode', t.samples[0].title);
-    threads = p.findAllThreadsNamed('V8 JavaScript');
-    t = threads[0];
-    assertEquals(1, t.sliceGroup.slices.length);
+    assertEquals('Unknown', t.samples[0].leafStackFrame.title);
   });
 
   test('tickEventWithStack', function() {
     var lines = [
       'code-creation,LazyCompile,0,0x2905d0c0,1800,"InstantiateFunction native apinatives.js:26:29",0x56b19124,', // @suppress longLineCheck
       'tick,0x7fc6fe34,528674,0,0x3,0,0x2905d304'];
-    var m = new tracing.TraceModel(lines.join('\n'));
+    var m = new tracing.TraceModel(lines.join('\n'), false);
     var p = m.processes[-32];
-    var threads = p.findAllThreadsNamed('V8 PC');
-    var t = threads[0];
+    var t = p.findAllThreadsNamed('V8')[0];
     assertEquals(1, t.samples.length);
-    threads = p.findAllThreadsNamed('V8 JavaScript');
-    t = threads[0];
-    assertEquals(1, t.sliceGroup.slices.length);
+    assertArrayEquals(
+        ['v8: InstantiateFunction native apinatives.js:26:29'],
+        t.samples[0].getUserFriendlyStackTrace());
   });
 
   test('twoTickEventsWithStack', function() {
@@ -70,17 +67,20 @@ tvcm.unittest.testSuite('tracing.importer.v8_log_importer_test', function() {
       'code-creation,LazyCompile,0,0x2905d0c0,1800,"InstantiateFunction native apinatives.js:26:29",0x56b19124,', // @suppress longLineCheck
       'tick,0x7fc6fe34,528674,0,0x3,0,0x2905d304',
       'tick,0x7fd2a534,536213,0,0x81d8d080,0,0x2905d304'];
-    var m = new tracing.TraceModel(lines.join('\n'));
+    var m = new tracing.TraceModel(lines.join('\n'), false);
     var p = m.processes[-32];
-    var threads = p.findAllThreadsNamed('V8 PC');
-    var t = threads[0];
+    var t = p.findAllThreadsNamed('V8')[0];
     assertEquals(2, t.samples.length);
-    threads = p.findAllThreadsNamed('V8 JavaScript');
-    t = threads[0];
-    assertEquals(1, t.sliceGroup.slices.length);
-    var slice = t.sliceGroup.slices[0];
-    assertEquals(0, slice.start);
-    assertAlmostEquals((536213 - 528674) / 1000, slice.duration);
+    assertEquals(528674 / 1000, t.samples[0].start);
+    assertEquals(536213 / 1000, t.samples[1].start);
+    assertArrayEquals(
+        ['v8: InstantiateFunction native apinatives.js:26:29'],
+        t.samples[0].getUserFriendlyStackTrace());
+    assertArrayEquals(
+        ['v8: InstantiateFunction native apinatives.js:26:29'],
+        t.samples[1].getUserFriendlyStackTrace());
+    assertEquals(t.samples[0].leafStackFrame,
+                 t.samples[1].leafStackFrame);
   });
 
   test('twoTickEventsWithTwoStackFrames', function() {
@@ -89,24 +89,30 @@ tvcm.unittest.testSuite('tracing.importer.v8_log_importer_test', function() {
       'code-creation,LazyCompile,0,0x2905d0c0,1800,"InstantiateFunction native apinatives.js:26:29",0x56b19124,', // @suppress longLineCheck
       'tick,0x7fc6fe34,528674,0,0x3,0,0x2905d304,0x2904d6e8',
       'tick,0x7fd2a534,536213,0,0x81d8d080,0,0x2905d304,0x2904d6e8'];
-    var m = new tracing.TraceModel(lines.join('\n'));
+    var m = new tracing.TraceModel(lines.join('\n'), false);
     var p = m.processes[-32];
-    var threads = p.findAllThreadsNamed('V8 PC');
-    var t = threads[0];
+    var t = p.findAllThreadsNamed('V8')[0];
     assertEquals(2, t.samples.length);
-    threads = p.findAllThreadsNamed('V8 JavaScript');
-    t = threads[0];
-    assertEquals(2, t.sliceGroup.slices.length);
-    var slice = t.sliceGroup.slices[0];
-    assertEquals(0, slice.start);
-    assertAlmostEquals((536213 - 528674) / 1000, slice.duration);
-    assertEquals('Instantiate native apinatives.js:9:21', slice.title);
-    assertEquals(1, slice.subSlices.length);
-    var subSlice = slice.subSlices[0];
-    assertEquals(0, subSlice.start);
-    assertAlmostEquals((536213 - 528674) / 1000, subSlice.duration);
-    assertEquals('InstantiateFunction native apinatives.js:26:29',
-                 subSlice.title);
+
+    assertEquals(528674 / 1000, t.samples[0].start);
+    assertEquals(536213 / 1000, t.samples[1].start);
+    assertArrayEquals(
+        ['v8: Instantiate native apinatives.js:9:21',
+         'v8: InstantiateFunction native apinatives.js:26:29'],
+        t.samples[0].getUserFriendlyStackTrace());
+    assertArrayEquals(
+        ['v8: Instantiate native apinatives.js:9:21',
+         'v8: InstantiateFunction native apinatives.js:26:29'],
+        t.samples[1].getUserFriendlyStackTrace());
+
+    var childStackFrame = t.samples[0].leafStackFrame;
+    assertEquals(childStackFrame, t.samples[1].leafStackFrame);
+    assertEquals(0, childStackFrame.children.length);
+
+    var parentStackFrame = childStackFrame.parentFrame;
+    assertEquals(1, parentStackFrame.children.length);
+    assertEquals(childStackFrame, parentStackFrame.children[0]);
+
   });
 
   test('threeTickEventsWithTwoStackFrames', function() {
@@ -116,25 +122,34 @@ tvcm.unittest.testSuite('tracing.importer.v8_log_importer_test', function() {
       'tick,0x7fd7f75c,518328,0,0x81d86da8,2,0x2904d6e8',
       'tick,0x7fc6fe34,528674,0,0x3,0,0x2905d304,0x2904d6e8',
       'tick,0x7fd2a534,536213,0,0x81d8d080,0,0x2905d304,0x2904d6e8'];
-    var m = new tracing.TraceModel(lines.join('\n'));
+    var m = new tracing.TraceModel(lines.join('\n'), false);
     var p = m.processes[-32];
-    var threads = p.findAllThreadsNamed('V8 PC');
+    var threads = p.findAllThreadsNamed('V8');
+
     var t = threads[0];
     assertEquals(3, t.samples.length);
-    threads = p.findAllThreadsNamed('V8 JavaScript');
-    t = threads[0];
-    assertEquals(2, t.sliceGroup.slices.length);
-    var slice = t.sliceGroup.slices[0];
-    assertEquals(0, slice.start);
-    assertAlmostEquals((536213 - 518328) / 1000, slice.duration);
-    assertEquals('Instantiate native apinatives.js:9:21', slice.title);
-    assertEquals(1, slice.subSlices.length);
-    var subSlice = slice.subSlices[0];
-    assertAlmostEquals((528674 - 518328) / 1000, subSlice.start);
-    assertAlmostEquals((536213 - 528674) / 1000, subSlice.duration);
-    assertEquals('InstantiateFunction native apinatives.js:26:29',
-                 subSlice.title);
-    assertEquals(subSlice, t.sliceGroup.slices[1]);
+    assertEquals(518328 / 1000, t.samples[0].start);
+    assertEquals(528674 / 1000, t.samples[1].start);
+    assertEquals(536213 / 1000, t.samples[2].start);
+    assertArrayEquals(
+        ['v8: Instantiate native apinatives.js:9:21'],
+        t.samples[0].getUserFriendlyStackTrace());
+    assertArrayEquals(
+        ['v8: Instantiate native apinatives.js:9:21',
+         'v8: InstantiateFunction native apinatives.js:26:29'],
+        t.samples[1].getUserFriendlyStackTrace());
+    assertArrayEquals(
+        ['v8: Instantiate native apinatives.js:9:21',
+         'v8: InstantiateFunction native apinatives.js:26:29'],
+        t.samples[2].getUserFriendlyStackTrace());
+
+    var topLevelStackFrame = t.samples[0].leafStackFrame;
+    var childStackFrame = t.samples[1].leafStackFrame;
+    assertEquals(childStackFrame, t.samples[2].leafStackFrame);
+    assertEquals(topLevelStackFrame, childStackFrame.parentFrame);
+    assertEquals(1, topLevelStackFrame.children.length);
+    assertEquals(0, childStackFrame.children.length);
+    assertEquals(childStackFrame, topLevelStackFrame.children[0]);
   });
 
   test('twoSubStacks', function() {
@@ -148,53 +163,53 @@ tvcm.unittest.testSuite('tracing.importer.v8_log_importer_test', function() {
       'tick,0xb6f51d30,794049,0,0xb6f7b368,2,0x2906a914',
       'tick,0xb6f51d30,799146,0,0xb6f7b368,0,0x2906a914'
     ];
-    var m = new tracing.TraceModel(lines.join('\n'));
+    var m = new tracing.TraceModel(lines.join('\n'), false);
     var p = m.processes[-32];
-    var threads = p.findAllThreadsNamed('V8 PC');
+    var threads = p.findAllThreadsNamed('V8');
     var t = threads[0];
     assertEquals(5, t.samples.length);
-    threads = p.findAllThreadsNamed('V8 JavaScript');
-    t = threads[0];
-    assertEquals(3, t.sliceGroup.slices.length);
-    var slice = t.sliceGroup.slices[0];
-    assertEquals(0, slice.start);
-    assertAlmostEquals((536213 - 518328) / 1000, slice.duration);
-    assertEquals('Instantiate native apinatives.js:9:21', slice.title);
-    assertEquals(1, slice.subSlices.length);
-    var subSlice = slice.subSlices[0];
-    assertAlmostEquals((528674 - 518328) / 1000, subSlice.start);
-    assertAlmostEquals((536213 - 528674) / 1000, subSlice.duration);
-    assertEquals('InstantiateFunction native apinatives.js:26:29',
-                 subSlice.title);
-    assertEquals(subSlice, t.sliceGroup.slices[1]);
-    slice = t.sliceGroup.slices[2];
-    assertAlmostEquals((794049 - 518328) / 1000, slice.start);
-    assertAlmostEquals((799146 - 794049) / 1000, slice.duration);
-    assertEquals('http://www.google.com/', slice.title);
-  });
 
-  test('twoUnrelatedTickEventsWithStack', function() {
-    var lines = [
-      'code-creation,LazyCompile,0,0x2905d0c0,1800,"InstantiateFunction native apinatives.js:26:29",0x56b19124,', // @suppress longLineCheck
-      'tick,0x7fc6fe34,528674,0,0x3,0,0x2905d304',
-      'tick,0x7fc6fe34,529674,0,0x3,0,0x2905d304'];
-    var m = new tracing.TraceModel(lines.join('\n'));
-    var p = m.processes[-32];
-    var threads = p.findAllThreadsNamed('V8 PC');
-    var t = threads[0];
-    assertEquals(2, t.samples.length);
-    assertEquals('UnknownCode', t.samples[0].title);
-    threads = p.findAllThreadsNamed('V8 JavaScript');
-    t = threads[0];
-    assertEquals(1, t.sliceGroup.slices.length);
-    var slice = t.sliceGroup.slices[0];
-    assertEquals(0, slice.start);
-    assertEquals(1, slice.duration);
+    assertEquals(518328 / 1000, t.samples[0].start);
+    assertEquals(528674 / 1000, t.samples[1].start);
+    assertEquals(536213 / 1000, t.samples[2].start);
+    assertEquals(794049 / 1000, t.samples[3].start);
+    assertEquals(799146 / 1000, t.samples[4].start);
+
+    assertArrayEquals(
+        ['v8: Instantiate native apinatives.js:9:21'],
+        t.samples[0].getUserFriendlyStackTrace());
+    assertArrayEquals(
+        ['v8: Instantiate native apinatives.js:9:21',
+         'v8: InstantiateFunction native apinatives.js:26:29'],
+        t.samples[1].getUserFriendlyStackTrace());
+    assertArrayEquals(
+        ['v8: Instantiate native apinatives.js:9:21',
+         'v8: InstantiateFunction native apinatives.js:26:29'],
+        t.samples[2].getUserFriendlyStackTrace());
+    assertArrayEquals(['v8: http://www.google.com/'],
+                      t.samples[3].getUserFriendlyStackTrace());
+    assertArrayEquals(['v8: http://www.google.com/'],
+                      t.samples[4].getUserFriendlyStackTrace());
+
+    var firsStackTopLevelStackFrame = t.samples[0].leafStackFrame;
+    var firsStackChildStackFrame = t.samples[1].leafStackFrame;
+    assertEquals(firsStackChildStackFrame, t.samples[2].leafStackFrame);
+    assertEquals(firsStackTopLevelStackFrame,
+                 firsStackChildStackFrame.parentFrame);
+    assertEquals(1, firsStackTopLevelStackFrame.children.length);
+    assertEquals(0, firsStackChildStackFrame.children.length);
+    assertEquals(firsStackChildStackFrame,
+                 firsStackTopLevelStackFrame.children[0]);
+
+    var secondStackStackFrame = t.samples[3].leafStackFrame;
+    assertEquals(secondStackStackFrame, t.samples[4].leafStackFrame);
+    assertEquals(0, secondStackStackFrame.children.length);
+    assertEquals(undefined, secondStackStackFrame.parentFrame);
   });
 
   test('timerEventSliceCreation', function() {
     var lines = ['timer-event,"V8.External",38189483,3'];
-    var m = new tracing.TraceModel(lines.join('\n'));
+    var m = new tracing.TraceModel(lines.join('\n'), false);
     var p = m.processes[-32];
     var threads = p.findAllThreadsNamed('V8 Timers');
     assertNotUndefined(threads);
@@ -205,7 +220,7 @@ tvcm.unittest.testSuite('tracing.importer.v8_log_importer_test', function() {
 
   test('processThreadCreation', function() {
     var lines = ['timer-event,"V8.External",38189483,3'];
-    var m = new tracing.TraceModel(lines.join('\n'));
+    var m = new tracing.TraceModel(lines.join('\n'), false);
     assertNotUndefined(m);
     var p = m.processes[-32];
     assertNotUndefined(p);