Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / trace_viewer / tracing / tracks / async_slice_group_track_test.html
index f43d8b0..1850155 100644 (file)
@@ -12,12 +12,13 @@ found in the LICENSE file.
 <script>
 'use strict';
 
-tvcm.unittest.testSuite(function() { // @suppress longLineCheck
+tv.unittest.testSuite(function() { // @suppress longLineCheck
   var AsyncSliceGroup = tracing.trace_model.AsyncSliceGroup;
   var AsyncSliceGroupTrack = tracing.tracks.AsyncSliceGroupTrack;
   var Process = tracing.trace_model.Process;
   var Thread = tracing.trace_model.Thread;
   var newAsyncSlice = tracing.test_utils.newAsyncSlice;
+  var newAsyncSliceNamed = tracing.test_utils.newAsyncSliceNamed;
 
   test('filterSubRows', function() {
     var model = new tracing.TraceModel();
@@ -37,15 +38,19 @@ tvcm.unittest.testSuite(function() { // @suppress longLineCheck
     var p1 = new Process(model, 1);
     var t1 = new Thread(p1, 1);
     var g = new AsyncSliceGroup(t1);
-    g.push(newAsyncSlice(0, 1, t1, t1));
+    var s1 = newAsyncSlice(0, 1, t1, t1);
+    var subs1 = newAsyncSliceNamed("b", 0, 1, t1, t1);
+    s1.subSlices = [subs1];
+    g.push(s1);
     g.push(newAsyncSlice(1, 1, t1, t1));
     var track = new AsyncSliceGroupTrack(new tracing.TimelineViewport());
     track.group = g;
     var subRows = track.subRows;
-    assertEquals(1, subRows.length);
+    assertEquals(2, subRows.length);
     assertEquals(2, subRows[0].length);
-    assertEquals(g.slices[0].subSlices[0], subRows[0][0]);
-    assertEquals(g.slices[1].subSlices[0], subRows[0][1]);
+    assertEquals(1, subRows[1].length);
+    assertEquals(g.slices[0].subSlices[0], subRows[1][0]);
+    assertUndefined(g.slices[1].subSlices);
   });
 
   test('rebuildSubRows_twoOverlappingSlices', function() {
@@ -54,8 +59,15 @@ tvcm.unittest.testSuite(function() { // @suppress longLineCheck
     var t1 = new Thread(p1, 1);
     var g = new AsyncSliceGroup(t1);
 
-    g.push(newAsyncSlice(0, 1, t1, t1));
-    g.push(newAsyncSlice(0, 1.5, t1, t1));
+    var s1 = newAsyncSlice(0, 1, t1, t1);
+    var subs1 = newAsyncSliceNamed("b", 0, 1, t1, t1);
+    s1.subSlices = [subs1];
+    var s2 = newAsyncSlice(0, 1.5, t1, t1);
+    var subs2 = newAsyncSliceNamed("b", 0, 1, t1, t1);
+    s2.subSlices = [subs2];
+    g.push(s1);
+    g.push(s2);
+
     g.updateBounds();
 
     var track = new AsyncSliceGroupTrack(new tracing.TimelineViewport());
@@ -63,12 +75,13 @@ tvcm.unittest.testSuite(function() { // @suppress longLineCheck
 
     var subRows = track.subRows;
 
-    assertEquals(2, subRows.length);
+    assertEquals(4, subRows.length);
     assertEquals(1, subRows[0].length);
-    assertEquals(g.slices[0].subSlices[0], subRows[0][0]);
-
     assertEquals(1, subRows[1].length);
-    assertEquals(g.slices[1].subSlices[0], subRows[1][0]);
+    assertEquals(1, subRows[2].length);
+    assertEquals(1, subRows[3].length);
+    assertEquals(g.slices[0].subSlices[0], subRows[1][0]);
+    assertEquals(g.slices[1].subSlices[0], subRows[3][0]);
   });
 
   test('rebuildSubRows_threePartlyOverlappingSlices', function() {
@@ -86,11 +99,13 @@ tvcm.unittest.testSuite(function() { // @suppress longLineCheck
 
     assertEquals(2, subRows.length);
     assertEquals(2, subRows[0].length);
-    assertEquals(g.slices[0].subSlices[0], subRows[0][0]);
-    assertEquals(g.slices[2].subSlices[0], subRows[0][1]);
-
+    assertEquals(g.slices[0], subRows[0][0]);
+    assertEquals(g.slices[2], subRows[0][1]);
+    assertEquals(g.slices[1], subRows[1][0]);
     assertEquals(1, subRows[1].length);
-    assertEquals(g.slices[1].subSlices[0], subRows[1][0]);
+    assertUndefined(g.slices[0].subSlices);
+    assertUndefined(g.slices[1].subSlices);
+    assertUndefined(g.slices[2].subSlices);
   });
 
   test('rebuildSubRows_threeOverlappingSlices', function() {
@@ -110,11 +125,81 @@ tvcm.unittest.testSuite(function() { // @suppress longLineCheck
     var subRows = track.subRows;
     assertEquals(2, subRows.length);
     assertEquals(2, subRows[0].length);
-    assertEquals(g.slices[0].subSlices[0], subRows[0][0]);
-    assertEquals(g.slices[2].subSlices[0], subRows[0][1]);
     assertEquals(1, subRows[1].length);
-    assertEquals(g.slices[1].subSlices[0], subRows[1][0]);
+    assertEquals(g.slices[0], subRows[0][0]);
+    assertEquals(g.slices[1], subRows[1][0]);
+    assertEquals(g.slices[2], subRows[0][1]);
+  });
+
+  // Tests that no slices and their sub slices overlap.
+  test('rebuildSubRows_NonOverlappingSubSlices', function() {
+    var model = new tracing.TraceModel();
+    var p1 = new Process(model, 1);
+    var t1 = new Thread(p1, 1);
+    var g = new AsyncSliceGroup(t1);
+
+    var slice1 = newAsyncSlice(0, 5, t1, t1);
+    var slice1Child = newAsyncSlice(1, 2, t1, t1);
+    slice1.subSlices = [slice1Child];
+    var slice2 = newAsyncSlice(3, 5, t1, t1);
+    var slice3 = newAsyncSlice(5, 4, t1, t1);
+    var slice3Child = newAsyncSlice(6, 2, t1, t1);
+    slice3.subSlices = [slice3Child];
+    g.push(slice1);
+    g.push(slice2);
+    g.push(slice3);
+    g.updateBounds();
+
+    var track = new AsyncSliceGroupTrack(new tracing.TimelineViewport());
+    track.group = g;
+
+    var subRows = track.subRows;
+    // Checks each sub row to see that we don't have any overlapping slices.
+    for (var i = 0; i < subRows.length; i++) {
+      var row = subRows[i];
+      for (var j = 0; j < row.length; j++) {
+        for (var k = j + 1; k < row.length; k++) {
+          assertTrue(row[j].end <= row[k].start);
+        }
+      }
+    }
+  });
+
+  test('rebuildSubRows_NonOverlappingSubSlicesThreeNestedLevels', function() {
+    var model = new tracing.TraceModel();
+    var p1 = new Process(model, 1);
+    var t1 = new Thread(p1, 1);
+    var g = new AsyncSliceGroup(t1);
+
+    var slice1 = newAsyncSlice(0, 4, t1, t1);
+    var slice1Child = newAsyncSlice(1, 2, t1, t1);
+    slice1.subSlices = [slice1Child];
+    var slice2 = newAsyncSlice(2, 7, t1, t1);
+    var slice3 = newAsyncSlice(5, 5, t1, t1);
+    var slice3Child = newAsyncSlice(6, 3, t1, t1);
+    var slice3Child2 = newAsyncSlice(7, 1, t1, t1);
+    slice3.subSlices = [slice3Child];
+    slice3Child.subSlices = [slice3Child2];
+    g.push(slice1);
+    g.push(slice2);
+    g.push(slice3);
+    g.updateBounds();
+
+    var track = new AsyncSliceGroupTrack(new tracing.TimelineViewport());
+    track.group = g;
+
+    var subRows = track.subRows;
+    // Checks each sub row to see that we don't have any overlapping slices.
+    for (var i = 0; i < subRows.length; i++) {
+      var row = subRows[i];
+      for (var j = 0; j < row.length; j++) {
+        for (var k = j + 1; k < row.length; k++) {
+          assertTrue(row[j].end <= row[k].start);
+        }
+      }
+    }
   });
+
 });
 </script>