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: 22 QuicServerDispatchPacketTest() 23 : crypto_config_("blah", QuicRandom::GetInstance()), 24 dispatcher_(config_, crypto_config_, &eps_) { 25 dispatcher_.Initialize(1234); 26 } 27 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 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