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