| 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 "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.h" | 10 #include "base/message_loop.h" |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 169 scoped_ptr<XmlElement> response(new XmlElement(buzz::QN_IQ)); | 169 scoped_ptr<XmlElement> response(new XmlElement(buzz::QN_IQ)); |
| 170 response->AddAttr(QName("", "type"), "result"); | 170 response->AddAttr(QName("", "type"), "result"); |
| 171 XmlElement* result = new XmlElement( | 171 XmlElement* result = new XmlElement( |
| 172 QName(kChromotingXmlNamespace, "heartbeat-result")); | 172 QName(kChromotingXmlNamespace, "heartbeat-result")); |
| 173 response->AddElement(result); | 173 response->AddElement(result); |
| 174 XmlElement* expected_sequence_id = new XmlElement( | 174 XmlElement* expected_sequence_id = new XmlElement( |
| 175 QName(kChromotingXmlNamespace, "expected-sequence-id")); | 175 QName(kChromotingXmlNamespace, "expected-sequence-id")); |
| 176 result->AddElement(expected_sequence_id); | 176 result->AddElement(expected_sequence_id); |
| 177 const int kExpectedSequenceId = 456; | 177 const int kExpectedSequenceId = 456; |
| 178 expected_sequence_id->AddText(base::IntToString(kExpectedSequenceId)); | 178 expected_sequence_id->AddText(base::IntToString(kExpectedSequenceId)); |
| 179 heartbeat_sender_->ProcessResponse(NULL, response.get()); | 179 heartbeat_sender_->ProcessResponse(response.get()); |
| 180 message_loop_.RunAllPending(); | 180 message_loop_.RunAllPending(); |
| 181 | 181 |
| 182 scoped_ptr<XmlElement> stanza2(sent_iq2); | 182 scoped_ptr<XmlElement> stanza2(sent_iq2); |
| 183 ASSERT_TRUE(stanza2 != NULL); | 183 ASSERT_TRUE(stanza2 != NULL); |
| 184 ValidateHeartbeatStanza(stanza2.get(), | 184 ValidateHeartbeatStanza(stanza2.get(), |
| 185 base::IntToString(kExpectedSequenceId).c_str()); | 185 base::IntToString(kExpectedSequenceId).c_str()); |
| 186 | 186 |
| 187 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::DISCONNECTED); | 187 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::DISCONNECTED); |
| 188 message_loop_.RunAllPending(); | 188 message_loop_.RunAllPending(); |
| 189 } | 189 } |
| 190 | 190 |
| 191 // Verify that ProcessResponse parses set-interval result. | 191 // Verify that ProcessResponse parses set-interval result. |
| 192 TEST_F(HeartbeatSenderTest, ProcessResponseSetInterval) { | 192 TEST_F(HeartbeatSenderTest, ProcessResponseSetInterval) { |
| 193 scoped_ptr<XmlElement> response(new XmlElement(buzz::QN_IQ)); | 193 scoped_ptr<XmlElement> response(new XmlElement(buzz::QN_IQ)); |
| 194 response->AddAttr(QName("", "type"), "result"); | 194 response->AddAttr(QName("", "type"), "result"); |
| 195 | 195 |
| 196 XmlElement* result = new XmlElement( | 196 XmlElement* result = new XmlElement( |
| 197 QName(kChromotingXmlNamespace, "heartbeat-result")); | 197 QName(kChromotingXmlNamespace, "heartbeat-result")); |
| 198 response->AddElement(result); | 198 response->AddElement(result); |
| 199 | 199 |
| 200 XmlElement* set_interval = new XmlElement( | 200 XmlElement* set_interval = new XmlElement( |
| 201 QName(kChromotingXmlNamespace, "set-interval")); | 201 QName(kChromotingXmlNamespace, "set-interval")); |
| 202 result->AddElement(set_interval); | 202 result->AddElement(set_interval); |
| 203 | 203 |
| 204 const int kTestInterval = 123; | 204 const int kTestInterval = 123; |
| 205 set_interval->AddText(base::IntToString(kTestInterval)); | 205 set_interval->AddText(base::IntToString(kTestInterval)); |
| 206 | 206 |
| 207 heartbeat_sender_->ProcessResponse(NULL, response.get()); | 207 heartbeat_sender_->ProcessResponse(response.get()); |
| 208 | 208 |
| 209 EXPECT_EQ(kTestInterval * 1000, heartbeat_sender_->interval_ms_); | 209 EXPECT_EQ(kTestInterval * 1000, heartbeat_sender_->interval_ms_); |
| 210 } | 210 } |
| 211 | 211 |
| 212 // Validate a heartbeat stanza. | 212 // Validate a heartbeat stanza. |
| 213 void HeartbeatSenderTest::ValidateHeartbeatStanza( | 213 void HeartbeatSenderTest::ValidateHeartbeatStanza( |
| 214 XmlElement* stanza, const char* expectedSequenceId) { | 214 XmlElement* stanza, const char* expectedSequenceId) { |
| 215 EXPECT_EQ(stanza->Attr(buzz::QName("", "to")), | 215 EXPECT_EQ(stanza->Attr(buzz::QName("", "to")), |
| 216 std::string(kChromotingBotJid)); | 216 std::string(kChromotingBotJid)); |
| 217 EXPECT_EQ(stanza->Attr(buzz::QName("", "type")), "set"); | 217 EXPECT_EQ(stanza->Attr(buzz::QName("", "type")), "set"); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 229 EXPECT_TRUE(heartbeat_stanza->NextNamed(signature_tag) == NULL); | 229 EXPECT_TRUE(heartbeat_stanza->NextNamed(signature_tag) == NULL); |
| 230 | 230 |
| 231 HostKeyPair key_pair; | 231 HostKeyPair key_pair; |
| 232 key_pair.LoadFromString(kTestHostKeyPair); | 232 key_pair.LoadFromString(kTestHostKeyPair); |
| 233 std::string expected_signature = | 233 std::string expected_signature = |
| 234 key_pair.GetSignature(std::string(kTestJid) + ' ' + expectedSequenceId); | 234 key_pair.GetSignature(std::string(kTestJid) + ' ' + expectedSequenceId); |
| 235 EXPECT_EQ(expected_signature, signature->BodyText()); | 235 EXPECT_EQ(expected_signature, signature->BodyText()); |
| 236 } | 236 } |
| 237 | 237 |
| 238 } // namespace remoting | 238 } // namespace remoting |
| OLD | NEW |