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