diff options
author | skyostil@chromium.org <skyostil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-10 18:48:05 +0000 |
---|---|---|
committer | skyostil@chromium.org <skyostil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-10 18:48:05 +0000 |
commit | 19457e980aa0bae3792f2e01d2119dbc5f575692 (patch) | |
tree | 15f270efb40e10e22625313841b25fcb4824be46 /base/debug/trace_event_unittest.cc | |
parent | 08a19e13491d6814666893d3c5ff45c5beb97927 (diff) | |
download | chromium_src-19457e980aa0bae3792f2e01d2119dbc5f575692.zip chromium_src-19457e980aa0bae3792f2e01d2119dbc5f575692.tar.gz chromium_src-19457e980aa0bae3792f2e01d2119dbc5f575692.tar.bz2 |
Configure synthetic delays through TraceLog
Make it possible to configure synthetic delays using trace categories.
For example, the category filter "DELAY(gpu.SwapBuffers;16)" would make
swap buffers take at least 16 ms to complete.
BUG=307841
Review URL: https://codereview.chromium.org/98953002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@244207 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/debug/trace_event_unittest.cc')
-rw-r--r-- | base/debug/trace_event_unittest.cc | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/base/debug/trace_event_unittest.cc b/base/debug/trace_event_unittest.cc index d71b242..1753b24 100644 --- a/base/debug/trace_event_unittest.cc +++ b/base/debug/trace_event_unittest.cc @@ -9,6 +9,7 @@ #include "base/bind.h" #include "base/command_line.h" #include "base/debug/trace_event.h" +#include "base/debug/trace_event_synthetic_delay.h" #include "base/json/json_reader.h" #include "base/json/json_writer.h" #include "base/memory/ref_counted_memory.h" @@ -2634,5 +2635,48 @@ TEST_F(TraceEventTestFixture, TimeOffset) { } } +TEST_F(TraceEventTestFixture, ConfigureSyntheticDelays) { + BeginSpecificTrace("DELAY(test.Delay;0.05)"); + + base::TimeTicks start = base::TimeTicks::Now(); + { + TRACE_EVENT_SYNTHETIC_DELAY("test.Delay"); + } + base::TimeDelta duration = base::TimeTicks::Now() - start; + EXPECT_GE(duration.InMilliseconds(), 50); + + EndTraceAndFlush(); +} + +TEST_F(TraceEventTestFixture, BadSyntheticDelayConfigurations) { + const char* configs[] = { + "", + "DELAY(", + "DELAY(;", + "DELAY(;)", + "DELAY(test.Delay)", + "DELAY(test.Delay;)" + }; + for (size_t i = 0; i < arraysize(configs); i++) { + BeginSpecificTrace(configs[i]); + EndTraceAndFlush(); + CategoryFilter filter = TraceLog::GetInstance()->GetCurrentCategoryFilter(); + EXPECT_EQ(0u, filter.GetSyntheticDelayValues().size()); + } +} + +TEST_F(TraceEventTestFixture, SyntheticDelayConfigurationMerging) { + CategoryFilter filter1("DELAY(test.Delay1;16)"); + CategoryFilter filter2("DELAY(test.Delay2;32)"); + filter1.Merge(filter2); + EXPECT_EQ(2u, filter1.GetSyntheticDelayValues().size()); +} + +TEST_F(TraceEventTestFixture, SyntheticDelayConfigurationToString) { + const char config[] = "DELAY(test.Delay;16;oneshot)"; + CategoryFilter filter(config); + EXPECT_EQ(config, filter.ToString()); +} + } // namespace debug } // namespace base |