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