| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/tools/quic/quic_server.h" | 5 #include "net/tools/quic/quic_server.h" |
| 6 | 6 |
| 7 #include "net/quic/core/crypto/quic_random.h" | 7 #include "net/quic/core/crypto/quic_random.h" |
| 8 #include "net/quic/core/quic_utils.h" | 8 #include "net/quic/core/quic_utils.h" |
| 9 #include "net/quic/platform/api/quic_socket_address.h" | 9 #include "net/quic/platform/api/quic_socket_address.h" |
| 10 #include "net/quic/test_tools/crypto_test_utils.h" | 10 #include "net/quic/test_tools/crypto_test_utils.h" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 | 26 |
| 27 class MockQuicSimpleDispatcher : public QuicSimpleDispatcher { | 27 class MockQuicSimpleDispatcher : public QuicSimpleDispatcher { |
| 28 public: | 28 public: |
| 29 MockQuicSimpleDispatcher( | 29 MockQuicSimpleDispatcher( |
| 30 const QuicConfig& config, | 30 const QuicConfig& config, |
| 31 const QuicCryptoServerConfig* crypto_config, | 31 const QuicCryptoServerConfig* crypto_config, |
| 32 QuicVersionManager* version_manager, | 32 QuicVersionManager* version_manager, |
| 33 std::unique_ptr<QuicConnectionHelperInterface> helper, | 33 std::unique_ptr<QuicConnectionHelperInterface> helper, |
| 34 std::unique_ptr<QuicCryptoServerStream::Helper> session_helper, | 34 std::unique_ptr<QuicCryptoServerStream::Helper> session_helper, |
| 35 std::unique_ptr<QuicAlarmFactory> alarm_factory, | 35 std::unique_ptr<QuicAlarmFactory> alarm_factory, |
| 36 QuicInMemoryCache* in_memory_cache) | 36 QuicHttpResponseCache* response_cache) |
| 37 : QuicSimpleDispatcher(config, | 37 : QuicSimpleDispatcher(config, |
| 38 crypto_config, | 38 crypto_config, |
| 39 version_manager, | 39 version_manager, |
| 40 std::move(helper), | 40 std::move(helper), |
| 41 std::move(session_helper), | 41 std::move(session_helper), |
| 42 std::move(alarm_factory), | 42 std::move(alarm_factory), |
| 43 in_memory_cache) {} | 43 response_cache) {} |
| 44 ~MockQuicSimpleDispatcher() override {} | 44 ~MockQuicSimpleDispatcher() override {} |
| 45 | 45 |
| 46 MOCK_METHOD0(OnCanWrite, void()); | 46 MOCK_METHOD0(OnCanWrite, void()); |
| 47 MOCK_CONST_METHOD0(HasPendingWrites, bool()); | 47 MOCK_CONST_METHOD0(HasPendingWrites, bool()); |
| 48 MOCK_CONST_METHOD0(HasChlosBuffered, bool()); | 48 MOCK_CONST_METHOD0(HasChlosBuffered, bool()); |
| 49 MOCK_METHOD1(ProcessBufferedChlos, void(size_t)); | 49 MOCK_METHOD1(ProcessBufferedChlos, void(size_t)); |
| 50 }; | 50 }; |
| 51 | 51 |
| 52 class TestQuicServer : public QuicServer { | 52 class TestQuicServer : public QuicServer { |
| 53 public: | 53 public: |
| 54 TestQuicServer() | 54 TestQuicServer() |
| 55 : QuicServer(CryptoTestUtils::ProofSourceForTesting(), | 55 : QuicServer(CryptoTestUtils::ProofSourceForTesting(), &response_cache_) { |
| 56 &in_memory_cache_) {} | 56 } |
| 57 | 57 |
| 58 ~TestQuicServer() override {} | 58 ~TestQuicServer() override {} |
| 59 | 59 |
| 60 MockQuicSimpleDispatcher* mock_dispatcher() { return mock_dispatcher_; } | 60 MockQuicSimpleDispatcher* mock_dispatcher() { return mock_dispatcher_; } |
| 61 | 61 |
| 62 protected: | 62 protected: |
| 63 QuicDispatcher* CreateQuicDispatcher() override { | 63 QuicDispatcher* CreateQuicDispatcher() override { |
| 64 mock_dispatcher_ = new MockQuicSimpleDispatcher( | 64 mock_dispatcher_ = new MockQuicSimpleDispatcher( |
| 65 config(), &crypto_config(), version_manager(), | 65 config(), &crypto_config(), version_manager(), |
| 66 std::unique_ptr<QuicEpollConnectionHelper>( | 66 std::unique_ptr<QuicEpollConnectionHelper>( |
| 67 new QuicEpollConnectionHelper(epoll_server(), | 67 new QuicEpollConnectionHelper(epoll_server(), |
| 68 QuicAllocator::BUFFER_POOL)), | 68 QuicAllocator::BUFFER_POOL)), |
| 69 std::unique_ptr<QuicCryptoServerStream::Helper>( | 69 std::unique_ptr<QuicCryptoServerStream::Helper>( |
| 70 new QuicSimpleCryptoServerStreamHelper(QuicRandom::GetInstance())), | 70 new QuicSimpleCryptoServerStreamHelper(QuicRandom::GetInstance())), |
| 71 std::unique_ptr<QuicEpollAlarmFactory>( | 71 std::unique_ptr<QuicEpollAlarmFactory>( |
| 72 new QuicEpollAlarmFactory(epoll_server())), | 72 new QuicEpollAlarmFactory(epoll_server())), |
| 73 &in_memory_cache_); | 73 &response_cache_); |
| 74 return mock_dispatcher_; | 74 return mock_dispatcher_; |
| 75 } | 75 } |
| 76 | 76 |
| 77 MockQuicSimpleDispatcher* mock_dispatcher_; | 77 MockQuicSimpleDispatcher* mock_dispatcher_; |
| 78 QuicInMemoryCache in_memory_cache_; | 78 QuicHttpResponseCache response_cache_; |
| 79 }; | 79 }; |
| 80 | 80 |
| 81 class QuicServerEpollInTest : public ::testing::Test { | 81 class QuicServerEpollInTest : public ::testing::Test { |
| 82 public: | 82 public: |
| 83 QuicServerEpollInTest() | 83 QuicServerEpollInTest() |
| 84 : port_(net::test::kTestPort), | 84 : port_(net::test::kTestPort), |
| 85 server_address_(QuicIpAddress::Loopback4(), port_) {} | 85 server_address_(QuicIpAddress::Loopback4(), port_) {} |
| 86 | 86 |
| 87 void StartListening() { | 87 void StartListening() { |
| 88 server_.CreateUDPSocketAndListen(server_address_); | 88 server_.CreateUDPSocketAndListen(server_address_); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 &crypto_config_, | 155 &crypto_config_, |
| 156 &version_manager_, | 156 &version_manager_, |
| 157 std::unique_ptr<QuicEpollConnectionHelper>( | 157 std::unique_ptr<QuicEpollConnectionHelper>( |
| 158 new QuicEpollConnectionHelper(&eps_, | 158 new QuicEpollConnectionHelper(&eps_, |
| 159 QuicAllocator::BUFFER_POOL)), | 159 QuicAllocator::BUFFER_POOL)), |
| 160 std::unique_ptr<QuicCryptoServerStream::Helper>( | 160 std::unique_ptr<QuicCryptoServerStream::Helper>( |
| 161 new QuicSimpleCryptoServerStreamHelper( | 161 new QuicSimpleCryptoServerStreamHelper( |
| 162 QuicRandom::GetInstance())), | 162 QuicRandom::GetInstance())), |
| 163 std::unique_ptr<QuicEpollAlarmFactory>( | 163 std::unique_ptr<QuicEpollAlarmFactory>( |
| 164 new QuicEpollAlarmFactory(&eps_)), | 164 new QuicEpollAlarmFactory(&eps_)), |
| 165 &in_memory_cache_) { | 165 &response_cache_) { |
| 166 dispatcher_.InitializeWithWriter(new QuicDefaultPacketWriter(1234)); | 166 dispatcher_.InitializeWithWriter(new QuicDefaultPacketWriter(1234)); |
| 167 } | 167 } |
| 168 | 168 |
| 169 void DispatchPacket(const QuicReceivedPacket& packet) { | 169 void DispatchPacket(const QuicReceivedPacket& packet) { |
| 170 QuicSocketAddress client_addr, server_addr; | 170 QuicSocketAddress client_addr, server_addr; |
| 171 dispatcher_.ProcessPacket(server_addr, client_addr, packet); | 171 dispatcher_.ProcessPacket(server_addr, client_addr, packet); |
| 172 } | 172 } |
| 173 | 173 |
| 174 protected: | 174 protected: |
| 175 QuicConfig config_; | 175 QuicConfig config_; |
| 176 QuicCryptoServerConfig crypto_config_; | 176 QuicCryptoServerConfig crypto_config_; |
| 177 QuicVersionManager version_manager_; | 177 QuicVersionManager version_manager_; |
| 178 EpollServer eps_; | 178 EpollServer eps_; |
| 179 QuicInMemoryCache in_memory_cache_; | 179 QuicHttpResponseCache response_cache_; |
| 180 MockQuicDispatcher dispatcher_; | 180 MockQuicDispatcher dispatcher_; |
| 181 }; | 181 }; |
| 182 | 182 |
| 183 TEST_F(QuicServerDispatchPacketTest, DispatchPacket) { | 183 TEST_F(QuicServerDispatchPacketTest, DispatchPacket) { |
| 184 // clang-format off | 184 // clang-format off |
| 185 unsigned char valid_packet[] = { | 185 unsigned char valid_packet[] = { |
| 186 // public flags (8 byte connection_id) | 186 // public flags (8 byte connection_id) |
| 187 0x3C, | 187 0x3C, |
| 188 // connection_id | 188 // connection_id |
| 189 0x10, 0x32, 0x54, 0x76, | 189 0x10, 0x32, 0x54, 0x76, |
| 190 0x98, 0xBA, 0xDC, 0xFE, | 190 0x98, 0xBA, 0xDC, 0xFE, |
| 191 // packet number | 191 // packet number |
| 192 0xBC, 0x9A, 0x78, 0x56, | 192 0xBC, 0x9A, 0x78, 0x56, |
| 193 0x34, 0x12, | 193 0x34, 0x12, |
| 194 // private flags | 194 // private flags |
| 195 0x00 | 195 0x00 |
| 196 }; | 196 }; |
| 197 // clang-format on | 197 // clang-format on |
| 198 QuicReceivedPacket encrypted_valid_packet( | 198 QuicReceivedPacket encrypted_valid_packet( |
| 199 reinterpret_cast<char*>(valid_packet), arraysize(valid_packet), | 199 reinterpret_cast<char*>(valid_packet), arraysize(valid_packet), |
| 200 QuicTime::Zero(), false); | 200 QuicTime::Zero(), false); |
| 201 | 201 |
| 202 EXPECT_CALL(dispatcher_, ProcessPacket(_, _, _)).Times(1); | 202 EXPECT_CALL(dispatcher_, ProcessPacket(_, _, _)).Times(1); |
| 203 DispatchPacket(encrypted_valid_packet); | 203 DispatchPacket(encrypted_valid_packet); |
| 204 } | 204 } |
| 205 | 205 |
| 206 } // namespace | 206 } // namespace |
| 207 } // namespace test | 207 } // namespace test |
| 208 } // namespace net | 208 } // namespace net |
| OLD | NEW |