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

Side by Side Diff: net/quic/crypto/crypto_framer_test.cc

Issue 11633030: Send the ClientHello handshake message. Fix a bug in (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Fix QuicStreamFactoryTest properly Created 8 years 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 | Annotate | Revision Log
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 <map> 5 #include <map>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "net/quic/crypto/crypto_framer.h" 10 #include "net/quic/crypto/crypto_framer.h"
(...skipping 16 matching lines...) Expand all
27 } // namespace 27 } // namespace
28 28
29 namespace test { 29 namespace test {
30 30
31 class TestCryptoVisitor : public ::net::CryptoFramerVisitorInterface { 31 class TestCryptoVisitor : public ::net::CryptoFramerVisitorInterface {
32 public: 32 public:
33 TestCryptoVisitor() 33 TestCryptoVisitor()
34 : error_count_(0) { 34 : error_count_(0) {
35 } 35 }
36 36
37 ~TestCryptoVisitor() {}
38
39 virtual void OnError(CryptoFramer* framer) { 37 virtual void OnError(CryptoFramer* framer) {
40 LOG(ERROR) << "CryptoFramer Error: " << framer->error(); 38 DLOG(ERROR) << "CryptoFramer Error: " << framer->error();
41 error_count_++; 39 ++error_count_;
42 } 40 }
43 41
44 virtual void OnHandshakeMessage(const CryptoHandshakeMessage& message) { 42 virtual void OnHandshakeMessage(const CryptoHandshakeMessage& message) {
45 message_tags_.push_back(message.tag); 43 messages_.push_back(message);
46 message_maps_.push_back(map<CryptoTag, string>());
47 CryptoTagValueMap::const_iterator it = message.tag_value_map.begin();
48 while (it != message.tag_value_map.end()) {
49 message_maps_.back()[it->first] = it->second.as_string();
50 ++it;
51 }
52 } 44 }
53 45
54 // Counters from the visitor callbacks. 46 // Counters from the visitor callbacks.
55 int error_count_; 47 int error_count_;
56 48
57 CryptoTagVector message_tags_; 49 vector<CryptoHandshakeMessage> messages_;
58 vector<map<CryptoTag, string> > message_maps_;
59 }; 50 };
60 51
61 } // namespace test 52 } // namespace test
62 53
63 TEST(CryptoFramerTest, MakeCryptoTag) { 54 TEST(CryptoFramerTest, MakeCryptoTag) {
64 CryptoTag tag = MAKE_TAG('A', 'B', 'C', 'D'); 55 CryptoTag tag = MAKE_TAG('A', 'B', 'C', 'D');
65 char bytes[4]; 56 char bytes[4];
66 memcpy(bytes, &tag, 4); 57 memcpy(bytes, &tag, 4);
67 EXPECT_EQ('A', bytes[0]); 58 EXPECT_EQ('A', bytes[0]);
68 EXPECT_EQ('B', bytes[1]); 59 EXPECT_EQ('B', bytes[1]);
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 'a', 'b', 'c', 'd', 203 'a', 'b', 'c', 'd',
213 'e', 'f', 204 'e', 'f',
214 // value 2 205 // value 2
215 'g', 'h', 'i', 'j', 206 'g', 'h', 'i', 'j',
216 'k', 207 'k',
217 }; 208 };
218 209
219 EXPECT_TRUE(framer.ProcessInput(StringPiece(AsChars(input), 210 EXPECT_TRUE(framer.ProcessInput(StringPiece(AsChars(input),
220 arraysize(input)))); 211 arraysize(input))));
221 EXPECT_EQ(0u, framer.InputBytesRemaining()); 212 EXPECT_EQ(0u, framer.InputBytesRemaining());
222 ASSERT_EQ(1u, visitor.message_tags_.size()); 213 ASSERT_EQ(1u, visitor.messages_.size());
223 EXPECT_EQ(0xFFAA7733, visitor.message_tags_[0]); 214 EXPECT_EQ(0xFFAA7733, visitor.messages_[0].tag);
224 ASSERT_EQ(1u, visitor.message_maps_.size()); 215 EXPECT_EQ(2u, visitor.messages_[0].tag_value_map.size());
225 EXPECT_EQ(2u, visitor.message_maps_[0].size()); 216 EXPECT_EQ("abcdef",visitor.messages_[0].tag_value_map[0x12345678]);
Ryan Hamilton 2012/12/22 22:31:32 nit: missing space.
226 EXPECT_EQ("abcdef",visitor.message_maps_[0][0x12345678]); 217 EXPECT_EQ("ghijk", visitor.messages_[0].tag_value_map[0x12345679]);
227 EXPECT_EQ("ghijk", visitor.message_maps_[0][0x12345679]);
228 } 218 }
229 219
230 TEST(CryptoFramerTest, ProcessInputWithThreeKeys) { 220 TEST(CryptoFramerTest, ProcessInputWithThreeKeys) {
231 test::TestCryptoVisitor visitor; 221 test::TestCryptoVisitor visitor;
232 CryptoFramer framer; 222 CryptoFramer framer;
233 framer.set_visitor(&visitor); 223 framer.set_visitor(&visitor);
234 224
235 unsigned char input[] = { 225 unsigned char input[] = {
236 // tag 226 // tag
237 0x33, 0x77, 0xAA, 0xFF, 227 0x33, 0x77, 0xAA, 0xFF,
(...skipping 20 matching lines...) Expand all
258 'g', 'h', 'i', 'j', 248 'g', 'h', 'i', 'j',
259 'k', 249 'k',
260 // value 3 250 // value 3
261 'l', 'm', 'n', 'o', 251 'l', 'm', 'n', 'o',
262 'p', 'q', 'r', 252 'p', 'q', 'r',
263 }; 253 };
264 254
265 EXPECT_TRUE(framer.ProcessInput(StringPiece(AsChars(input), 255 EXPECT_TRUE(framer.ProcessInput(StringPiece(AsChars(input),
266 arraysize(input)))); 256 arraysize(input))));
267 EXPECT_EQ(0u, framer.InputBytesRemaining()); 257 EXPECT_EQ(0u, framer.InputBytesRemaining());
268 ASSERT_EQ(1u, visitor.message_tags_.size()); 258 ASSERT_EQ(1u, visitor.messages_.size());
269 EXPECT_EQ(0xFFAA7733, visitor.message_tags_[0]); 259 EXPECT_EQ(0xFFAA7733, visitor.messages_[0].tag);
270 ASSERT_EQ(1u, visitor.message_maps_.size()); 260 EXPECT_EQ(3u, visitor.messages_[0].tag_value_map.size());
271 EXPECT_EQ(3u, visitor.message_maps_[0].size()); 261 EXPECT_EQ("abcdef",visitor.messages_[0].tag_value_map[0x12345678]);
Ryan Hamilton 2012/12/22 22:31:32 nit: missing space.
272 EXPECT_EQ("abcdef",visitor.message_maps_[0][0x12345678]); 262 EXPECT_EQ("ghijk", visitor.messages_[0].tag_value_map[0x12345679]);
273 EXPECT_EQ("ghijk", visitor.message_maps_[0][0x12345679]); 263 EXPECT_EQ("lmnopqr", visitor.messages_[0].tag_value_map[0x1234567A]);
274 EXPECT_EQ("lmnopqr", visitor.message_maps_[0][0x1234567A]);
275 } 264 }
276 265
277 TEST(CryptoFramerTest, ProcessInputIncrementally) { 266 TEST(CryptoFramerTest, ProcessInputIncrementally) {
278 test::TestCryptoVisitor visitor; 267 test::TestCryptoVisitor visitor;
279 CryptoFramer framer; 268 CryptoFramer framer;
280 framer.set_visitor(&visitor); 269 framer.set_visitor(&visitor);
281 270
282 unsigned char input[] = { 271 unsigned char input[] = {
283 // tag 272 // tag
284 0x33, 0x77, 0xAA, 0xFF, 273 0x33, 0x77, 0xAA, 0xFF,
(...skipping 12 matching lines...) Expand all
297 'e', 'f', 286 'e', 'f',
298 // value 2 287 // value 2
299 'g', 'h', 'i', 'j', 288 'g', 'h', 'i', 'j',
300 'k', 289 'k',
301 }; 290 };
302 291
303 for (size_t i = 0; i < arraysize(input); i++) { 292 for (size_t i = 0; i < arraysize(input); i++) {
304 EXPECT_TRUE(framer.ProcessInput(StringPiece(AsChars(input)+ i, 1))); 293 EXPECT_TRUE(framer.ProcessInput(StringPiece(AsChars(input)+ i, 1)));
305 } 294 }
306 EXPECT_EQ(0u, framer.InputBytesRemaining()); 295 EXPECT_EQ(0u, framer.InputBytesRemaining());
307 ASSERT_EQ(1u, visitor.message_tags_.size()); 296 ASSERT_EQ(1u, visitor.messages_.size());
308 EXPECT_EQ(0xFFAA7733, visitor.message_tags_[0]); 297 EXPECT_EQ(0xFFAA7733, visitor.messages_[0].tag);
309 ASSERT_EQ(1u, visitor.message_maps_.size()); 298 EXPECT_EQ(2u, visitor.messages_[0].tag_value_map.size());
310 EXPECT_EQ(2u, visitor.message_maps_[0].size()); 299 EXPECT_EQ("abcdef",visitor.messages_[0].tag_value_map[0x12345678]);
Ryan Hamilton 2012/12/22 22:31:32 nit: missing space.
311 EXPECT_EQ("abcdef",visitor.message_maps_[0][0x12345678]); 300 EXPECT_EQ("ghijk", visitor.messages_[0].tag_value_map[0x12345679]);
312 EXPECT_EQ("ghijk", visitor.message_maps_[0][0x12345679]);
313 } 301 }
314 302
315 TEST(CryptoFramerTest, ProcessInputTagsOutOfOrder) { 303 TEST(CryptoFramerTest, ProcessInputTagsOutOfOrder) {
316 test::TestCryptoVisitor visitor; 304 test::TestCryptoVisitor visitor;
317 CryptoFramer framer; 305 CryptoFramer framer;
318 framer.set_visitor(&visitor); 306 framer.set_visitor(&visitor);
319 307
320 unsigned char input[] = { 308 unsigned char input[] = {
321 // tag 309 // tag
322 0x33, 0x77, 0xAA, 0xFF, 310 0x33, 0x77, 0xAA, 0xFF,
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 // padding 379 // padding
392 0x05, 0x00, 380 0x05, 0x00,
393 }; 381 };
394 382
395 EXPECT_FALSE(framer.ProcessInput(StringPiece(AsChars(input), 383 EXPECT_FALSE(framer.ProcessInput(StringPiece(AsChars(input),
396 arraysize(input)))); 384 arraysize(input))));
397 EXPECT_EQ(QUIC_CRYPTO_INVALID_VALUE_LENGTH, framer.error()); 385 EXPECT_EQ(QUIC_CRYPTO_INVALID_VALUE_LENGTH, framer.error());
398 } 386 }
399 387
400 } // namespace net 388 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698