// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "net/tools/quic/quic_server.h" #include "net/quic/crypto/quic_random.h" #include "net/quic/quic_utils.h" #include "net/quic/test_tools/crypto_test_utils.h" #include "net/quic/test_tools/mock_quic_dispatcher.h" #include "net/tools/quic/quic_epoll_connection_helper.h" #include "testing/gtest/include/gtest/gtest.h" using ::testing::_; using net::test::CryptoTestUtils; using net::test::MockQuicDispatcher; namespace net { namespace test { namespace { class QuicServerDispatchPacketTest : public ::testing::Test { public: QuicServerDispatchPacketTest() : crypto_config_("blah", QuicRandom::GetInstance(), CryptoTestUtils::ProofSourceForTesting()), dispatcher_(config_, &crypto_config_, new QuicEpollConnectionHelper(&eps_)) { dispatcher_.InitializeWithWriter(new QuicDefaultPacketWriter(1234)); } void DispatchPacket(const QuicEncryptedPacket& packet) { IPEndPoint client_addr, server_addr; dispatcher_.ProcessPacket(server_addr, client_addr, packet); } protected: QuicConfig config_; QuicCryptoServerConfig crypto_config_; EpollServer eps_; MockQuicDispatcher dispatcher_; }; TEST_F(QuicServerDispatchPacketTest, DispatchPacket) { // clang-format off unsigned char valid_packet[] = { // public flags (8 byte connection_id) 0x3C, // connection_id 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, // packet number 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12, // private flags 0x00 }; // clang-format on QuicEncryptedPacket encrypted_valid_packet(QuicUtils::AsChars(valid_packet), arraysize(valid_packet), false); EXPECT_CALL(dispatcher_, ProcessPacket(_, _, _)).Times(1); DispatchPacket(encrypted_valid_packet); } } // namespace } // namespace test } // namespace net