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

Side by Side Diff: remoting/host/heartbeat_sender_unittest.cc

Issue 1864213002: Convert //remoting to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Mac IWYU Created 4 years, 8 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
« no previous file with comments | « remoting/host/heartbeat_sender.cc ('k') | remoting/host/host_change_notification_listener.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "remoting/host/heartbeat_sender.h" 5 #include "remoting/host/heartbeat_sender.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 void ProcessResponseWithInterval( 100 void ProcessResponseWithInterval(
101 bool is_offline_heartbeat_response, 101 bool is_offline_heartbeat_response,
102 int interval); 102 int interval);
103 103
104 base::MessageLoop message_loop_; 104 base::MessageLoop message_loop_;
105 MockSignalStrategy signal_strategy_; 105 MockSignalStrategy signal_strategy_;
106 MockClosure mock_heartbeat_successful_callback_; 106 MockClosure mock_heartbeat_successful_callback_;
107 MockClosure mock_unknown_host_id_error_callback_; 107 MockClosure mock_unknown_host_id_error_callback_;
108 std::set<SignalStrategy::Listener*> signal_strategy_listeners_; 108 std::set<SignalStrategy::Listener*> signal_strategy_listeners_;
109 scoped_refptr<RsaKeyPair> key_pair_; 109 scoped_refptr<RsaKeyPair> key_pair_;
110 scoped_ptr<HeartbeatSender> heartbeat_sender_; 110 std::unique_ptr<HeartbeatSender> heartbeat_sender_;
111 }; 111 };
112 112
113 // Call Start() followed by Stop(), and make sure a valid heartbeat is sent. 113 // Call Start() followed by Stop(), and make sure a valid heartbeat is sent.
114 TEST_F(HeartbeatSenderTest, DoSendStanza) { 114 TEST_F(HeartbeatSenderTest, DoSendStanza) {
115 XmlElement* sent_iq = nullptr; 115 XmlElement* sent_iq = nullptr;
116 EXPECT_CALL(signal_strategy_, GetLocalJid()) 116 EXPECT_CALL(signal_strategy_, GetLocalJid())
117 .WillRepeatedly(Return(kTestJid)); 117 .WillRepeatedly(Return(kTestJid));
118 EXPECT_CALL(signal_strategy_, GetNextId()) 118 EXPECT_CALL(signal_strategy_, GetNextId())
119 .WillOnce(Return(kStanzaId)); 119 .WillOnce(Return(kStanzaId));
120 EXPECT_CALL(signal_strategy_, SendStanzaPtr(NotNull())) 120 EXPECT_CALL(signal_strategy_, SendStanzaPtr(NotNull()))
121 .WillOnce(DoAll(SaveArg<0>(&sent_iq), Return(true))); 121 .WillOnce(DoAll(SaveArg<0>(&sent_iq), Return(true)));
122 EXPECT_CALL(signal_strategy_, GetState()) 122 EXPECT_CALL(signal_strategy_, GetState())
123 .WillRepeatedly(Return(SignalStrategy::CONNECTED)); 123 .WillRepeatedly(Return(SignalStrategy::CONNECTED));
124 124
125 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::CONNECTED); 125 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::CONNECTED);
126 base::RunLoop().RunUntilIdle(); 126 base::RunLoop().RunUntilIdle();
127 127
128 scoped_ptr<XmlElement> stanza(sent_iq); 128 std::unique_ptr<XmlElement> stanza(sent_iq);
129 ASSERT_TRUE(stanza != nullptr); 129 ASSERT_TRUE(stanza != nullptr);
130 ValidateHeartbeatStanza(stanza.get(), "0", nullptr); 130 ValidateHeartbeatStanza(stanza.get(), "0", nullptr);
131 131
132 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::DISCONNECTED); 132 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::DISCONNECTED);
133 base::RunLoop().RunUntilIdle(); 133 base::RunLoop().RunUntilIdle();
134 } 134 }
135 135
136 // Call Start() followed by Stop(), twice, and make sure two valid heartbeats 136 // Call Start() followed by Stop(), twice, and make sure two valid heartbeats
137 // are sent, with the correct sequence IDs. 137 // are sent, with the correct sequence IDs.
138 TEST_F(HeartbeatSenderTest, DoSendStanzaTwice) { 138 TEST_F(HeartbeatSenderTest, DoSendStanzaTwice) {
139 XmlElement* sent_iq = nullptr; 139 XmlElement* sent_iq = nullptr;
140 EXPECT_CALL(signal_strategy_, GetLocalJid()) 140 EXPECT_CALL(signal_strategy_, GetLocalJid())
141 .WillRepeatedly(Return(kTestJid)); 141 .WillRepeatedly(Return(kTestJid));
142 EXPECT_CALL(signal_strategy_, GetNextId()) 142 EXPECT_CALL(signal_strategy_, GetNextId())
143 .WillOnce(Return(kStanzaId)); 143 .WillOnce(Return(kStanzaId));
144 EXPECT_CALL(signal_strategy_, SendStanzaPtr(NotNull())) 144 EXPECT_CALL(signal_strategy_, SendStanzaPtr(NotNull()))
145 .WillOnce(DoAll(SaveArg<0>(&sent_iq), Return(true))); 145 .WillOnce(DoAll(SaveArg<0>(&sent_iq), Return(true)));
146 EXPECT_CALL(signal_strategy_, GetState()) 146 EXPECT_CALL(signal_strategy_, GetState())
147 .WillRepeatedly(Return(SignalStrategy::CONNECTED)); 147 .WillRepeatedly(Return(SignalStrategy::CONNECTED));
148 148
149 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::CONNECTED); 149 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::CONNECTED);
150 base::RunLoop().RunUntilIdle(); 150 base::RunLoop().RunUntilIdle();
151 151
152 scoped_ptr<XmlElement> stanza(sent_iq); 152 std::unique_ptr<XmlElement> stanza(sent_iq);
153 ASSERT_TRUE(stanza != nullptr); 153 ASSERT_TRUE(stanza != nullptr);
154 ValidateHeartbeatStanza(stanza.get(), "0", nullptr); 154 ValidateHeartbeatStanza(stanza.get(), "0", nullptr);
155 155
156 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::DISCONNECTED); 156 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::DISCONNECTED);
157 base::RunLoop().RunUntilIdle(); 157 base::RunLoop().RunUntilIdle();
158 158
159 EXPECT_CALL(signal_strategy_, GetLocalJid()) 159 EXPECT_CALL(signal_strategy_, GetLocalJid())
160 .WillRepeatedly(Return(kTestJid)); 160 .WillRepeatedly(Return(kTestJid));
161 EXPECT_CALL(signal_strategy_, GetNextId()) 161 EXPECT_CALL(signal_strategy_, GetNextId())
162 .WillOnce(Return(kStanzaId + 1)); 162 .WillOnce(Return(kStanzaId + 1));
163 EXPECT_CALL(signal_strategy_, SendStanzaPtr(NotNull())) 163 EXPECT_CALL(signal_strategy_, SendStanzaPtr(NotNull()))
164 .WillOnce(DoAll(SaveArg<0>(&sent_iq), Return(true))); 164 .WillOnce(DoAll(SaveArg<0>(&sent_iq), Return(true)));
165 165
166 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::CONNECTED); 166 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::CONNECTED);
167 base::RunLoop().RunUntilIdle(); 167 base::RunLoop().RunUntilIdle();
168 168
169 scoped_ptr<XmlElement> stanza2(sent_iq); 169 std::unique_ptr<XmlElement> stanza2(sent_iq);
170 ValidateHeartbeatStanza(stanza2.get(), "1", nullptr); 170 ValidateHeartbeatStanza(stanza2.get(), "1", nullptr);
171 171
172 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::DISCONNECTED); 172 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::DISCONNECTED);
173 base::RunLoop().RunUntilIdle(); 173 base::RunLoop().RunUntilIdle();
174 } 174 }
175 175
176 // Call Start() followed by Stop(), make sure a valid Iq stanza is sent, 176 // Call Start() followed by Stop(), make sure a valid Iq stanza is sent,
177 // reply with an expected sequence ID, and make sure two valid heartbeats 177 // reply with an expected sequence ID, and make sure two valid heartbeats
178 // are sent, with the correct sequence IDs. 178 // are sent, with the correct sequence IDs.
179 TEST_F(HeartbeatSenderTest, DoSendStanzaWithExpectedSequenceId) { 179 TEST_F(HeartbeatSenderTest, DoSendStanzaWithExpectedSequenceId) {
180 XmlElement* sent_iq = nullptr; 180 XmlElement* sent_iq = nullptr;
181 EXPECT_CALL(signal_strategy_, GetLocalJid()) 181 EXPECT_CALL(signal_strategy_, GetLocalJid())
182 .WillRepeatedly(Return(kTestJid)); 182 .WillRepeatedly(Return(kTestJid));
183 EXPECT_CALL(signal_strategy_, GetNextId()) 183 EXPECT_CALL(signal_strategy_, GetNextId())
184 .WillOnce(Return(kStanzaId)); 184 .WillOnce(Return(kStanzaId));
185 EXPECT_CALL(signal_strategy_, SendStanzaPtr(NotNull())) 185 EXPECT_CALL(signal_strategy_, SendStanzaPtr(NotNull()))
186 .WillOnce(DoAll(SaveArg<0>(&sent_iq), Return(true))); 186 .WillOnce(DoAll(SaveArg<0>(&sent_iq), Return(true)));
187 EXPECT_CALL(signal_strategy_, GetState()) 187 EXPECT_CALL(signal_strategy_, GetState())
188 .WillRepeatedly(Return(SignalStrategy::CONNECTED)); 188 .WillRepeatedly(Return(SignalStrategy::CONNECTED));
189 189
190 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::CONNECTED); 190 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::CONNECTED);
191 base::RunLoop().RunUntilIdle(); 191 base::RunLoop().RunUntilIdle();
192 192
193 scoped_ptr<XmlElement> stanza(sent_iq); 193 std::unique_ptr<XmlElement> stanza(sent_iq);
194 ASSERT_TRUE(stanza != nullptr); 194 ASSERT_TRUE(stanza != nullptr);
195 ValidateHeartbeatStanza(stanza.get(), "0", nullptr); 195 ValidateHeartbeatStanza(stanza.get(), "0", nullptr);
196 196
197 XmlElement* sent_iq2 = nullptr; 197 XmlElement* sent_iq2 = nullptr;
198 EXPECT_CALL(signal_strategy_, GetLocalJid()) 198 EXPECT_CALL(signal_strategy_, GetLocalJid())
199 .WillRepeatedly(Return(kTestJid)); 199 .WillRepeatedly(Return(kTestJid));
200 EXPECT_CALL(signal_strategy_, GetNextId()) 200 EXPECT_CALL(signal_strategy_, GetNextId())
201 .WillOnce(Return(kStanzaId + 1)); 201 .WillOnce(Return(kStanzaId + 1));
202 EXPECT_CALL(signal_strategy_, SendStanzaPtr(NotNull())) 202 EXPECT_CALL(signal_strategy_, SendStanzaPtr(NotNull()))
203 .WillOnce(DoAll(SaveArg<0>(&sent_iq2), Return(true))); 203 .WillOnce(DoAll(SaveArg<0>(&sent_iq2), Return(true)));
204 204
205 scoped_ptr<XmlElement> response(new XmlElement(buzz::QN_IQ)); 205 std::unique_ptr<XmlElement> response(new XmlElement(buzz::QN_IQ));
206 response->AddAttr(QName(std::string(), "type"), "result"); 206 response->AddAttr(QName(std::string(), "type"), "result");
207 XmlElement* result = 207 XmlElement* result =
208 new XmlElement(QName(kChromotingXmlNamespace, "heartbeat-result")); 208 new XmlElement(QName(kChromotingXmlNamespace, "heartbeat-result"));
209 response->AddElement(result); 209 response->AddElement(result);
210 XmlElement* expected_sequence_id = new XmlElement( 210 XmlElement* expected_sequence_id = new XmlElement(
211 QName(kChromotingXmlNamespace, "expected-sequence-id")); 211 QName(kChromotingXmlNamespace, "expected-sequence-id"));
212 result->AddElement(expected_sequence_id); 212 result->AddElement(expected_sequence_id);
213 const int kExpectedSequenceId = 456; 213 const int kExpectedSequenceId = 456;
214 expected_sequence_id->AddText(base::IntToString(kExpectedSequenceId)); 214 expected_sequence_id->AddText(base::IntToString(kExpectedSequenceId));
215 heartbeat_sender_->ProcessResponse(false, nullptr, response.get()); 215 heartbeat_sender_->ProcessResponse(false, nullptr, response.get());
216 base::RunLoop().RunUntilIdle(); 216 base::RunLoop().RunUntilIdle();
217 217
218 scoped_ptr<XmlElement> stanza2(sent_iq2); 218 std::unique_ptr<XmlElement> stanza2(sent_iq2);
219 ASSERT_TRUE(stanza2 != nullptr); 219 ASSERT_TRUE(stanza2 != nullptr);
220 ValidateHeartbeatStanza(stanza2.get(), 220 ValidateHeartbeatStanza(stanza2.get(),
221 base::IntToString(kExpectedSequenceId).c_str(), 221 base::IntToString(kExpectedSequenceId).c_str(),
222 nullptr); 222 nullptr);
223 223
224 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::DISCONNECTED); 224 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::DISCONNECTED);
225 base::RunLoop().RunUntilIdle(); 225 base::RunLoop().RunUntilIdle();
226 } 226 }
227 227
228 void HeartbeatSenderTest::ProcessResponseWithInterval( 228 void HeartbeatSenderTest::ProcessResponseWithInterval(
229 bool is_offline_heartbeat_response, 229 bool is_offline_heartbeat_response,
230 int interval) { 230 int interval) {
231 scoped_ptr<XmlElement> response(new XmlElement(buzz::QN_IQ)); 231 std::unique_ptr<XmlElement> response(new XmlElement(buzz::QN_IQ));
232 response->AddAttr(QName(std::string(), "type"), "result"); 232 response->AddAttr(QName(std::string(), "type"), "result");
233 233
234 XmlElement* result = new XmlElement( 234 XmlElement* result = new XmlElement(
235 QName(kChromotingXmlNamespace, "heartbeat-result")); 235 QName(kChromotingXmlNamespace, "heartbeat-result"));
236 response->AddElement(result); 236 response->AddElement(result);
237 237
238 XmlElement* set_interval = new XmlElement( 238 XmlElement* set_interval = new XmlElement(
239 QName(kChromotingXmlNamespace, "set-interval")); 239 QName(kChromotingXmlNamespace, "set-interval"));
240 result->AddElement(set_interval); 240 result->AddElement(set_interval);
241 241
(...skipping 27 matching lines...) Expand all
269 .WillOnce(Return(SignalStrategy::DISCONNECTED)) 269 .WillOnce(Return(SignalStrategy::DISCONNECTED))
270 .WillRepeatedly(Return(SignalStrategy::CONNECTED)); 270 .WillRepeatedly(Return(SignalStrategy::CONNECTED));
271 EXPECT_CALL(mock_ack_callback, Run(_)).Times(0); 271 EXPECT_CALL(mock_ack_callback, Run(_)).Times(0);
272 272
273 heartbeat_sender_->SetHostOfflineReason( 273 heartbeat_sender_->SetHostOfflineReason(
274 "test_error", kTestTimeout, 274 "test_error", kTestTimeout,
275 base::Bind(&MockAckCallback::Run, base::Unretained(&mock_ack_callback))); 275 base::Bind(&MockAckCallback::Run, base::Unretained(&mock_ack_callback)));
276 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::CONNECTED); 276 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::CONNECTED);
277 base::RunLoop().RunUntilIdle(); 277 base::RunLoop().RunUntilIdle();
278 278
279 scoped_ptr<XmlElement> stanza(sent_iq); 279 std::unique_ptr<XmlElement> stanza(sent_iq);
280 ASSERT_TRUE(stanza != nullptr); 280 ASSERT_TRUE(stanza != nullptr);
281 ValidateHeartbeatStanza(stanza.get(), "0", "test_error"); 281 ValidateHeartbeatStanza(stanza.get(), "0", "test_error");
282 282
283 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::DISCONNECTED); 283 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::DISCONNECTED);
284 base::RunLoop().RunUntilIdle(); 284 base::RunLoop().RunUntilIdle();
285 } 285 }
286 286
287 // Make sure SetHostOfflineReason triggers a callback when bot responds. 287 // Make sure SetHostOfflineReason triggers a callback when bot responds.
288 TEST_F(HeartbeatSenderTest, ProcessHostOfflineResponses) { 288 TEST_F(HeartbeatSenderTest, ProcessHostOfflineResponses) {
289 MockAckCallback mock_ack_callback; 289 MockAckCallback mock_ack_callback;
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 EXPECT_CALL(signal_strategy_, GetNextId()) 339 EXPECT_CALL(signal_strategy_, GetNextId())
340 .WillOnce(Return(kStanzaId)); 340 .WillOnce(Return(kStanzaId));
341 EXPECT_CALL(signal_strategy_, SendStanzaPtr(NotNull())) 341 EXPECT_CALL(signal_strategy_, SendStanzaPtr(NotNull()))
342 .WillOnce(DoAll(SaveArg<0>(&sent_iq), Return(true))); 342 .WillOnce(DoAll(SaveArg<0>(&sent_iq), Return(true)));
343 EXPECT_CALL(signal_strategy_, GetState()) 343 EXPECT_CALL(signal_strategy_, GetState())
344 .WillRepeatedly(Return(SignalStrategy::CONNECTED)); 344 .WillRepeatedly(Return(SignalStrategy::CONNECTED));
345 345
346 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::CONNECTED); 346 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::CONNECTED);
347 base::RunLoop().RunUntilIdle(); 347 base::RunLoop().RunUntilIdle();
348 348
349 scoped_ptr<XmlElement> stanza(sent_iq); 349 std::unique_ptr<XmlElement> stanza(sent_iq);
350 ASSERT_TRUE(stanza != nullptr); 350 ASSERT_TRUE(stanza != nullptr);
351 351
352 XmlElement* heartbeat_stanza = 352 XmlElement* heartbeat_stanza =
353 stanza->FirstNamed(QName(kChromotingXmlNamespace, "heartbeat")); 353 stanza->FirstNamed(QName(kChromotingXmlNamespace, "heartbeat"));
354 354
355 std::string host_os_name = 355 std::string host_os_name =
356 heartbeat_stanza->TextNamed( 356 heartbeat_stanza->TextNamed(
357 QName(kChromotingXmlNamespace, "host-os-name")); 357 QName(kChromotingXmlNamespace, "host-os-name"));
358 EXPECT_TRUE(!host_os_name.empty()); 358 EXPECT_TRUE(!host_os_name.empty());
359 359
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 EXPECT_TRUE(heartbeat_stanza->NextNamed(signature_tag) == nullptr); 395 EXPECT_TRUE(heartbeat_stanza->NextNamed(signature_tag) == nullptr);
396 396
397 scoped_refptr<RsaKeyPair> key_pair = RsaKeyPair::FromString(kTestRsaKeyPair); 397 scoped_refptr<RsaKeyPair> key_pair = RsaKeyPair::FromString(kTestRsaKeyPair);
398 ASSERT_TRUE(key_pair.get()); 398 ASSERT_TRUE(key_pair.get());
399 std::string expected_signature = key_pair->SignMessage( 399 std::string expected_signature = key_pair->SignMessage(
400 std::string(kTestJidNormalized) + ' ' + expected_sequence_id); 400 std::string(kTestJidNormalized) + ' ' + expected_sequence_id);
401 EXPECT_EQ(expected_signature, signature->BodyText()); 401 EXPECT_EQ(expected_signature, signature->BodyText());
402 } 402 }
403 403
404 } // namespace remoting 404 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/heartbeat_sender.cc ('k') | remoting/host/host_change_notification_listener.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698