Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(713)

Side by Side Diff: content/browser/tracing/tracing_controller_browsertest.cc

Issue 66893003: Allow TracingController to output trace data to specified file (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed unnecessary include Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/file_util.h" 5 #include "base/file_util.h"
6 #include "base/run_loop.h" 6 #include "base/run_loop.h"
7 #include "content/browser/tracing/tracing_controller_impl.h" 7 #include "content/browser/tracing/tracing_controller_impl.h"
8 #include "content/public/test/browser_test_utils.h" 8 #include "content/public/test/browser_test_utils.h"
9 #include "content/shell/browser/shell.h" 9 #include "content/shell/browser/shell.h"
10 #include "content/test/content_browser_test.h" 10 #include "content/test/content_browser_test.h"
(...skipping 29 matching lines...) Expand all
40 EXPECT_TRUE(categories.size() > 0); 40 EXPECT_TRUE(categories.size() > 0);
41 quit_callback.Run(); 41 quit_callback.Run();
42 } 42 }
43 43
44 void EnableRecordingDoneCallbackTest(base::Closure quit_callback) { 44 void EnableRecordingDoneCallbackTest(base::Closure quit_callback) {
45 enable_recording_done_callback_count_++; 45 enable_recording_done_callback_count_++;
46 quit_callback.Run(); 46 quit_callback.Run();
47 } 47 }
48 48
49 void DisableRecordingDoneCallbackTest(base::Closure quit_callback, 49 void DisableRecordingDoneCallbackTest(base::Closure quit_callback,
50 scoped_ptr<base::FilePath> file_path) { 50 const base::FilePath& file_path) {
51 disable_recording_done_callback_count_++; 51 disable_recording_done_callback_count_++;
52 EXPECT_TRUE(PathExists(*file_path)); 52 EXPECT_TRUE(PathExists(file_path));
53 int64 file_size; 53 int64 file_size;
54 file_util::GetFileSize(*file_path, &file_size); 54 file_util::GetFileSize(file_path, &file_size);
55 EXPECT_TRUE(file_size > 0); 55 EXPECT_TRUE(file_size > 0);
56 quit_callback.Run(); 56 quit_callback.Run();
57 last_actual_recording_file_path_ = file_path;
57 } 58 }
58 59
59 void EnableMonitoringDoneCallbackTest(base::Closure quit_callback) { 60 void EnableMonitoringDoneCallbackTest(base::Closure quit_callback) {
60 enable_monitoring_done_callback_count_++; 61 enable_monitoring_done_callback_count_++;
61 quit_callback.Run(); 62 quit_callback.Run();
62 } 63 }
63 64
64 void DisableMonitoringDoneCallbackTest(base::Closure quit_callback) { 65 void DisableMonitoringDoneCallbackTest(base::Closure quit_callback) {
65 disable_monitoring_done_callback_count_++; 66 disable_monitoring_done_callback_count_++;
66 quit_callback.Run(); 67 quit_callback.Run();
67 } 68 }
68 69
69 void CaptureMonitoringSnapshotDoneCallbackTest( 70 void CaptureMonitoringSnapshotDoneCallbackTest(
70 base::Closure quit_callback, scoped_ptr<base::FilePath> file_path) { 71 base::Closure quit_callback, const base::FilePath& file_path) {
71 capture_monitoring_snapshot_done_callback_count_++; 72 capture_monitoring_snapshot_done_callback_count_++;
72 EXPECT_TRUE(PathExists(*file_path)); 73 EXPECT_TRUE(PathExists(file_path));
73 int64 file_size; 74 int64 file_size;
74 file_util::GetFileSize(*file_path, &file_size); 75 file_util::GetFileSize(file_path, &file_size);
75 EXPECT_TRUE(file_size > 0); 76 EXPECT_TRUE(file_size > 0);
76 quit_callback.Run(); 77 quit_callback.Run();
78 last_actual_monitoring_file_path_ = file_path;
77 } 79 }
78 80
79 int get_categories_done_callback_count() const { 81 int get_categories_done_callback_count() const {
80 return get_categories_done_callback_count_; 82 return get_categories_done_callback_count_;
81 } 83 }
82 84
83 int enable_recording_done_callback_count() const { 85 int enable_recording_done_callback_count() const {
84 return enable_recording_done_callback_count_; 86 return enable_recording_done_callback_count_;
85 } 87 }
86 88
87 int disable_recording_done_callback_count() const { 89 int disable_recording_done_callback_count() const {
88 return disable_recording_done_callback_count_; 90 return disable_recording_done_callback_count_;
89 } 91 }
90 92
91 int enable_monitoring_done_callback_count() const { 93 int enable_monitoring_done_callback_count() const {
92 return enable_monitoring_done_callback_count_; 94 return enable_monitoring_done_callback_count_;
93 } 95 }
94 96
95 int disable_monitoring_done_callback_count() const { 97 int disable_monitoring_done_callback_count() const {
96 return disable_monitoring_done_callback_count_; 98 return disable_monitoring_done_callback_count_;
97 } 99 }
98 100
99 int capture_monitoring_snapshot_done_callback_count() const { 101 int capture_monitoring_snapshot_done_callback_count() const {
100 return capture_monitoring_snapshot_done_callback_count_; 102 return capture_monitoring_snapshot_done_callback_count_;
101 } 103 }
102 104
105 base::FilePath last_actual_recording_file_path() const {
106 return last_actual_recording_file_path_;
107 }
108
109 base::FilePath last_actual_monitoring_file_path() const {
110 return last_actual_monitoring_file_path_;
111 }
112
113 void TestEnableAndDisableRecording(const base::FilePath& result_file_path) {
114 Navigate(shell());
115
116 TracingController* controller = TracingController::GetInstance();
117
118 {
119 base::RunLoop run_loop;
120 TracingController::EnableRecordingDoneCallback callback =
121 base::Bind(&TracingControllerTest::EnableRecordingDoneCallbackTest,
122 base::Unretained(this),
123 run_loop.QuitClosure());
124 bool result = controller->EnableRecording(
125 base::debug::CategoryFilter(""), TracingController::Options(),
126 callback);
127 EXPECT_TRUE(result);
128 run_loop.Run();
129 EXPECT_EQ(enable_recording_done_callback_count(), 1);
130 }
131
132 {
133 base::RunLoop run_loop;
134 TracingController::TracingFileResultCallback callback =
135 base::Bind(&TracingControllerTest::DisableRecordingDoneCallbackTest,
136 base::Unretained(this),
137 run_loop.QuitClosure());
138 bool result = controller->DisableRecording(result_file_path, callback);
139 EXPECT_TRUE(result);
140 run_loop.Run();
141 EXPECT_EQ(disable_recording_done_callback_count(), 1);
142 }
143 }
144
145 void TestEnableCaptureAndDisableMonitoring(
146 const base::FilePath& result_file_path) {
147 Navigate(shell());
148
149 TracingController* controller = TracingController::GetInstance();
150
151 {
152 base::RunLoop run_loop;
153 TracingController::EnableMonitoringDoneCallback callback =
154 base::Bind(&TracingControllerTest::EnableMonitoringDoneCallbackTest,
155 base::Unretained(this),
156 run_loop.QuitClosure());
157 bool result = controller->EnableMonitoring(
158 base::debug::CategoryFilter(""), TracingController::ENABLE_SAMPLING,
159 callback);
160 EXPECT_TRUE(result);
161 run_loop.Run();
162 EXPECT_EQ(enable_monitoring_done_callback_count(), 1);
163 }
164
165 {
166 base::RunLoop run_loop;
167 TracingController::TracingFileResultCallback callback =
168 base::Bind(&TracingControllerTest::
169 CaptureMonitoringSnapshotDoneCallbackTest,
170 base::Unretained(this),
171 run_loop.QuitClosure());
172 controller->CaptureMonitoringSnapshot(result_file_path, callback);
173 run_loop.Run();
174 EXPECT_EQ(capture_monitoring_snapshot_done_callback_count(), 1);
175 }
176
177 {
178 base::RunLoop run_loop;
179 TracingController::DisableMonitoringDoneCallback callback =
180 base::Bind(&TracingControllerTest::DisableMonitoringDoneCallbackTest,
181 base::Unretained(this),
182 run_loop.QuitClosure());
183 bool result = controller->DisableMonitoring(callback);
184 EXPECT_TRUE(result);
185 run_loop.Run();
186 EXPECT_EQ(disable_monitoring_done_callback_count(), 1);
187 }
188 }
189
103 private: 190 private:
104 int get_categories_done_callback_count_; 191 int get_categories_done_callback_count_;
105 int enable_recording_done_callback_count_; 192 int enable_recording_done_callback_count_;
106 int disable_recording_done_callback_count_; 193 int disable_recording_done_callback_count_;
107 int enable_monitoring_done_callback_count_; 194 int enable_monitoring_done_callback_count_;
108 int disable_monitoring_done_callback_count_; 195 int disable_monitoring_done_callback_count_;
109 int capture_monitoring_snapshot_done_callback_count_; 196 int capture_monitoring_snapshot_done_callback_count_;
197 base::FilePath last_actual_recording_file_path_;
198 base::FilePath last_actual_monitoring_file_path_;
110 }; 199 };
111 200
112 IN_PROC_BROWSER_TEST_F(TracingControllerTest, GetCategories) { 201 IN_PROC_BROWSER_TEST_F(TracingControllerTest, GetCategories) {
113 Navigate(shell()); 202 Navigate(shell());
114 203
115 TracingController* controller = TracingController::GetInstance(); 204 TracingController* controller = TracingController::GetInstance();
116 205
117 base::RunLoop run_loop; 206 base::RunLoop run_loop;
118 TracingController::GetCategoriesDoneCallback callback = 207 TracingController::GetCategoriesDoneCallback callback =
119 base::Bind(&TracingControllerTest::GetCategoriesDoneCallbackTest, 208 base::Bind(&TracingControllerTest::GetCategoriesDoneCallbackTest,
120 base::Unretained(this), 209 base::Unretained(this),
121 run_loop.QuitClosure()); 210 run_loop.QuitClosure());
122 controller->GetCategories(callback); 211 controller->GetCategories(callback);
123 run_loop.Run(); 212 run_loop.Run();
124 EXPECT_EQ(get_categories_done_callback_count(), 1); 213 EXPECT_EQ(get_categories_done_callback_count(), 1);
125 } 214 }
126 215
127 IN_PROC_BROWSER_TEST_F(TracingControllerTest, EnableAndDisableRecording) { 216 IN_PROC_BROWSER_TEST_F(TracingControllerTest, EnableAndDisableRecording) {
217 TestEnableAndDisableRecording(base::FilePath());
218 }
219
220 IN_PROC_BROWSER_TEST_F(TracingControllerTest,
221 EnableAndDisableRecordingWithFilePath) {
222 base::FilePath file_path;
223 file_util::CreateTemporaryFile(&file_path);
224 TestEnableAndDisableRecording(file_path);
225 EXPECT_EQ(file_path.value(), last_actual_recording_file_path().value());
226 }
227
228 IN_PROC_BROWSER_TEST_F(TracingControllerTest,
229 EnableAndDisableRecordingWithEmptyFileAndNullCallback) {
128 Navigate(shell()); 230 Navigate(shell());
129 231
130 TracingController* controller = TracingController::GetInstance(); 232 TracingController* controller = TracingController::GetInstance();
131 233 EXPECT_TRUE(controller->EnableRecording(
132 { 234 base::debug::CategoryFilter(""), TracingController::Options(),
133 base::RunLoop run_loop; 235 TracingController::EnableRecordingDoneCallback()));
134 TracingController::EnableRecordingDoneCallback callback = 236 EXPECT_TRUE(controller->DisableRecording(
135 base::Bind(&TracingControllerTest::EnableRecordingDoneCallbackTest, 237 base::FilePath(), TracingController::TracingFileResultCallback()));
136 base::Unretained(this), 238 base::RunLoop().RunUntilIdle();
137 run_loop.QuitClosure());
138 bool result = controller->EnableRecording(base::debug::CategoryFilter("*"),
139 TracingController::Options(), callback);
140 EXPECT_TRUE(result);
141 run_loop.Run();
142 EXPECT_EQ(enable_recording_done_callback_count(), 1);
143 }
144
145 {
146 base::RunLoop run_loop;
147 TracingController::TracingFileResultCallback callback =
148 base::Bind(&TracingControllerTest::DisableRecordingDoneCallbackTest,
149 base::Unretained(this),
150 run_loop.QuitClosure());
151 bool result = controller->DisableRecording(callback);
152 EXPECT_TRUE(result);
153 run_loop.Run();
154 EXPECT_EQ(disable_recording_done_callback_count(), 1);
155 }
156 } 239 }
157 240
158 IN_PROC_BROWSER_TEST_F(TracingControllerTest, 241 IN_PROC_BROWSER_TEST_F(TracingControllerTest,
159 EnableCaptureAndDisableMonitoring) { 242 EnableCaptureAndDisableMonitoring) {
243 TestEnableCaptureAndDisableMonitoring(base::FilePath());
244 }
245
246 IN_PROC_BROWSER_TEST_F(TracingControllerTest,
247 EnableCaptureAndDisableMonitoringWithFilePath) {
248 base::FilePath file_path;
249 file_util::CreateTemporaryFile(&file_path);
250 TestEnableCaptureAndDisableMonitoring(file_path);
251 EXPECT_EQ(file_path.value(), last_actual_monitoring_file_path().value());
252 }
253
254 IN_PROC_BROWSER_TEST_F(
255 TracingControllerTest,
256 EnableCaptureAndDisableMonitoringWithEmptyFileAndNullCallback) {
160 Navigate(shell()); 257 Navigate(shell());
161 258
162 TracingController* controller = TracingController::GetInstance(); 259 TracingController* controller = TracingController::GetInstance();
163 260 EXPECT_TRUE(controller->EnableMonitoring(
164 { 261 base::debug::CategoryFilter(""), TracingController::ENABLE_SAMPLING,
165 base::RunLoop run_loop; 262 TracingController::EnableMonitoringDoneCallback()));
166 TracingController::EnableMonitoringDoneCallback callback = 263 controller->CaptureMonitoringSnapshot(
167 base::Bind(&TracingControllerTest::EnableMonitoringDoneCallbackTest, 264 base::FilePath(), TracingController::TracingFileResultCallback());
168 base::Unretained(this), 265 base::RunLoop().RunUntilIdle();
169 run_loop.QuitClosure()); 266 EXPECT_TRUE(controller->DisableMonitoring(
170 bool result = controller->EnableMonitoring(base::debug::CategoryFilter("*"), 267 TracingController::DisableMonitoringDoneCallback()));
171 TracingController::ENABLE_SAMPLING, callback); 268 base::RunLoop().RunUntilIdle();
172 EXPECT_TRUE(result);
173 run_loop.Run();
174 EXPECT_EQ(enable_monitoring_done_callback_count(), 1);
175 }
176
177 {
178 base::RunLoop run_loop;
179 TracingController::TracingFileResultCallback callback =
180 base::Bind(&TracingControllerTest::
181 CaptureMonitoringSnapshotDoneCallbackTest,
182 base::Unretained(this),
183 run_loop.QuitClosure());
184 controller->CaptureMonitoringSnapshot(callback);
185 run_loop.Run();
186 EXPECT_EQ(capture_monitoring_snapshot_done_callback_count(), 1);
187 }
188
189 {
190 base::RunLoop run_loop;
191 TracingController::DisableMonitoringDoneCallback callback =
192 base::Bind(&TracingControllerTest::DisableMonitoringDoneCallbackTest,
193 base::Unretained(this),
194 run_loop.QuitClosure());
195 bool result = controller->DisableMonitoring(callback);
196 EXPECT_TRUE(result);
197 run_loop.Run();
198 EXPECT_EQ(disable_monitoring_done_callback_count(), 1);
199 }
200 } 269 }
201 270
202 } // namespace content 271 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/tracing/trace_message_filter.cc ('k') | content/browser/tracing/tracing_controller_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698