OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 cr.define('tracing', function() { |
| 5 var dataSets = [ |
| 6 { |
| 7 name: 'big_trace', |
| 8 events_url: './tests/big_trace.json' |
| 9 }, |
| 10 { |
| 11 name: 'trivial_trace', |
| 12 events: [ |
| 13 {'name':'a','args':{},'pid':52,'ts':9524,'cat':'foo','tid':53,'ph':'B'}, |
| 14 {'name':'a','args':{},'pid':52,'ts':9560,'cat':'foo','tid':53,'ph':'E'}, |
| 15 {'name':'b','args':{},'pid':52,'ts':9629,'cat':'foo','tid':53,'ph':'B'}, |
| 16 {'name':'b','args':{},'pid':52,'ts':9631,'cat':'foo','tid':53,'ph':'E'} |
| 17 ] |
| 18 }, |
| 19 { |
| 20 name: 'simple_trace', |
| 21 events: [ |
| 22 {'cat':'PERF','pid':22630,'tid':22630,'ts':826,'ph':'B', |
| 23 'name':'A long name that doesn't fit but is exceedingly informative', |
| 24 'args':{}}, |
| 25 {'cat':'PERF','pid':22630,'tid':22630,'ts':827,'ph':'B', |
| 26 'name':'Asub with a name that won't fit','args':{}}, |
| 27 {'cat':'PERF','pid':22630,'tid':22630,'ts':828,'ph':'E', |
| 28 'name':'Asub','args':{}}, |
| 29 {'cat':'PERF','pid':22630,'tid':22630,'ts':829,'ph':'B', |
| 30 'name':'Asub','args':{}}, |
| 31 {'cat':'PERF','pid':22630,'tid':22630,'ts':832,'ph':'E', |
| 32 'name':'Asub','args':{}}, |
| 33 {'cat':'PERF','pid':22630,'tid':22630,'ts':833,'ph':'E', |
| 34 'name':'','args':{}}, |
| 35 |
| 36 {'cat':'PERF','pid':22630,'tid':22630,'ts':835,'ph':'I', |
| 37 'name':'I1','args':{}}, |
| 38 {'cat':'PERF','pid':22630,'tid':22630,'ts':837,'ph':'I', |
| 39 'name':'I2','args':{}}, |
| 40 |
| 41 {'cat':'PERF','pid':22630,'tid':22630,'ts':840,'ph':'B', |
| 42 'name':'A not as long a name','args':{}}, |
| 43 {'cat':'PERF','pid':22630,'tid':22630,'ts':848,'ph':'E', |
| 44 'name':'A not as long a name','args':{}}, |
| 45 |
| 46 {'cat':'PERF','pid':22630,'tid':22630,'ts':850,'ph':'B', |
| 47 'name':'B','args':{}}, |
| 48 {'cat':'PERF','pid':22630,'tid':22630,'ts':854,'ph':'E', |
| 49 'name':'B','args':{}}, |
| 50 |
| 51 {'cat':'PERF','pid':22630,'tid':22631,'ts':827,'ph':'B', |
| 52 'name':'A','args':{}}, |
| 53 {'cat':'PERF','pid':22630,'tid':22631,'ts':835,'ph':'I', |
| 54 'name':'Immediate Three','args':{}}, |
| 55 {'cat':'PERF','pid':22630,'tid':22631,'ts':845,'ph':'I', |
| 56 'name':'I4','args':{}}, |
| 57 {'cat':'PERF','pid':22630,'tid':22631,'ts':854,'ph':'E', |
| 58 'name':'A','args':{}}, |
| 59 |
| 60 {'cat':'__metadata','pid':22630,'tid':22630,'ts':0,'ph':'M', |
| 61 'name':'thread_name','args':{'name': 'threadA'}}, |
| 62 {'cat':'__metadata','pid':22630,'tid':22631,'ts':0,'ph':'M', |
| 63 'name':'thread_name','args':{'name': 'threadB'}}, |
| 64 {'cat':'__metadata','pid':22630,'tid':22632,'ts':0,'ph':'M', |
| 65 'name':'thread_name','args':{'name': 'threadC'}} |
| 66 ] |
| 67 }, |
| 68 { |
| 69 name: 'nonnested_trace', |
| 70 events: [ |
| 71 {'cat':'PERF','pid':22630,'tid':22630,'ts':826,'ph':'B', |
| 72 'name':'A','args':{}}, |
| 73 {'cat':'PERF','pid':22630,'tid':22630,'ts':827,'ph':'B', |
| 74 'name':'Asub','args':{}}, |
| 75 {'cat':'PERF','pid':22630,'tid':22630,'ts':829,'ph':'B', |
| 76 'name':'NonNest','args':{'id':'1','ui-nest':'0'}}, |
| 77 {'cat':'PERF','pid':22630,'tid':22630,'ts':830,'ph':'B', |
| 78 'name':'NonNest','args':{'id':'2','ui-nest':'0'}}, |
| 79 {'cat':'PERF','pid':22630,'tid':22630,'ts':831,'ph':'E', |
| 80 'name':'Asub','args':{}}, |
| 81 {'cat':'PERF','pid':22630,'tid':22630,'ts':832,'ph':'E', |
| 82 'name':'NonNest','args':{'id':'1','ui-nest':'0'}}, |
| 83 {'cat':'PERF','pid':22630,'tid':22630,'ts':833,'ph':'E', |
| 84 'name':'NonNest','args':{'id':'2','ui-nest':'0'}}, |
| 85 {'cat':'PERF','pid':22630,'tid':22630,'ts':834,'ph':'E', |
| 86 'name':'A','args':{}}, |
| 87 |
| 88 {'cat':'PERF','pid':22630,'tid':22631,'ts':827,'ph':'B', |
| 89 'name':'A','args':{}}, |
| 90 {'cat':'PERF','pid':22630,'tid':22631,'ts':854,'ph':'E', |
| 91 'name':'A','args':{}} |
| 92 ] |
| 93 }, |
| 94 { |
| 95 name: 'tall_trace', |
| 96 events: [ |
| 97 {'cat':'X','pid':30,'tid':30,'ts':826,'ph':'B','name':'A','args':{}}, |
| 98 {'cat':'X','pid':30,'tid':30,'ts':827,'ph':'B','name':'Asub','args':{}}, |
| 99 {'cat':'X','pid':30,'tid':30,'ts':828,'ph':'E','name':'Asub','args':{}}, |
| 100 {'cat':'X','pid':30,'tid':30,'ts':829,'ph':'B','name':'Asub','args':{}}, |
| 101 {'cat':'X','pid':30,'tid':30,'ts':832,'ph':'E','name':'Asub','args':{}}, |
| 102 {'cat':'X','pid':30,'tid':30,'ts':833,'ph':'E','name':'','args':{}}, |
| 103 |
| 104 {'cat':'X','pid':30,'tid':31,'ts':840,'ph':'B','name':'A','args':{}}, |
| 105 {'cat':'X','pid':30,'tid':31,'ts':848,'ph':'E','name':'A','args':{}}, |
| 106 |
| 107 {'cat':'X','pid':30,'tid':32,'ts':840,'ph':'B','name':'A','args':{}}, |
| 108 {'cat':'X','pid':30,'tid':32,'ts':848,'ph':'E','name':'A','args':{}}, |
| 109 |
| 110 {'cat':'X','pid':30,'tid':33,'ts':840,'ph':'B','name':'A','args':{}}, |
| 111 {'cat':'X','pid':30,'tid':33,'ts':848,'ph':'E','name':'A','args':{}}, |
| 112 |
| 113 {'cat':'X','pid':30,'tid':34,'ts':840,'ph':'B','name':'A','args':{}}, |
| 114 {'cat':'X','pid':30,'tid':34,'ts':848,'ph':'E','name':'A','args':{}}, |
| 115 |
| 116 {'cat':'X','pid':30,'tid':35,'ts':840,'ph':'B','name':'A','args':{}}, |
| 117 {'cat':'X','pid':30,'tid':35,'ts':848,'ph':'E','name':'A','args':{}}, |
| 118 |
| 119 {'cat':'X','pid':30,'tid':36,'ts':840,'ph':'B','name':'A','args':{}}, |
| 120 {'cat':'X','pid':30,'tid':36,'ts':848,'ph':'E','name':'A','args':{}}, |
| 121 |
| 122 {'cat':'X','pid':30,'tid':37,'ts':840,'ph':'B','name':'A','args':{}}, |
| 123 {'cat':'X','pid':30,'tid':37,'ts':848,'ph':'E','name':'A','args':{}}, |
| 124 |
| 125 {'cat':'X','pid':30,'tid':38,'ts':840,'ph':'B','name':'A','args':{}}, |
| 126 {'cat':'X','pid':30,'tid':38,'ts':848,'ph':'E','name':'A','args':{}}, |
| 127 |
| 128 {'cat':'X','pid':30,'tid':39,'ts':840,'ph':'B','name':'A','args':{}}, |
| 129 {'cat':'X','pid':30,'tid':39,'ts':848,'ph':'E','name':'A','args':{}}, |
| 130 |
| 131 {'cat':'X','pid':30,'tid':10,'ts':840,'ph':'B','name':'A','args':{}}, |
| 132 {'cat':'X','pid':30,'tid':10,'ts':848,'ph':'E','name':'A','args':{}}, |
| 133 |
| 134 {'cat':'X','pid':31,'tid':11,'ts':840,'ph':'B','name':'A','args':{}}, |
| 135 {'cat':'X','pid':31,'tid':11,'ts':848,'ph':'E','name':'A','args':{}}, |
| 136 |
| 137 {'cat':'X','pid':30,'tid':12,'ts':840,'ph':'B','name':'A','args':{}}, |
| 138 {'cat':'X','pid':30,'tid':12,'ts':848,'ph':'E','name':'A','args':{}}, |
| 139 |
| 140 {'cat':'X','pid':30,'tid':13,'ts':840,'ph':'B','name':'A','args':{}}, |
| 141 {'cat':'X','pid':30,'tid':13,'ts':848,'ph':'E','name':'A','args':{}}, |
| 142 |
| 143 {'cat':'X','pid':30,'tid':14,'ts':840,'ph':'B','name':'A','args':{}}, |
| 144 {'cat':'X','pid':30,'tid':14,'ts':848,'ph':'E','name':'A','args':{}}, |
| 145 |
| 146 {'cat':'X','pid':30,'tid':15,'ts':840,'ph':'B','name':'A','args':{}}, |
| 147 {'cat':'X','pid':30,'tid':15,'ts':848,'ph':'E','name':'A','args':{}}, |
| 148 |
| 149 {'cat':'__metadata','pid':30,'tid':14,'ts':0,'ph':'M', |
| 150 'name':'thread_name','args':{'name': 'threadB'}}, |
| 151 {'cat':'__metadata','pid':30,'tid':15,'ts':0,'ph':'M', |
| 152 'name':'thread_name','args':{'name': 'threadA'}} |
| 153 ] |
| 154 }, |
| 155 { |
| 156 name: 'huge_trace', |
| 157 events_url: './tests/huge_trace.json' |
| 158 } |
| 159 ]; |
| 160 |
| 161 // Create UI for controlling the test harness |
| 162 var selectEl = document.createElement('select'); |
| 163 for (var i = 0; i < dataSets.length; ++i) { |
| 164 var optionEl = document.createElement('option'); |
| 165 optionEl.textContent = dataSets[i].name; |
| 166 optionEl.dataSet = dataSets[i]; |
| 167 selectEl.appendChild(optionEl); |
| 168 } |
| 169 selectEl.addEventListener('change', function() { |
| 170 tracingController.beginTracing(); |
| 171 }); |
| 172 selectEl.addEventListener('keydown', function() { |
| 173 window.setTimeout(function() { |
| 174 tracingController.beginTracing(); |
| 175 }, 0); |
| 176 }); |
| 177 |
| 178 var controlEl = document.createElement('div'); |
| 179 var textEl = document.createElement('span'); |
| 180 textEl.textContent = 'Trace:'; |
| 181 controlEl.appendChild(textEl); |
| 182 controlEl.appendChild(selectEl); |
| 183 |
| 184 document.querySelector('#debug-div').appendChild(controlEl, |
| 185 document.body.firstChild); |
| 186 |
| 187 return { |
| 188 tracingControllerTestHarness : { |
| 189 beginTracing: function() { |
| 190 var dataSet = dataSets[selectEl.selectedIndex]; |
| 191 if (dataSet.events) { |
| 192 window.setTimeout(function() { |
| 193 tracingController.onTraceDataCollected(dataSet.events); |
| 194 tracingController.endTracing(); |
| 195 window.setTimeout(function() { |
| 196 tracingController.onEndTracingComplete(); |
| 197 },0); |
| 198 }, 0); |
| 199 } else { |
| 200 var req = new XMLHttpRequest(); |
| 201 req.open('GET', './tracing/' + dataSet.events_url, true); |
| 202 req.onreadystatechange = function (aEvt) { |
| 203 if (req.readyState == 4) { |
| 204 tracingController.endTracing(); |
| 205 window.setTimeout(function() { |
| 206 if(req.status == 200) { |
| 207 var resp = JSON.parse(req.responseText); |
| 208 if (resp.traceEvents) |
| 209 tracingController.onTraceDataCollected(resp.traceEvents); |
| 210 else |
| 211 tracingController.onTraceDataCollected(resp); |
| 212 } else { |
| 213 console.log('collection failed.'); |
| 214 } |
| 215 tracingController.onEndTracingComplete(); |
| 216 }, 0); |
| 217 } |
| 218 }; |
| 219 req.send(null); |
| 220 } |
| 221 }, |
| 222 |
| 223 endTracing: function() { |
| 224 } |
| 225 } |
| 226 }; |
| 227 }); |
OLD | NEW |