OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 // Unit tests for event trace consumer base class. | 5 // Unit tests for event trace consumer base class. |
6 #include "base/win/event_trace_consumer.h" | 6 #include "base/win/event_trace_consumer.h" |
7 | 7 |
8 #include <list> | 8 #include <list> |
9 | 9 |
10 #include <objbase.h> | 10 #include <objbase.h> |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 if (controller.StartRealtimeSession(session_name_.c_str(), 100 * 1024) == | 202 if (controller.StartRealtimeSession(session_name_.c_str(), 100 * 1024) == |
203 E_ACCESSDENIED) { | 203 E_ACCESSDENIED) { |
204 VLOG(1) << "You must be an administrator to run this test on Vista"; | 204 VLOG(1) << "You must be an administrator to run this test on Vista"; |
205 return; | 205 return; |
206 } | 206 } |
207 | 207 |
208 // Start the consumer_. | 208 // Start the consumer_. |
209 ASSERT_HRESULT_SUCCEEDED(StartConsumerThread()); | 209 ASSERT_HRESULT_SUCCEEDED(StartConsumerThread()); |
210 | 210 |
211 // Wait around for the consumer_ thread a bit. | 211 // Wait around for the consumer_ thread a bit. |
212 ASSERT_EQ(WAIT_TIMEOUT, ::WaitForSingleObject(consumer_thread_.Get(), 50)); | 212 ASSERT_EQ(static_cast<DWORD>(WAIT_TIMEOUT), |
| 213 ::WaitForSingleObject(consumer_thread_.Get(), 50)); |
213 ASSERT_HRESULT_SUCCEEDED(controller.Stop(NULL)); | 214 ASSERT_HRESULT_SUCCEEDED(controller.Stop(NULL)); |
214 | 215 |
215 // The consumer_ returns success on session stop. | 216 // The consumer_ returns success on session stop. |
216 ASSERT_HRESULT_SUCCEEDED(JoinConsumerThread()); | 217 ASSERT_HRESULT_SUCCEEDED(JoinConsumerThread()); |
217 } | 218 } |
218 | 219 |
219 namespace { | 220 namespace { |
220 | 221 |
221 // {57E47923-A549-476f-86CA-503D57F59E62} | 222 // {57E47923-A549-476f-86CA-503D57F59E62} |
222 DEFINE_GUID( | 223 DEFINE_GUID( |
223 kTestEventType, | 224 kTestEventType, |
224 0x57e47923, 0xa549, 0x476f, 0x86, 0xca, 0x50, 0x3d, 0x57, 0xf5, 0x9e, 0x62); | 225 0x57e47923, 0xa549, 0x476f, 0x86, 0xca, 0x50, 0x3d, 0x57, 0xf5, 0x9e, 0x62); |
225 | 226 |
226 } // namespace | 227 } // namespace |
227 | 228 |
228 TEST_F(EtwTraceConsumerRealtimeTest, ConsumeEvent) { | 229 TEST_F(EtwTraceConsumerRealtimeTest, ConsumeEvent) { |
229 EtwTraceController controller; | 230 EtwTraceController controller; |
230 if (controller.StartRealtimeSession(session_name_.c_str(), 100 * 1024) == | 231 if (controller.StartRealtimeSession(session_name_.c_str(), 100 * 1024) == |
231 E_ACCESSDENIED) { | 232 E_ACCESSDENIED) { |
232 VLOG(1) << "You must be an administrator to run this test on Vista"; | 233 VLOG(1) << "You must be an administrator to run this test on Vista"; |
233 return; | 234 return; |
234 } | 235 } |
235 | 236 |
236 ASSERT_HRESULT_SUCCEEDED(controller.EnableProvider( | 237 ASSERT_HRESULT_SUCCEEDED(controller.EnableProvider( |
237 test_provider_, TRACE_LEVEL_VERBOSE, 0xFFFFFFFF)); | 238 test_provider_, TRACE_LEVEL_VERBOSE, 0xFFFFFFFF)); |
238 | 239 |
239 EtwTraceProvider provider(test_provider_); | 240 EtwTraceProvider provider(test_provider_); |
240 ASSERT_EQ(ERROR_SUCCESS, provider.Register()); | 241 ASSERT_EQ(static_cast<DWORD>(ERROR_SUCCESS), provider.Register()); |
241 | 242 |
242 // Start the consumer_. | 243 // Start the consumer_. |
243 ASSERT_HRESULT_SUCCEEDED(StartConsumerThread()); | 244 ASSERT_HRESULT_SUCCEEDED(StartConsumerThread()); |
244 ASSERT_EQ(0, TestConsumer::events_.size()); | 245 ASSERT_EQ(0u, TestConsumer::events_.size()); |
245 | 246 |
246 EtwMofEvent<1> event(kTestEventType, 1, TRACE_LEVEL_ERROR); | 247 EtwMofEvent<1> event(kTestEventType, 1, TRACE_LEVEL_ERROR); |
247 EXPECT_EQ(ERROR_SUCCESS, provider.Log(&event.header)); | 248 EXPECT_EQ(static_cast<DWORD>(ERROR_SUCCESS), provider.Log(&event.header)); |
248 EXPECT_EQ(WAIT_OBJECT_0, | 249 EXPECT_EQ(WAIT_OBJECT_0, |
249 ::WaitForSingleObject(TestConsumer::sank_event_.Get(), INFINITE)); | 250 ::WaitForSingleObject(TestConsumer::sank_event_.Get(), INFINITE)); |
250 ASSERT_HRESULT_SUCCEEDED(controller.Stop(NULL)); | 251 ASSERT_HRESULT_SUCCEEDED(controller.Stop(NULL)); |
251 ASSERT_HRESULT_SUCCEEDED(JoinConsumerThread()); | 252 ASSERT_HRESULT_SUCCEEDED(JoinConsumerThread()); |
252 ASSERT_NE(0u, TestConsumer::events_.size()); | 253 ASSERT_NE(0u, TestConsumer::events_.size()); |
253 } | 254 } |
254 | 255 |
255 namespace { | 256 namespace { |
256 | 257 |
257 // We run events through a file session to assert that | 258 // We run events through a file session to assert that |
(...skipping 29 matching lines...) Expand all Loading... |
287 temp_file_.value().c_str()); | 288 temp_file_.value().c_str()); |
288 if (FAILED(hr)) | 289 if (FAILED(hr)) |
289 return hr; | 290 return hr; |
290 | 291 |
291 // Enable our provider. | 292 // Enable our provider. |
292 EXPECT_HRESULT_SUCCEEDED(controller.EnableProvider( | 293 EXPECT_HRESULT_SUCCEEDED(controller.EnableProvider( |
293 test_provider_, TRACE_LEVEL_VERBOSE, 0xFFFFFFFF)); | 294 test_provider_, TRACE_LEVEL_VERBOSE, 0xFFFFFFFF)); |
294 | 295 |
295 EtwTraceProvider provider(test_provider_); | 296 EtwTraceProvider provider(test_provider_); |
296 // Then register our provider, means we get a session handle immediately. | 297 // Then register our provider, means we get a session handle immediately. |
297 EXPECT_EQ(ERROR_SUCCESS, provider.Register()); | 298 EXPECT_EQ(static_cast<DWORD>(ERROR_SUCCESS), provider.Register()); |
298 // Trace the event, it goes to the temp file. | 299 // Trace the event, it goes to the temp file. |
299 EXPECT_EQ(ERROR_SUCCESS, provider.Log(header)); | 300 EXPECT_EQ(static_cast<DWORD>(ERROR_SUCCESS), provider.Log(header)); |
300 EXPECT_HRESULT_SUCCEEDED(controller.DisableProvider(test_provider_)); | 301 EXPECT_HRESULT_SUCCEEDED(controller.DisableProvider(test_provider_)); |
301 EXPECT_HRESULT_SUCCEEDED(provider.Unregister()); | 302 EXPECT_HRESULT_SUCCEEDED(provider.Unregister()); |
302 EXPECT_HRESULT_SUCCEEDED(controller.Flush(NULL)); | 303 EXPECT_HRESULT_SUCCEEDED(controller.Flush(NULL)); |
303 EXPECT_HRESULT_SUCCEEDED(controller.Stop(NULL)); | 304 EXPECT_HRESULT_SUCCEEDED(controller.Stop(NULL)); |
304 | 305 |
305 return S_OK; | 306 return S_OK; |
306 } | 307 } |
307 | 308 |
308 HRESULT ConsumeEventFromTempSession() { | 309 HRESULT ConsumeEventFromTempSession() { |
309 // Now consume the event(s). | 310 // Now consume the event(s). |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 return; | 358 return; |
358 } | 359 } |
359 ASSERT_HRESULT_SUCCEEDED(hr) << "RoundTripEvent failed"; | 360 ASSERT_HRESULT_SUCCEEDED(hr) << "RoundTripEvent failed"; |
360 ASSERT_TRUE(trace != NULL); | 361 ASSERT_TRUE(trace != NULL); |
361 ASSERT_EQ(sizeof(kData), trace->MofLength); | 362 ASSERT_EQ(sizeof(kData), trace->MofLength); |
362 ASSERT_STREQ(kData, reinterpret_cast<const char*>(trace->MofData)); | 363 ASSERT_STREQ(kData, reinterpret_cast<const char*>(trace->MofData)); |
363 } | 364 } |
364 | 365 |
365 } // namespace win | 366 } // namespace win |
366 } // namespace base | 367 } // namespace base |
OLD | NEW |