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/debug/trace_event_unittest.h" | 5 #include "base/debug/trace_event_unittest.h" |
6 | 6 |
7 #include <cstdlib> | 7 #include <cstdlib> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 1738 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1749 "record-continuously,enable-sampling")); | 1749 "record-continuously,enable-sampling")); |
1750 } | 1750 } |
1751 | 1751 |
1752 TEST_F(TraceEventTestFixture, TraceSampling) { | 1752 TEST_F(TraceEventTestFixture, TraceSampling) { |
1753 event_watch_notification_ = 0; | 1753 event_watch_notification_ = 0; |
1754 TraceLog::GetInstance()->SetEnabled( | 1754 TraceLog::GetInstance()->SetEnabled( |
1755 CategoryFilter("*"), | 1755 CategoryFilter("*"), |
1756 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL | | 1756 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL | |
1757 TraceLog::ENABLE_SAMPLING)); | 1757 TraceLog::ENABLE_SAMPLING)); |
1758 | 1758 |
1759 WaitableEvent* sampled = new WaitableEvent(false, false); | |
1760 TraceLog::GetInstance()->InstallWaitableEventForSamplingTesting(sampled); | |
1761 | |
1762 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Stuff"); | 1759 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Stuff"); |
1763 sampled->Wait(); | 1760 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1764 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Things"); | 1761 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Things"); |
1765 sampled->Wait(); | 1762 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1766 | 1763 |
1767 EndTraceAndFlush(); | 1764 EndTraceAndFlush(); |
1768 | 1765 |
1769 // Make sure we hit at least once. | 1766 // Make sure we hit at least once. |
1770 EXPECT_TRUE(FindNamePhase("Stuff", "P")); | 1767 EXPECT_TRUE(FindNamePhase("Stuff", "P")); |
1771 EXPECT_TRUE(FindNamePhase("Things", "P")); | 1768 EXPECT_TRUE(FindNamePhase("Things", "P")); |
1772 } | 1769 } |
1773 | 1770 |
1774 TEST_F(TraceEventTestFixture, TraceSamplingScope) { | 1771 TEST_F(TraceEventTestFixture, TraceSamplingScope) { |
1775 event_watch_notification_ = 0; | 1772 event_watch_notification_ = 0; |
1776 TraceLog::GetInstance()->SetEnabled( | 1773 TraceLog::GetInstance()->SetEnabled( |
1777 CategoryFilter("*"), | 1774 CategoryFilter("*"), |
1778 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL | | 1775 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL | |
1779 TraceLog::ENABLE_SAMPLING)); | 1776 TraceLog::ENABLE_SAMPLING)); |
1780 | 1777 |
1781 WaitableEvent* sampled = new WaitableEvent(false, false); | |
1782 TraceLog::GetInstance()->InstallWaitableEventForSamplingTesting(sampled); | |
1783 | |
1784 TRACE_EVENT_SCOPED_SAMPLING_STATE("AAA", "name"); | 1778 TRACE_EVENT_SCOPED_SAMPLING_STATE("AAA", "name"); |
1785 sampled->Wait(); | 1779 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1786 { | 1780 { |
1787 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "AAA"); | 1781 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "AAA"); |
1788 TRACE_EVENT_SCOPED_SAMPLING_STATE("BBB", "name"); | 1782 TRACE_EVENT_SCOPED_SAMPLING_STATE("BBB", "name"); |
1789 sampled->Wait(); | 1783 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1790 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "BBB"); | 1784 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "BBB"); |
1791 } | 1785 } |
1792 sampled->Wait(); | 1786 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1793 { | 1787 { |
1794 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "AAA"); | 1788 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "AAA"); |
1795 TRACE_EVENT_SCOPED_SAMPLING_STATE("CCC", "name"); | 1789 TRACE_EVENT_SCOPED_SAMPLING_STATE("CCC", "name"); |
1796 sampled->Wait(); | 1790 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1797 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "CCC"); | 1791 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "CCC"); |
1798 } | 1792 } |
1799 sampled->Wait(); | 1793 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1800 { | 1794 { |
1801 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "AAA"); | 1795 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "AAA"); |
1802 TRACE_EVENT_SET_SAMPLING_STATE("DDD", "name"); | 1796 TRACE_EVENT_SET_SAMPLING_STATE("DDD", "name"); |
1803 sampled->Wait(); | 1797 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1804 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "DDD"); | 1798 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "DDD"); |
1805 } | 1799 } |
1806 sampled->Wait(); | 1800 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1807 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "DDD"); | 1801 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "DDD"); |
1808 | 1802 |
1809 EndTraceAndFlush(); | 1803 EndTraceAndFlush(); |
1810 } | 1804 } |
1811 | 1805 |
1812 TEST_F(TraceEventTestFixture, TraceContinuousSampling) { | 1806 TEST_F(TraceEventTestFixture, TraceContinuousSampling) { |
1813 event_watch_notification_ = 0; | 1807 event_watch_notification_ = 0; |
1814 TraceLog::GetInstance()->SetEnabled( | 1808 TraceLog::GetInstance()->SetEnabled( |
1815 CategoryFilter("*"), | 1809 CategoryFilter("*"), |
1816 TraceLog::Options(TraceLog::MONITOR_SAMPLING)); | 1810 TraceLog::Options(TraceLog::MONITOR_SAMPLING)); |
1817 | 1811 |
1818 WaitableEvent* sampled = new WaitableEvent(false, false); | |
1819 TraceLog::GetInstance()->InstallWaitableEventForSamplingTesting( | |
1820 sampled); | |
1821 | |
1822 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "AAA"); | 1812 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "AAA"); |
1823 sampled->Wait(); | 1813 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1824 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "BBB"); | 1814 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "BBB"); |
1825 sampled->Wait(); | 1815 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1826 | 1816 |
1827 FlushMonitoring(); | 1817 FlushMonitoring(); |
1828 | 1818 |
1829 // Make sure we can get the profiled data. | 1819 // Make sure we can get the profiled data. |
1830 EXPECT_TRUE(FindNamePhase("AAA", "P")); | 1820 EXPECT_TRUE(FindNamePhase("AAA", "P")); |
1831 EXPECT_TRUE(FindNamePhase("BBB", "P")); | 1821 EXPECT_TRUE(FindNamePhase("BBB", "P")); |
1832 | 1822 |
1833 Clear(); | 1823 Clear(); |
1834 sampled->Wait(); | 1824 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1835 | 1825 |
1836 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "CCC"); | 1826 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "CCC"); |
1837 sampled->Wait(); | 1827 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1838 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "DDD"); | 1828 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "DDD"); |
1839 sampled->Wait(); | 1829 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1840 | 1830 |
1841 FlushMonitoring(); | 1831 FlushMonitoring(); |
1842 | 1832 |
1843 // Make sure the profiled data is accumulated. | 1833 // Make sure the profiled data is accumulated. |
1844 EXPECT_TRUE(FindNamePhase("AAA", "P")); | 1834 EXPECT_TRUE(FindNamePhase("AAA", "P")); |
1845 EXPECT_TRUE(FindNamePhase("BBB", "P")); | 1835 EXPECT_TRUE(FindNamePhase("BBB", "P")); |
1846 EXPECT_TRUE(FindNamePhase("CCC", "P")); | 1836 EXPECT_TRUE(FindNamePhase("CCC", "P")); |
1847 EXPECT_TRUE(FindNamePhase("DDD", "P")); | 1837 EXPECT_TRUE(FindNamePhase("DDD", "P")); |
1848 | 1838 |
1849 Clear(); | 1839 Clear(); |
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2357 thread.message_loop()->PostTask( | 2347 thread.message_loop()->PostTask( |
2358 FROM_HERE, Bind(&TraceWithAllMacroVariants, &task_complete_event)); | 2348 FROM_HERE, Bind(&TraceWithAllMacroVariants, &task_complete_event)); |
2359 task_complete_event.Wait(); | 2349 task_complete_event.Wait(); |
2360 task_complete_event.Reset(); | 2350 task_complete_event.Reset(); |
2361 EndTraceAndFlushInThreadWithMessageLoop(); | 2351 EndTraceAndFlushInThreadWithMessageLoop(); |
2362 ValidateAllTraceMacrosCreatedData(trace_parsed_); | 2352 ValidateAllTraceMacrosCreatedData(trace_parsed_); |
2363 } | 2353 } |
2364 | 2354 |
2365 } // namespace debug | 2355 } // namespace debug |
2366 } // namespace base | 2356 } // namespace base |
OLD | NEW |