| <!DOCTYPE html> |
| <!-- |
| Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| --> |
| |
| <link rel="import" href="/extras/about_tracing/mock_tracing_controller_client.html"> |
| <link rel="import" href="/extras/about_tracing/record_and_capture_controller.html"> |
| |
| <script> |
| 'use strict'; |
| |
| tv.b.unittest.testSuite(function() { // @suppress longLineCheck |
| var testData = [ |
| {name: 'a', args: {}, pid: 52, ts: 15000, cat: 'foo', tid: 53, ph: 'B'}, |
| {name: 'a', args: {}, pid: 52, ts: 19000, cat: 'foo', tid: 53, ph: 'E'}, |
| {name: 'b', args: {}, pid: 52, ts: 32000, cat: 'foo', tid: 53, ph: 'B'}, |
| {name: 'b', args: {}, pid: 52, ts: 54000, cat: 'foo', tid: 53, ph: 'E'} |
| ]; |
| |
| test('fullRecording', function() { |
| return new Promise(function(resolve, reject) { |
| var mock = new tv.e.about_tracing.MockTracingControllerClient(); |
| mock.expectRequest('endRecording', function() { |
| return ''; |
| }); |
| mock.expectRequest('getCategories', function() { |
| setTimeout(function() { |
| recordingPromise.selectionDlg.clickRecordButton(); |
| }, 20); |
| return JSON.stringify(['a', 'b', 'c']); |
| }); |
| mock.expectRequest('beginRecording', function(recordingOptions) { |
| assertTrue(typeof recordingOptions.categoryFilter === 'string'); |
| assertTrue(typeof recordingOptions.useSystemTracing === 'boolean'); |
| assertTrue(typeof recordingOptions.useSampling === 'boolean'); |
| assertTrue(typeof recordingOptions.useContinuousTracing === 'boolean'); |
| setTimeout(function() { |
| recordingPromise.progressDlg.clickStopButton(); |
| }, 10); |
| return ''; |
| }); |
| mock.expectRequest('endRecording', function(data) { |
| return JSON.stringify(testData); |
| }); |
| |
| var recordingPromise = tv.e.about_tracing.beginRecording(mock); |
| |
| return recordingPromise.then( |
| function(data) { |
| mock.assertAllRequestsHandled(); |
| var testDataString = JSON.stringify(testData); |
| assertEquals(testDataString, data); |
| resolve(); |
| }, |
| function(error) { |
| reject('This should never be reached'); |
| }); |
| }); |
| }); |
| |
| test('monitoring', function() { |
| return new Promise(function(resolve, reject) { |
| var mock = new tv.e.about_tracing.MockTracingControllerClient(); |
| |
| mock.expectRequest('beginMonitoring', function(monitoringOptions) { |
| assertTrue(typeof monitoringOptions.categoryFilter === 'string'); |
| assertTrue(typeof monitoringOptions.useSystemTracing === 'boolean'); |
| assertTrue(typeof monitoringOptions.useSampling === 'boolean'); |
| assertTrue(typeof monitoringOptions.useContinuousTracing === 'boolean'); |
| setTimeout(function() { |
| var capturePromise = tv.e.about_tracing.captureMonitoring(mock); |
| capturePromise.then( |
| function(data) { |
| var testDataString = JSON.stringify(testData); |
| assertEquals(testDataString, data); |
| }, |
| function(error) { |
| reject(); |
| }); |
| }, 10); |
| return ''; |
| }); |
| |
| mock.expectRequest('captureMonitoring', function(data) { |
| setTimeout(function() { |
| var endPromise = tv.e.about_tracing.endMonitoring(mock); |
| endPromise.then( |
| function(data) { |
| mock.assertAllRequestsHandled(); |
| resolve(); |
| }, |
| function(error) { |
| reject(); |
| }); |
| }, 10); |
| return JSON.stringify(testData); |
| }); |
| |
| mock.expectRequest('endMonitoring', function(data) { |
| }); |
| |
| tv.e.about_tracing.beginMonitoring(mock); |
| }); |
| }); |
| }); |
| </script> |
| |