| // Copyright 2014 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/quic/quic_server.h" |
| |
| #include "net/quic/crypto/quic_random.h" |
| #include "net/quic/quic_utils.h" |
| #include "net/quic/test_tools/mock_quic_dispatcher.h" |
| #include "net/quic/test_tools/quic_test_utils.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| using ::testing::_; |
| |
| namespace net { |
| namespace test { |
| |
| namespace { |
| |
| // TODO(dmz) Remove "Chrome" part of name once net/tools/quic is deleted. |
| class QuicChromeServerDispatchPacketTest : public ::testing::Test { |
| public: |
| QuicChromeServerDispatchPacketTest() |
| : crypto_config_("blah", QuicRandom::GetInstance()), |
| dispatcher_(config_, |
| crypto_config_, |
| new QuicDispatcher::DefaultPacketWriterFactory(), |
| &helper_) { |
| dispatcher_.Initialize(nullptr); |
| } |
| |
| void DispatchPacket(const QuicEncryptedPacket& packet) { |
| IPEndPoint client_addr, server_addr; |
| dispatcher_.ProcessPacket(server_addr, client_addr, packet); |
| } |
| |
| protected: |
| QuicConfig config_; |
| QuicCryptoServerConfig crypto_config_; |
| MockHelper helper_; |
| MockQuicDispatcher dispatcher_; |
| }; |
| |
| TEST_F(QuicChromeServerDispatchPacketTest, DispatchPacket) { |
| unsigned char valid_packet[] = { |
| // public flags (8 byte connection_id) |
| 0x3C, |
| // connection_id |
| 0x10, 0x32, 0x54, 0x76, |
| 0x98, 0xBA, 0xDC, 0xFE, |
| // packet sequence number |
| 0xBC, 0x9A, 0x78, 0x56, |
| 0x34, 0x12, |
| // private flags |
| 0x00 }; |
| 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 |