• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 #include "net/quic/quic_server.h"
6 
7 #include "net/quic/crypto/quic_random.h"
8 #include "net/quic/quic_utils.h"
9 #include "net/quic/test_tools/mock_quic_dispatcher.h"
10 #include "net/quic/test_tools/quic_test_utils.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 
13 using ::testing::_;
14 
15 namespace net {
16 namespace test {
17 
18 namespace {
19 
20 // TODO(dmz) Remove "Chrome" part of name once net/tools/quic is deleted.
21 class QuicChromeServerDispatchPacketTest : public ::testing::Test {
22  public:
QuicChromeServerDispatchPacketTest()23   QuicChromeServerDispatchPacketTest()
24       : crypto_config_("blah", QuicRandom::GetInstance()),
25         dispatcher_(config_,
26                     crypto_config_,
27                     new QuicDispatcher::DefaultPacketWriterFactory(),
28                     &helper_) {
29     dispatcher_.Initialize(NULL);
30   }
31 
DispatchPacket(const QuicEncryptedPacket & packet)32   void DispatchPacket(const QuicEncryptedPacket& packet) {
33     IPEndPoint client_addr, server_addr;
34     dispatcher_.ProcessPacket(server_addr, client_addr, packet);
35   }
36 
37  protected:
38   QuicConfig config_;
39   QuicCryptoServerConfig crypto_config_;
40   MockHelper helper_;
41   MockQuicDispatcher dispatcher_;
42 };
43 
TEST_F(QuicChromeServerDispatchPacketTest,DispatchPacket)44 TEST_F(QuicChromeServerDispatchPacketTest, DispatchPacket) {
45   unsigned char valid_packet[] = {
46     // public flags (8 byte connection_id)
47     0x3C,
48     // connection_id
49     0x10, 0x32, 0x54, 0x76,
50     0x98, 0xBA, 0xDC, 0xFE,
51     // packet sequence number
52     0xBC, 0x9A, 0x78, 0x56,
53     0x34, 0x12,
54     // private flags
55     0x00 };
56   QuicEncryptedPacket encrypted_valid_packet(QuicUtils::AsChars(valid_packet),
57                                              arraysize(valid_packet), false);
58 
59   EXPECT_CALL(dispatcher_, ProcessPacket(_, _, _)).Times(1);
60   DispatchPacket(encrypted_valid_packet);
61 }
62 
63 }  // namespace
64 }  // namespace test
65 }  // namespace net
66