| 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 #include "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/debug/trace_event_unittest.h" | 6 #include "base/debug/trace_event_unittest.h" |
| 7 #include "base/synchronization/waitable_event.h" | 7 #include "base/synchronization/waitable_event.h" |
| 8 #include "base/test/trace_event_analyzer.h" | 8 #include "base/test/trace_event_analyzer.h" |
| 9 #include "testing/gmock/include/gmock/gmock.h" | 9 #include "testing/gmock/include/gmock/gmock.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 392 EXPECT_STREQ("no match", found[0]->name.c_str()); | 392 EXPECT_STREQ("no match", found[0]->name.c_str()); |
| 393 } | 393 } |
| 394 | 394 |
| 395 // Test that duration queries work. | 395 // Test that duration queries work. |
| 396 TEST_F(TraceEventAnalyzerTest, BeginEndDuration) { | 396 TEST_F(TraceEventAnalyzerTest, BeginEndDuration) { |
| 397 ManualSetUp(); | 397 ManualSetUp(); |
| 398 | 398 |
| 399 const base::TimeDelta kSleepTime = base::TimeDelta::FromMilliseconds(200); | 399 const base::TimeDelta kSleepTime = base::TimeDelta::FromMilliseconds(200); |
| 400 // We will search for events that have a duration of greater than 90% of the | 400 // We will search for events that have a duration of greater than 90% of the |
| 401 // sleep time, so that there is no flakiness. | 401 // sleep time, so that there is no flakiness. |
| 402 int duration_cutoff_us = (kSleepTime.InMicroseconds() * 9) / 10; | 402 int64 duration_cutoff_us = (kSleepTime.InMicroseconds() * 9) / 10; |
| 403 | 403 |
| 404 BeginTracing(); | 404 BeginTracing(); |
| 405 { | 405 { |
| 406 TRACE_EVENT_BEGIN0("cat1", "name1"); // found by duration query | 406 TRACE_EVENT_BEGIN0("cat1", "name1"); // found by duration query |
| 407 TRACE_EVENT_BEGIN0("noise", "name2"); // not searched for, just noise | 407 TRACE_EVENT_BEGIN0("noise", "name2"); // not searched for, just noise |
| 408 { | 408 { |
| 409 TRACE_EVENT_BEGIN0("cat2", "name3"); // found by duration query | 409 TRACE_EVENT_BEGIN0("cat2", "name3"); // found by duration query |
| 410 // next event not searched for, just noise | 410 // next event not searched for, just noise |
| 411 TRACE_EVENT_INSTANT0("noise", "name4", TRACE_EVENT_SCOPE_THREAD); | 411 TRACE_EVENT_INSTANT0("noise", "name4", TRACE_EVENT_SCOPE_THREAD); |
| 412 base::debug::HighResSleepForTraceTest(kSleepTime); | 412 base::debug::HighResSleepForTraceTest(kSleepTime); |
| 413 TRACE_EVENT_BEGIN0("cat2", "name5"); // not found (duration too short) | 413 TRACE_EVENT_BEGIN0("cat2", "name5"); // not found (duration too short) |
| 414 TRACE_EVENT_END0("cat2", "name5"); // not found (duration too short) | 414 TRACE_EVENT_END0("cat2", "name5"); // not found (duration too short) |
| 415 TRACE_EVENT_END0("cat2", "name3"); // found by duration query | 415 TRACE_EVENT_END0("cat2", "name3"); // found by duration query |
| 416 } | 416 } |
| 417 TRACE_EVENT_END0("noise", "name2"); // not searched for, just noise | 417 TRACE_EVENT_END0("noise", "name2"); // not searched for, just noise |
| 418 TRACE_EVENT_END0("cat1", "name1"); // found by duration query | 418 TRACE_EVENT_END0("cat1", "name1"); // found by duration query |
| 419 } | 419 } |
| 420 EndTracing(); | 420 EndTracing(); |
| 421 | 421 |
| 422 scoped_ptr<TraceAnalyzer> | 422 scoped_ptr<TraceAnalyzer> |
| 423 analyzer(TraceAnalyzer::Create(output_.json_output)); | 423 analyzer(TraceAnalyzer::Create(output_.json_output)); |
| 424 ASSERT_TRUE(analyzer.get()); | 424 ASSERT_TRUE(analyzer.get()); |
| 425 analyzer->AssociateBeginEndEvents(); | 425 analyzer->AssociateBeginEndEvents(); |
| 426 | 426 |
| 427 TraceEventVector found; | 427 TraceEventVector found; |
| 428 analyzer->FindEvents( | 428 analyzer->FindEvents( |
| 429 Query::MatchBeginWithEnd() && | 429 Query::MatchBeginWithEnd() && |
| 430 Query::EventDuration() > Query::Int(duration_cutoff_us) && | 430 Query::EventDuration() > |
| 431 Query::Int(static_cast<int>(duration_cutoff_us)) && |
| 431 (Query::EventCategory() == Query::String("cat1") || | 432 (Query::EventCategory() == Query::String("cat1") || |
| 432 Query::EventCategory() == Query::String("cat2") || | 433 Query::EventCategory() == Query::String("cat2") || |
| 433 Query::EventCategory() == Query::String("cat3")), | 434 Query::EventCategory() == Query::String("cat3")), |
| 434 &found); | 435 &found); |
| 435 ASSERT_EQ(2u, found.size()); | 436 ASSERT_EQ(2u, found.size()); |
| 436 EXPECT_STREQ("name1", found[0]->name.c_str()); | 437 EXPECT_STREQ("name1", found[0]->name.c_str()); |
| 437 EXPECT_STREQ("name3", found[1]->name.c_str()); | 438 EXPECT_STREQ("name3", found[1]->name.c_str()); |
| 438 } | 439 } |
| 439 | 440 |
| 440 // Test that duration queries work. | 441 // Test that duration queries work. |
| 441 TEST_F(TraceEventAnalyzerTest, CompleteDuration) { | 442 TEST_F(TraceEventAnalyzerTest, CompleteDuration) { |
| 442 ManualSetUp(); | 443 ManualSetUp(); |
| 443 | 444 |
| 444 const base::TimeDelta kSleepTime = base::TimeDelta::FromMilliseconds(200); | 445 const base::TimeDelta kSleepTime = base::TimeDelta::FromMilliseconds(200); |
| 445 // We will search for events that have a duration of greater than 90% of the | 446 // We will search for events that have a duration of greater than 90% of the |
| 446 // sleep time, so that there is no flakiness. | 447 // sleep time, so that there is no flakiness. |
| 447 int duration_cutoff_us = (kSleepTime.InMicroseconds() * 9) / 10; | 448 int64 duration_cutoff_us = (kSleepTime.InMicroseconds() * 9) / 10; |
| 448 | 449 |
| 449 BeginTracing(); | 450 BeginTracing(); |
| 450 { | 451 { |
| 451 TRACE_EVENT0("cat1", "name1"); // found by duration query | 452 TRACE_EVENT0("cat1", "name1"); // found by duration query |
| 452 TRACE_EVENT0("noise", "name2"); // not searched for, just noise | 453 TRACE_EVENT0("noise", "name2"); // not searched for, just noise |
| 453 { | 454 { |
| 454 TRACE_EVENT0("cat2", "name3"); // found by duration query | 455 TRACE_EVENT0("cat2", "name3"); // found by duration query |
| 455 // next event not searched for, just noise | 456 // next event not searched for, just noise |
| 456 TRACE_EVENT_INSTANT0("noise", "name4", TRACE_EVENT_SCOPE_THREAD); | 457 TRACE_EVENT_INSTANT0("noise", "name4", TRACE_EVENT_SCOPE_THREAD); |
| 457 base::debug::HighResSleepForTraceTest(kSleepTime); | 458 base::debug::HighResSleepForTraceTest(kSleepTime); |
| 458 TRACE_EVENT0("cat2", "name5"); // not found (duration too short) | 459 TRACE_EVENT0("cat2", "name5"); // not found (duration too short) |
| 459 } | 460 } |
| 460 } | 461 } |
| 461 EndTracing(); | 462 EndTracing(); |
| 462 | 463 |
| 463 scoped_ptr<TraceAnalyzer> | 464 scoped_ptr<TraceAnalyzer> |
| 464 analyzer(TraceAnalyzer::Create(output_.json_output)); | 465 analyzer(TraceAnalyzer::Create(output_.json_output)); |
| 465 ASSERT_TRUE(analyzer.get()); | 466 ASSERT_TRUE(analyzer.get()); |
| 466 analyzer->AssociateBeginEndEvents(); | 467 analyzer->AssociateBeginEndEvents(); |
| 467 | 468 |
| 468 TraceEventVector found; | 469 TraceEventVector found; |
| 469 analyzer->FindEvents( | 470 analyzer->FindEvents( |
| 470 Query::EventCompleteDuration() > Query::Int(duration_cutoff_us) && | 471 Query::EventCompleteDuration() > |
| 472 Query::Int(static_cast<int>(duration_cutoff_us)) && |
| 471 (Query::EventCategory() == Query::String("cat1") || | 473 (Query::EventCategory() == Query::String("cat1") || |
| 472 Query::EventCategory() == Query::String("cat2") || | 474 Query::EventCategory() == Query::String("cat2") || |
| 473 Query::EventCategory() == Query::String("cat3")), | 475 Query::EventCategory() == Query::String("cat3")), |
| 474 &found); | 476 &found); |
| 475 ASSERT_EQ(2u, found.size()); | 477 ASSERT_EQ(2u, found.size()); |
| 476 EXPECT_STREQ("name1", found[0]->name.c_str()); | 478 EXPECT_STREQ("name1", found[0]->name.c_str()); |
| 477 EXPECT_STREQ("name3", found[1]->name.c_str()); | 479 EXPECT_STREQ("name3", found[1]->name.c_str()); |
| 478 } | 480 } |
| 479 | 481 |
| 480 // Test AssociateBeginEndEvents | 482 // Test AssociateBeginEndEvents |
| (...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 884 EXPECT_EQ(num_events, CountMatches(event_ptrs, Query::Bool(true))); | 886 EXPECT_EQ(num_events, CountMatches(event_ptrs, Query::Bool(true))); |
| 885 EXPECT_EQ(num_events - 1, CountMatches(event_ptrs, Query::Bool(true), | 887 EXPECT_EQ(num_events - 1, CountMatches(event_ptrs, Query::Bool(true), |
| 886 1, num_events)); | 888 1, num_events)); |
| 887 EXPECT_EQ(1u, CountMatches(event_ptrs, query_one)); | 889 EXPECT_EQ(1u, CountMatches(event_ptrs, query_one)); |
| 888 EXPECT_EQ(num_events - 1, CountMatches(event_ptrs, !query_one)); | 890 EXPECT_EQ(num_events - 1, CountMatches(event_ptrs, !query_one)); |
| 889 EXPECT_EQ(num_named, CountMatches(event_ptrs, query_named)); | 891 EXPECT_EQ(num_named, CountMatches(event_ptrs, query_named)); |
| 890 } | 892 } |
| 891 | 893 |
| 892 | 894 |
| 893 } // namespace trace_analyzer | 895 } // namespace trace_analyzer |
| OLD | NEW |