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 13using ::testing::_; 14 15namespace net { 16namespace test { 17 18namespace { 19 20// TODO(dmz) Remove "Chrome" part of name once net/tools/quic is deleted. 21class QuicChromeServerDispatchPacketTest : public ::testing::Test { 22 public: 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 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 44TEST_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