Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(386)

Side by Side Diff: components/metrics/child_call_stack_profile_collector_unittest.cc

Issue 2362493002: Stack sampling profiler: set process and thread information (Closed)
Patch Set: address comments Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "components/metrics/child_call_stack_profile_collector.h" 5 #include "components/metrics/child_call_stack_profile_collector.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 71
72 DISALLOW_COPY_AND_ASSIGN(ChildCallStackProfileCollectorTest); 72 DISALLOW_COPY_AND_ASSIGN(ChildCallStackProfileCollectorTest);
73 }; 73 };
74 74
75 // Test the behavior when an interface is provided. 75 // Test the behavior when an interface is provided.
76 TEST_F(ChildCallStackProfileCollectorTest, InterfaceProvided) { 76 TEST_F(ChildCallStackProfileCollectorTest, InterfaceProvided) {
77 EXPECT_EQ(0u, profiles().size()); 77 EXPECT_EQ(0u, profiles().size());
78 78
79 // Add profiles before providing the interface. 79 // Add profiles before providing the interface.
80 CollectProfiles( 80 CollectProfiles(
81 CallStackProfileParams(CallStackProfileParams::JANKY_TASK, 81 CallStackProfileParams(CallStackProfileParams::BROWSER_PROCESS,
82 CallStackProfileParams::UI_THREAD,
83 CallStackProfileParams::JANKY_TASK,
82 CallStackProfileParams::PRESERVE_ORDER), 84 CallStackProfileParams::PRESERVE_ORDER),
83 { base::StackSamplingProfiler::CallStackProfile(), 85 { base::StackSamplingProfiler::CallStackProfile(),
84 base::StackSamplingProfiler::CallStackProfile() }); 86 base::StackSamplingProfiler::CallStackProfile() });
85 ASSERT_EQ(1u, profiles().size()); 87 ASSERT_EQ(1u, profiles().size());
88 EXPECT_EQ(CallStackProfileParams::BROWSER_PROCESS,
89 profiles()[0].params.process);
90 EXPECT_EQ(CallStackProfileParams::UI_THREAD, profiles()[0].params.thread);
86 EXPECT_EQ(CallStackProfileParams::JANKY_TASK, profiles()[0].params.trigger); 91 EXPECT_EQ(CallStackProfileParams::JANKY_TASK, profiles()[0].params.trigger);
87 EXPECT_EQ(CallStackProfileParams::PRESERVE_ORDER, 92 EXPECT_EQ(CallStackProfileParams::PRESERVE_ORDER,
88 profiles()[0].params.ordering_spec); 93 profiles()[0].params.ordering_spec);
89 base::TimeTicks start_timestamp = profiles()[0].start_timestamp; 94 base::TimeTicks start_timestamp = profiles()[0].start_timestamp;
90 EXPECT_GE(base::TimeDelta::FromMilliseconds(10), 95 EXPECT_GE(base::TimeDelta::FromMilliseconds(10),
91 base::TimeTicks::Now() - start_timestamp); 96 base::TimeTicks::Now() - start_timestamp);
92 EXPECT_EQ(2u, profiles()[0].profiles.size()); 97 EXPECT_EQ(2u, profiles()[0].profiles.size());
93 98
94 // Set the interface. The profiles should be passed to it. 99 // Set the interface. The profiles should be passed to it.
95 child_collector_.SetParentProfileCollector(std::move(receiver_)); 100 child_collector_.SetParentProfileCollector(std::move(receiver_));
96 base::RunLoop().RunUntilIdle(); 101 base::RunLoop().RunUntilIdle();
97 EXPECT_EQ(0u, profiles().size()); 102 EXPECT_EQ(0u, profiles().size());
98 ASSERT_EQ(1u, receiver_impl_->profiles.size()); 103 ASSERT_EQ(1u, receiver_impl_->profiles.size());
99 EXPECT_EQ(CallStackProfileParams::JANKY_TASK, 104 EXPECT_EQ(CallStackProfileParams::JANKY_TASK,
100 receiver_impl_->profiles[0].params.trigger); 105 receiver_impl_->profiles[0].params.trigger);
101 EXPECT_EQ(CallStackProfileParams::PRESERVE_ORDER, 106 EXPECT_EQ(CallStackProfileParams::PRESERVE_ORDER,
102 receiver_impl_->profiles[0].params.ordering_spec); 107 receiver_impl_->profiles[0].params.ordering_spec);
103 EXPECT_EQ(start_timestamp, receiver_impl_->profiles[0].start_timestamp); 108 EXPECT_EQ(start_timestamp, receiver_impl_->profiles[0].start_timestamp);
104 EXPECT_EQ(2u, receiver_impl_->profiles[0].profiles.size()); 109 EXPECT_EQ(2u, receiver_impl_->profiles[0].profiles.size());
105 110
106 // Add profiles after providing the interface. They should also be passed to 111 // Add profiles after providing the interface. They should also be passed to
107 // it. 112 // it.
108 receiver_impl_->profiles.clear(); 113 receiver_impl_->profiles.clear();
109 CollectProfiles( 114 CollectProfiles(
110 CallStackProfileParams(CallStackProfileParams::THREAD_HUNG, 115 CallStackProfileParams(CallStackProfileParams::GPU_PROCESS,
116 CallStackProfileParams::GPU_MAIN_THREAD,
117 CallStackProfileParams::THREAD_HUNG,
111 CallStackProfileParams::PRESERVE_ORDER), 118 CallStackProfileParams::PRESERVE_ORDER),
112 { base::StackSamplingProfiler::CallStackProfile() }); 119 { base::StackSamplingProfiler::CallStackProfile() });
113 base::RunLoop().RunUntilIdle(); 120 base::RunLoop().RunUntilIdle();
114 EXPECT_EQ(0u, profiles().size()); 121 EXPECT_EQ(0u, profiles().size());
115 ASSERT_EQ(1u, receiver_impl_->profiles.size()); 122 ASSERT_EQ(1u, receiver_impl_->profiles.size());
123 EXPECT_EQ(CallStackProfileParams::GPU_PROCESS,
124 receiver_impl_->profiles[0].params.process);
125 EXPECT_EQ(CallStackProfileParams::GPU_MAIN_THREAD,
126 receiver_impl_->profiles[0].params.thread);
116 EXPECT_EQ(CallStackProfileParams::THREAD_HUNG, 127 EXPECT_EQ(CallStackProfileParams::THREAD_HUNG,
117 receiver_impl_->profiles[0].params.trigger); 128 receiver_impl_->profiles[0].params.trigger);
118 EXPECT_EQ(CallStackProfileParams::PRESERVE_ORDER, 129 EXPECT_EQ(CallStackProfileParams::PRESERVE_ORDER,
119 receiver_impl_->profiles[0].params.ordering_spec); 130 receiver_impl_->profiles[0].params.ordering_spec);
120 EXPECT_GE(base::TimeDelta::FromMilliseconds(10), 131 EXPECT_GE(base::TimeDelta::FromMilliseconds(10),
121 (base::TimeTicks::Now() - 132 (base::TimeTicks::Now() -
122 receiver_impl_->profiles[0].start_timestamp)); 133 receiver_impl_->profiles[0].start_timestamp));
123 EXPECT_EQ(1u, receiver_impl_->profiles[0].profiles.size()); 134 EXPECT_EQ(1u, receiver_impl_->profiles[0].profiles.size());
124 } 135 }
125 136
126 TEST_F(ChildCallStackProfileCollectorTest, InterfaceNotProvided) { 137 TEST_F(ChildCallStackProfileCollectorTest, InterfaceNotProvided) {
127 EXPECT_EQ(0u, profiles().size()); 138 EXPECT_EQ(0u, profiles().size());
128 139
129 // Add profiles before providing a null interface. 140 // Add profiles before providing a null interface.
130 CollectProfiles( 141 CollectProfiles(
131 CallStackProfileParams(CallStackProfileParams::JANKY_TASK, 142 CallStackProfileParams(CallStackProfileParams::BROWSER_PROCESS,
143 CallStackProfileParams::UI_THREAD,
144 CallStackProfileParams::JANKY_TASK,
132 CallStackProfileParams::PRESERVE_ORDER), 145 CallStackProfileParams::PRESERVE_ORDER),
133 { base::StackSamplingProfiler::CallStackProfile(), 146 { base::StackSamplingProfiler::CallStackProfile(),
134 base::StackSamplingProfiler::CallStackProfile() }); 147 base::StackSamplingProfiler::CallStackProfile() });
135 ASSERT_EQ(1u, profiles().size()); 148 ASSERT_EQ(1u, profiles().size());
149 EXPECT_EQ(CallStackProfileParams::BROWSER_PROCESS,
150 profiles()[0].params.process);
151 EXPECT_EQ(CallStackProfileParams::UI_THREAD, profiles()[0].params.thread);
136 EXPECT_EQ(CallStackProfileParams::JANKY_TASK, profiles()[0].params.trigger); 152 EXPECT_EQ(CallStackProfileParams::JANKY_TASK, profiles()[0].params.trigger);
137 EXPECT_EQ(CallStackProfileParams::PRESERVE_ORDER, 153 EXPECT_EQ(CallStackProfileParams::PRESERVE_ORDER,
138 profiles()[0].params.ordering_spec); 154 profiles()[0].params.ordering_spec);
139 EXPECT_GE(base::TimeDelta::FromMilliseconds(10), 155 EXPECT_GE(base::TimeDelta::FromMilliseconds(10),
140 base::TimeTicks::Now() - profiles()[0].start_timestamp); 156 base::TimeTicks::Now() - profiles()[0].start_timestamp);
141 EXPECT_EQ(2u, profiles()[0].profiles.size()); 157 EXPECT_EQ(2u, profiles()[0].profiles.size());
142 158
143 // Set the null interface. The profiles should be flushed. 159 // Set the null interface. The profiles should be flushed.
144 child_collector_.SetParentProfileCollector( 160 child_collector_.SetParentProfileCollector(
145 mojom::CallStackProfileCollectorPtr()); 161 mojom::CallStackProfileCollectorPtr());
146 base::RunLoop().RunUntilIdle(); 162 base::RunLoop().RunUntilIdle();
147 EXPECT_EQ(0u, profiles().size()); 163 EXPECT_EQ(0u, profiles().size());
148 164
149 // Add profiles after providing a null interface. They should also be flushed. 165 // Add profiles after providing a null interface. They should also be flushed.
150 CollectProfiles( 166 CollectProfiles(
151 CallStackProfileParams(CallStackProfileParams::THREAD_HUNG, 167 CallStackProfileParams(CallStackProfileParams::GPU_PROCESS,
168 CallStackProfileParams::GPU_MAIN_THREAD,
169 CallStackProfileParams::THREAD_HUNG,
152 CallStackProfileParams::PRESERVE_ORDER), 170 CallStackProfileParams::PRESERVE_ORDER),
153 { base::StackSamplingProfiler::CallStackProfile() }); 171 { base::StackSamplingProfiler::CallStackProfile() });
154 EXPECT_EQ(0u, profiles().size()); 172 EXPECT_EQ(0u, profiles().size());
155 } 173 }
156 174
157 } // namespace metrics 175 } // namespace metrics
OLDNEW
« no previous file with comments | « components/metrics/call_stack_profile_params.cc ('k') | components/metrics/public/cpp/call_stack_profile.typemap » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698