1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "net/quic/quic_server.h" 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "net/quic/crypto/quic_random.h" 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "net/quic/quic_utils.h" 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "net/quic/test_tools/mock_quic_dispatcher.h" 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "net/quic/test_tools/quic_test_utils.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "testing/gtest/include/gtest/gtest.h" 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdochusing ::testing::_; 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace net { 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace test { 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace { 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// TODO(dmz) Remove "Chrome" part of name once net/tools/quic is deleted. 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass QuicChromeServerDispatchPacketTest : public ::testing::Test { 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch QuicChromeServerDispatchPacketTest() 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch : crypto_config_("blah", QuicRandom::GetInstance()), 2503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) dispatcher_(config_, 2603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) crypto_config_, 2703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) new QuicDispatcher::DefaultPacketWriterFactory(), 2803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) &helper_) { 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch dispatcher_.Initialize(NULL); 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void DispatchPacket(const QuicEncryptedPacket& packet) { 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch IPEndPoint client_addr, server_addr; 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch dispatcher_.ProcessPacket(server_addr, client_addr, packet); 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch protected: 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch QuicConfig config_; 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch QuicCryptoServerConfig crypto_config_; 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch MockHelper helper_; 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch MockQuicDispatcher dispatcher_; 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 44116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST_F(QuicChromeServerDispatchPacketTest, DispatchPacket) { 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch unsigned char valid_packet[] = { 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // public flags (8 byte connection_id) 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 0x3C, 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // connection_id 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 0x10, 0x32, 0x54, 0x76, 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 0x98, 0xBA, 0xDC, 0xFE, 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // packet sequence number 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 0xBC, 0x9A, 0x78, 0x56, 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 0x34, 0x12, 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // private flags 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 0x00 }; 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch QuicEncryptedPacket encrypted_valid_packet(QuicUtils::AsChars(valid_packet), 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch arraysize(valid_packet), false); 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_CALL(dispatcher_, ProcessPacket(_, _, _)).Times(1); 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DispatchPacket(encrypted_valid_packet); 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace 64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace test 65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace net 66