1 // Copyright (c) 2013 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.
7 tvcm.require('about_tracing.mock_request_handler');
8 tvcm.require('about_tracing.tracing_ui_client');
10 tvcm.unittest.testSuite('about_tracing.tracing_ui_client_test', function() {
12 {name: 'a', args: {}, pid: 52, ts: 15000, cat: 'foo', tid: 53, ph: 'B'},
13 {name: 'a', args: {}, pid: 52, ts: 19000, cat: 'foo', tid: 53, ph: 'E'},
14 {name: 'b', args: {}, pid: 52, ts: 32000, cat: 'foo', tid: 53, ph: 'B'},
15 {name: 'b', args: {}, pid: 52, ts: 54000, cat: 'foo', tid: 53, ph: 'E'}
18 test('fullRecording', function() {
19 return new Promise(function(r) {
20 var mock = new about_tracing.MockRequestHandler();
21 mock.expectRequest('GET', '/json/categories', function() {
22 setTimeout(function() {
23 recordingPromise.selectionDlg.clickRecordButton();
25 return JSON.stringify(['a', 'b', 'c']);
27 mock.expectRequest('GET', '/json/begin_recording', function(data, path) {
28 var optionsB64 = path.match(/\/json\/begin_recording\?(.+)/)[1];
29 var recordingOptions = JSON.parse(atob(optionsB64));
30 assertTrue(typeof recordingOptions.categoryFilter === 'string');
31 assertTrue(typeof recordingOptions.useSystemTracing === 'boolean');
32 assertTrue(typeof recordingOptions.useSampling === 'boolean');
33 assertTrue(typeof recordingOptions.useContinuousTracing === 'boolean');
34 setTimeout(function() {
35 recordingPromise.progressDlg.clickStopButton();
39 mock.expectRequest('GET', '/json/end_recording', function(data) {
40 return JSON.stringify(testData);
43 var recordingPromise = about_tracing.beginRecording(
44 mock.tracingRequest.bind(mock));
46 return recordingPromise.then(
48 mock.assertAllRequestsHandled();
49 var testDataString = JSON.stringify(testData);
50 assertEquals(testDataString, data);
54 r.reject('This should never be reached');
59 test('monitoring', function() {
60 return new Promise(function(r) {
61 var mock = new about_tracing.MockRequestHandler();
62 var tracingRequest = mock.tracingRequest.bind(mock);
64 mock.expectRequest('GET', '/json/begin_monitoring', function(data, path) {
65 var optionsB64 = path.match(/\/json\/begin_monitoring\?(.+)/)[1];
66 var monitoringOptions = JSON.parse(atob(optionsB64));
67 assertTrue(typeof monitoringOptions.categoryFilter === 'string');
68 assertTrue(typeof monitoringOptions.useSystemTracing === 'boolean');
69 assertTrue(typeof monitoringOptions.useSampling === 'boolean');
70 assertTrue(typeof monitoringOptions.useContinuousTracing === 'boolean');
71 setTimeout(function() {
72 var capturePromise = about_tracing.captureMonitoring(tracingRequest);
75 var testDataString = JSON.stringify(testData);
76 assertEquals(testDataString, data);
85 mock.expectRequest('GET', '/json/capture_monitoring', function(data) {
86 setTimeout(function() {
87 var endPromise = about_tracing.endMonitoring(tracingRequest);
90 mock.assertAllRequestsHandled();
97 return JSON.stringify(testData);
100 mock.expectRequest('GET', '/json/end_monitoring', function(data) {
103 about_tracing.beginMonitoring(tracingRequest);