Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / src / about_tracing / tracing_ui_client_test.js
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.
4
5 'use strict';
6
7 tvcm.require('about_tracing.mock_request_handler');
8 tvcm.require('about_tracing.tracing_ui_client');
9
10 tvcm.unittest.testSuite('about_tracing.tracing_ui_client_test', function() {
11   var testData = [
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'}
16   ];
17
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();
24         }, 20);
25         return JSON.stringify(['a', 'b', 'c']);
26       });
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();
36         }, 10);
37         return '';
38       });
39       mock.expectRequest('GET', '/json/end_recording', function(data) {
40         return JSON.stringify(testData);
41       });
42
43       var recordingPromise = about_tracing.beginRecording(
44           mock.tracingRequest.bind(mock));
45
46       return recordingPromise.then(
47           function(data) {
48             mock.assertAllRequestsHandled();
49             var testDataString = JSON.stringify(testData);
50             assertEquals(testDataString, data);
51             r.resolve();
52           },
53           function(error) {
54             r.reject('This should never be reached');
55           });
56     });
57   });
58
59   test('monitoring', function() {
60     return new Promise(function(r) {
61       var mock = new about_tracing.MockRequestHandler();
62       var tracingRequest = mock.tracingRequest.bind(mock);
63
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);
73           capturePromise.then(
74               function(data) {
75                 var testDataString = JSON.stringify(testData);
76                 assertEquals(testDataString, data);
77               },
78               function(error) {
79                 r.reject();
80               });
81         }, 10);
82         return '';
83       });
84
85       mock.expectRequest('GET', '/json/capture_monitoring', function(data) {
86         setTimeout(function() {
87           var endPromise = about_tracing.endMonitoring(tracingRequest);
88           endPromise.then(
89               function(data) {
90                 mock.assertAllRequestsHandled();
91                 r.resolve();
92               },
93               function(error) {
94                 r.reject();
95               });
96         }, 10);
97         return JSON.stringify(testData);
98       });
99
100       mock.expectRequest('GET', '/json/end_monitoring', function(data) {
101       });
102
103       about_tracing.beginMonitoring(tracingRequest);
104     });
105   });
106 });