| 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 |