inspector_tracing_controller_client_test.html revision 4a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724
1<!DOCTYPE html>
2<!--
3Copyright (c) 2013 The Chromium Authors. All rights reserved.
4Use of this source code is governed by a BSD-style license that can be
5found in the LICENSE file.
6-->
7
8<link rel="import"
9      href="/tracing/ui/extras/about_tracing/inspector_tracing_controller_client.html">
10
11<script>
12'use strict';
13
14tr.b.unittest.testSuite(function() { // @suppress longLineCheck
15  test('beginRecording_sendCategoriesAndOptions', function() {
16    var controller =
17        new tr.ui.e.about_tracing.InspectorTracingControllerClient();
18    controller.conn_ = new (function() {
19      this.req = function(method, params) {
20        var msg = JSON.stringify({
21          id: 1,
22          method: method,
23          params: params
24        });
25        return new (function() {
26          this.msg = msg;
27          this.then = function(m1, m2) {
28            return this;
29          };
30        })();
31      };
32      this.setNotificationListener = function(method, listener) {
33      };
34    })();
35
36    var recordingOptions = {
37      categoryFilter: JSON.stringify(['a', 'b', 'c']),
38      useSystemTracing: false,
39      tracingRecordMode: 'test-mode',
40      useSampling: true
41    };
42
43    var result = JSON.parse(controller.beginRecording(recordingOptions).msg);
44    assert.equal(result.params.categories, JSON.stringify(['a', 'b', 'c']));
45    var options = result.params.options.split(',');
46    var tracingRecordTestMode = false;
47    var sampleFlag = false;
48    for (var s in options) {
49      if (options[s] === 'test-mode') tracingRecordTestMode = true;
50      else if (options[s] === 'enable-sampling') sampleFlag = true;
51      else assert.equal(options[s], '');
52    }
53    assert.isTrue(tracingRecordTestMode);
54    assert.isTrue(sampleFlag);
55  });
56
57  test('oldFormat', function() {
58    var chunks = [];
59    tr.ui.e.about_tracing.appendTraceChunksTo(chunks, '"{ "method": "Tracing.dataCollected", "params": { "value": [ {"cat":"__metadata","pid":28871,"tid":0,"ts":0,"ph":"M","name":"num_cpus","args":{"number":4}},{"cat":"__metadata","pid":28871,"tid":28911,"ts":0,"ph":"M","name":"process_sort_index","args":{"sort_index":-5}},{"cat":"__metadata","pid":28871,"tid":28911,"ts":0,"ph":"M","name":"process_name","args":{"name":"Renderer"}},{"cat":"__metadata","pid":28871,"tid":28911,"ts":0,"ph":"M","name":"process_labels","args":{"labels":"JS Bin"}},{"cat":"__metadata","pid":28871,"tid":28908,"ts":0,"ph":"M","name":"thread_sort_index","args":{"sort_index":-1}},{"cat":"__metadata","pid":28871,"tid":28917,"ts":0,"ph":"M","name":"thread_name","args":{"name":"Compositor"}},{"cat":"__metadata","pid":28871,"tid":28911,"ts":0,"ph":"M","name":"thread_name","args":{"name":"Chrome_ChildIOThread"}},{"cat":"__metadata","pid":28871,"tid":28919,"ts":0,"ph":"M","name":"thread_name","args":{"name":"CompositorRasterWorker1/28919"}},{"cat":"__metadata","pid":28871,"tid":28908,"ts":0,"ph":"M","name":"thread_name","args":{"name":"CrRendererMain"}},{"cat":"ipc,toplevel","pid":28871,"tid":28911,"ts":22000084746,"ph":"X","name":"ChannelReader::DispatchInputData","args":{"class":64,"line":25},"tdur":0,"tts":1853064},{"cat":"__metadata","pid":28871,"tid":28911,"ts":0,"ph":"M","name":"overhead","args":{"average_overhead":0.015}} ] } }"'); // @suppress longLineCheck
60    assert.equal(chunks.length, 1);
61    JSON.parse('[' + chunks.join('') + ']');
62  });
63
64  test('newFormat', function() {
65    var chunks = [];
66    tr.ui.e.about_tracing.appendTraceChunksTo(chunks, '"{ "method": "Tracing.dataCollected", "params": { "value": [{"cat":"__metadata","pid":28871,"tid":0,"ts":0,"ph":"M","name":"num_cpus","args":{"number":4}},{"cat":"__metadata","pid":28871,"tid":28911,"ts":0,"ph":"M","name":"process_sort_index","args":{"sort_index":-5}},{"cat":"__metadata","pid":28871,"tid":28911,"ts":0,"ph":"M","name":"process_name","args":{"name":"Renderer"}},{"cat":"__metadata","pid":28871,"tid":28911,"ts":0,"ph":"M","name":"process_labels","args":{"labels":"JS Bin"}},{"cat":"__metadata","pid":28871,"tid":28908,"ts":0,"ph":"M","name":"thread_sort_index","args":{"sort_index":-1}},{"cat":"__metadata","pid":28871,"tid":28917,"ts":0,"ph":"M","name":"thread_name","args":{"name":"Compositor"}},{"cat":"__metadata","pid":28871,"tid":28911,"ts":0,"ph":"M","name":"thread_name","args":{"name":"Chrome_ChildIOThread"}},{"cat":"__metadata","pid":28871,"tid":28919,"ts":0,"ph":"M","name":"thread_name","args":{"name":"CompositorRasterWorker1/28919"}},{"cat":"__metadata","pid":28871,"tid":28908,"ts":0,"ph":"M","name":"thread_name","args":{"name":"CrRendererMain"}},{"cat":"ipc,toplevel","pid":28871,"tid":28911,"ts":22000084746,"ph":"X","name":"ChannelReader::DispatchInputData","args":{"class":64,"line":25},"tdur":0,"tts":1853064},{"cat":"__metadata","pid":28871,"tid":28911,"ts":0,"ph":"M","name":"overhead","args":{"average_overhead":0.015}}] } }"'); // @suppress longLineCheck
67    assert.equal(chunks.length, 1);
68    JSON.parse('[' + chunks.join('') + ']');
69  });
70
71  test('stringAndObjectPayload', function() {
72    var connection = new tr.ui.e.about_tracing.InspectorConnection();
73    connection.setNotificationListener('Tracing.dataCollected',
74        function(message) {
75          assert.typeOf(message, 'string');
76          JSON.parse(message);
77        }
78    );
79    connection.dispatchMessage_('{ "method": "Tracing.dataCollected", "params": { "value": [] } }'); // @suppress longLineCheck
80    connection.dispatchMessage_({'method': 'Tracing.dataCollected', 'params': {'value': [] } }); // @suppress longLineCheck
81  });
82});
83</script>
84