OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "remoting/host/host_status_logger.h" | 5 #include "remoting/host/host_status_logger.h" |
6 | 6 |
7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
9 #include "remoting/host/fake_host_status_monitor.h" | 9 #include "remoting/host/fake_host_status_monitor.h" |
10 #include "remoting/signaling/mock_signal_strategy.h" | 10 #include "remoting/signaling/mock_signal_strategy.h" |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 if (log_entry->NextChild()) { | 117 if (log_entry->NextChild()) { |
118 return false; | 118 return false; |
119 } | 119 } |
120 return true; | 120 return true; |
121 } | 121 } |
122 | 122 |
123 } // namespace | 123 } // namespace |
124 | 124 |
125 class HostStatusLoggerTest : public testing::Test { | 125 class HostStatusLoggerTest : public testing::Test { |
126 public: | 126 public: |
127 HostStatusLoggerTest() {} | 127 HostStatusLoggerTest() : signal_strategy_(SignalingAddress(kHostJid)) {} |
128 void SetUp() override { | 128 void SetUp() override { |
129 EXPECT_CALL(signal_strategy_, AddListener(_)); | 129 EXPECT_CALL(signal_strategy_, AddListener(_)); |
130 host_status_logger_.reset( | 130 host_status_logger_.reset( |
131 new HostStatusLogger(host_status_monitor_.AsWeakPtr(), | 131 new HostStatusLogger(host_status_monitor_.AsWeakPtr(), |
132 ServerLogEntry::ME2ME, | 132 ServerLogEntry::ME2ME, |
133 &signal_strategy_, | 133 &signal_strategy_, |
134 kTestBotJid)); | 134 kTestBotJid)); |
135 EXPECT_CALL(signal_strategy_, RemoveListener(_)); | 135 EXPECT_CALL(signal_strategy_, RemoveListener(_)); |
136 } | 136 } |
137 | 137 |
138 protected: | 138 protected: |
139 base::MessageLoop message_loop_; | 139 base::MessageLoop message_loop_; |
140 MockSignalStrategy signal_strategy_; | 140 MockSignalStrategy signal_strategy_; |
141 std::unique_ptr<HostStatusLogger> host_status_logger_; | 141 std::unique_ptr<HostStatusLogger> host_status_logger_; |
142 FakeHostStatusMonitor host_status_monitor_; | 142 FakeHostStatusMonitor host_status_monitor_; |
143 }; | 143 }; |
144 | 144 |
145 TEST_F(HostStatusLoggerTest, SendNow) { | 145 TEST_F(HostStatusLoggerTest, SendNow) { |
146 base::RunLoop run_loop; | 146 base::RunLoop run_loop; |
147 { | 147 { |
148 InSequence s; | 148 InSequence s; |
149 EXPECT_CALL(signal_strategy_, GetLocalJid()) | |
150 .WillRepeatedly(Return(kHostJid)); | |
151 EXPECT_CALL(signal_strategy_, AddListener(_)); | 149 EXPECT_CALL(signal_strategy_, AddListener(_)); |
152 EXPECT_CALL(signal_strategy_, GetNextId()); | 150 EXPECT_CALL(signal_strategy_, GetNextId()); |
153 EXPECT_CALL(signal_strategy_, SendStanzaPtr(IsClientConnected("direct"))) | 151 EXPECT_CALL(signal_strategy_, SendStanzaPtr(IsClientConnected("direct"))) |
154 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); | 152 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); |
155 EXPECT_CALL(signal_strategy_, RemoveListener(_)) | 153 EXPECT_CALL(signal_strategy_, RemoveListener(_)) |
156 .WillOnce(QuitRunLoop(&run_loop)) | 154 .WillOnce(QuitRunLoop(&run_loop)) |
157 .RetiresOnSaturation(); | 155 .RetiresOnSaturation(); |
158 } | 156 } |
159 host_status_logger_->SetSignalingStateForTest(SignalStrategy::CONNECTED); | 157 host_status_logger_->SetSignalingStateForTest(SignalStrategy::CONNECTED); |
160 protocol::TransportRoute route; | 158 protocol::TransportRoute route; |
161 route.type = protocol::TransportRoute::DIRECT; | 159 route.type = protocol::TransportRoute::DIRECT; |
162 host_status_logger_->OnClientRouteChange(kClientJid1, "video", route); | 160 host_status_logger_->OnClientRouteChange(kClientJid1, "video", route); |
163 host_status_logger_->OnClientAuthenticated(kClientJid1); | 161 host_status_logger_->OnClientAuthenticated(kClientJid1); |
164 host_status_logger_->OnClientConnected(kClientJid1); | 162 host_status_logger_->OnClientConnected(kClientJid1); |
165 host_status_logger_->SetSignalingStateForTest( | 163 host_status_logger_->SetSignalingStateForTest( |
166 SignalStrategy::DISCONNECTED); | 164 SignalStrategy::DISCONNECTED); |
167 run_loop.Run(); | 165 run_loop.Run(); |
168 } | 166 } |
169 | 167 |
170 TEST_F(HostStatusLoggerTest, SendLater) { | 168 TEST_F(HostStatusLoggerTest, SendLater) { |
171 base::RunLoop run_loop; | 169 base::RunLoop run_loop; |
172 protocol::TransportRoute route; | 170 protocol::TransportRoute route; |
173 route.type = protocol::TransportRoute::DIRECT; | 171 route.type = protocol::TransportRoute::DIRECT; |
174 host_status_logger_->OnClientRouteChange(kClientJid1, "video", route); | 172 host_status_logger_->OnClientRouteChange(kClientJid1, "video", route); |
175 host_status_logger_->OnClientAuthenticated(kClientJid1); | 173 host_status_logger_->OnClientAuthenticated(kClientJid1); |
176 host_status_logger_->OnClientConnected(kClientJid1); | 174 host_status_logger_->OnClientConnected(kClientJid1); |
| 175 |
177 { | 176 { |
178 InSequence s; | 177 InSequence s; |
179 EXPECT_CALL(signal_strategy_, GetLocalJid()) | |
180 .WillRepeatedly(Return(kHostJid)); | |
181 EXPECT_CALL(signal_strategy_, AddListener(_)); | 178 EXPECT_CALL(signal_strategy_, AddListener(_)); |
182 EXPECT_CALL(signal_strategy_, GetNextId()); | 179 EXPECT_CALL(signal_strategy_, GetNextId()); |
183 EXPECT_CALL(signal_strategy_, SendStanzaPtr(IsClientConnected("direct"))) | 180 EXPECT_CALL(signal_strategy_, SendStanzaPtr(IsClientConnected("direct"))) |
184 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); | 181 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); |
185 EXPECT_CALL(signal_strategy_, RemoveListener(_)) | 182 EXPECT_CALL(signal_strategy_, RemoveListener(_)) |
186 .WillOnce(QuitRunLoop(&run_loop)) | 183 .WillOnce(QuitRunLoop(&run_loop)) |
187 .RetiresOnSaturation(); | 184 .RetiresOnSaturation(); |
188 } | 185 } |
189 host_status_logger_->SetSignalingStateForTest(SignalStrategy::CONNECTED); | 186 host_status_logger_->SetSignalingStateForTest(SignalStrategy::CONNECTED); |
190 host_status_logger_->SetSignalingStateForTest(SignalStrategy::DISCONNECTED); | 187 host_status_logger_->SetSignalingStateForTest(SignalStrategy::DISCONNECTED); |
191 run_loop.Run(); | 188 run_loop.Run(); |
192 } | 189 } |
193 | 190 |
194 TEST_F(HostStatusLoggerTest, SendTwoEntriesLater) { | 191 TEST_F(HostStatusLoggerTest, SendTwoEntriesLater) { |
195 base::RunLoop run_loop; | 192 base::RunLoop run_loop; |
196 protocol::TransportRoute route1; | 193 protocol::TransportRoute route1; |
197 route1.type = protocol::TransportRoute::DIRECT; | 194 route1.type = protocol::TransportRoute::DIRECT; |
198 host_status_logger_->OnClientRouteChange(kClientJid1, "video", route1); | 195 host_status_logger_->OnClientRouteChange(kClientJid1, "video", route1); |
199 host_status_logger_->OnClientAuthenticated(kClientJid1); | 196 host_status_logger_->OnClientAuthenticated(kClientJid1); |
200 host_status_logger_->OnClientConnected(kClientJid1); | 197 host_status_logger_->OnClientConnected(kClientJid1); |
201 protocol::TransportRoute route2; | 198 protocol::TransportRoute route2; |
202 route2.type = protocol::TransportRoute::STUN; | 199 route2.type = protocol::TransportRoute::STUN; |
203 host_status_logger_->OnClientRouteChange(kClientJid2, "video", route2); | 200 host_status_logger_->OnClientRouteChange(kClientJid2, "video", route2); |
204 host_status_logger_->OnClientAuthenticated(kClientJid2); | 201 host_status_logger_->OnClientAuthenticated(kClientJid2); |
205 host_status_logger_->OnClientConnected(kClientJid2); | 202 host_status_logger_->OnClientConnected(kClientJid2); |
| 203 |
206 { | 204 { |
207 InSequence s; | 205 InSequence s; |
208 EXPECT_CALL(signal_strategy_, GetLocalJid()) | |
209 .WillRepeatedly(Return(kHostJid)); | |
210 EXPECT_CALL(signal_strategy_, AddListener(_)); | 206 EXPECT_CALL(signal_strategy_, AddListener(_)); |
211 EXPECT_CALL(signal_strategy_, GetNextId()); | 207 EXPECT_CALL(signal_strategy_, GetNextId()); |
212 EXPECT_CALL(signal_strategy_, | 208 EXPECT_CALL(signal_strategy_, |
213 SendStanzaPtr(IsTwoClientsConnected("direct", "stun"))) | 209 SendStanzaPtr(IsTwoClientsConnected("direct", "stun"))) |
214 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); | 210 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); |
215 EXPECT_CALL(signal_strategy_, RemoveListener(_)) | 211 EXPECT_CALL(signal_strategy_, RemoveListener(_)) |
216 .WillOnce(QuitRunLoop(&run_loop)) | 212 .WillOnce(QuitRunLoop(&run_loop)) |
217 .RetiresOnSaturation(); | 213 .RetiresOnSaturation(); |
218 } | 214 } |
219 host_status_logger_->SetSignalingStateForTest(SignalStrategy::CONNECTED); | 215 host_status_logger_->SetSignalingStateForTest(SignalStrategy::CONNECTED); |
220 host_status_logger_->SetSignalingStateForTest(SignalStrategy::DISCONNECTED); | 216 host_status_logger_->SetSignalingStateForTest(SignalStrategy::DISCONNECTED); |
221 run_loop.Run(); | 217 run_loop.Run(); |
222 } | 218 } |
223 | 219 |
224 TEST_F(HostStatusLoggerTest, HandleRouteChangeInUnusualOrder) { | 220 TEST_F(HostStatusLoggerTest, HandleRouteChangeInUnusualOrder) { |
225 base::RunLoop run_loop; | 221 base::RunLoop run_loop; |
| 222 |
226 { | 223 { |
227 InSequence s; | 224 InSequence s; |
228 EXPECT_CALL(signal_strategy_, GetLocalJid()) | |
229 .WillRepeatedly(Return(kHostJid)); | |
230 EXPECT_CALL(signal_strategy_, AddListener(_)); | 225 EXPECT_CALL(signal_strategy_, AddListener(_)); |
231 EXPECT_CALL(signal_strategy_, GetNextId()); | 226 EXPECT_CALL(signal_strategy_, GetNextId()); |
232 EXPECT_CALL(signal_strategy_, SendStanzaPtr(IsClientConnected("direct"))) | 227 EXPECT_CALL(signal_strategy_, SendStanzaPtr(IsClientConnected("direct"))) |
233 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); | 228 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); |
234 EXPECT_CALL(signal_strategy_, GetNextId()); | 229 EXPECT_CALL(signal_strategy_, GetNextId()); |
235 EXPECT_CALL(signal_strategy_, SendStanzaPtr(IsClientDisconnected())) | 230 EXPECT_CALL(signal_strategy_, SendStanzaPtr(IsClientDisconnected())) |
236 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); | 231 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); |
237 EXPECT_CALL(signal_strategy_, GetNextId()); | 232 EXPECT_CALL(signal_strategy_, GetNextId()); |
238 EXPECT_CALL(signal_strategy_, SendStanzaPtr(IsClientConnected("stun"))) | 233 EXPECT_CALL(signal_strategy_, SendStanzaPtr(IsClientConnected("stun"))) |
239 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); | 234 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); |
(...skipping 11 matching lines...) Expand all Loading... |
251 route2.type = protocol::TransportRoute::STUN; | 246 route2.type = protocol::TransportRoute::STUN; |
252 host_status_logger_->OnClientRouteChange(kClientJid2, "video", route2); | 247 host_status_logger_->OnClientRouteChange(kClientJid2, "video", route2); |
253 host_status_logger_->OnClientDisconnected(kClientJid1); | 248 host_status_logger_->OnClientDisconnected(kClientJid1); |
254 host_status_logger_->OnClientAuthenticated(kClientJid2); | 249 host_status_logger_->OnClientAuthenticated(kClientJid2); |
255 host_status_logger_->OnClientConnected(kClientJid2); | 250 host_status_logger_->OnClientConnected(kClientJid2); |
256 host_status_logger_->SetSignalingStateForTest(SignalStrategy::DISCONNECTED); | 251 host_status_logger_->SetSignalingStateForTest(SignalStrategy::DISCONNECTED); |
257 run_loop.Run(); | 252 run_loop.Run(); |
258 } | 253 } |
259 | 254 |
260 } // namespace remoting | 255 } // namespace remoting |
OLD | NEW |