| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_dispatcher.h" | 5 #include "net/tools/quic/quic_dispatcher.h" |
| 6 | 6 |
| 7 #include <ostream> | 7 #include <ostream> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/strings/string_piece.h" | 10 #include "base/strings/string_piece.h" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 #include "net/tools/quic/quic_time_wait_list_manager.h" | 22 #include "net/tools/quic/quic_time_wait_list_manager.h" |
| 23 #include "net/tools/quic/test_tools/quic_dispatcher_peer.h" | 23 #include "net/tools/quic/test_tools/quic_dispatcher_peer.h" |
| 24 #include "net/tools/quic/test_tools/quic_test_utils.h" | 24 #include "net/tools/quic/test_tools/quic_test_utils.h" |
| 25 #include "testing/gmock/include/gmock/gmock.h" | 25 #include "testing/gmock/include/gmock/gmock.h" |
| 26 #include "testing/gtest/include/gtest/gtest.h" | 26 #include "testing/gtest/include/gtest/gtest.h" |
| 27 | 27 |
| 28 using base::StringPiece; | 28 using base::StringPiece; |
| 29 using net::EpollServer; | 29 using net::EpollServer; |
| 30 using net::test::ConstructEncryptedPacket; | 30 using net::test::ConstructEncryptedPacket; |
| 31 using net::test::MockConnection; | 31 using net::test::MockConnection; |
| 32 using net::test::MockSession; | |
| 33 using net::test::ValueRestore; | 32 using net::test::ValueRestore; |
| 34 using std::string; | 33 using std::string; |
| 35 using std::vector; | 34 using std::vector; |
| 36 using testing::DoAll; | 35 using testing::DoAll; |
| 37 using testing::InSequence; | 36 using testing::InSequence; |
| 38 using testing::Invoke; | 37 using testing::Invoke; |
| 39 using testing::WithoutArgs; | 38 using testing::WithoutArgs; |
| 40 using testing::_; | 39 using testing::_; |
| 41 | 40 |
| 42 namespace net { | 41 namespace net { |
| 43 namespace tools { | 42 namespace tools { |
| 44 namespace test { | 43 namespace test { |
| 45 namespace { | 44 namespace { |
| 46 | 45 |
| 47 class TestServerSession : public QuicServerSession { | 46 class TestQuicSpdyServerSession : public QuicServerSession { |
| 48 public: | 47 public: |
| 49 TestServerSession(const QuicConfig& config, | 48 TestQuicSpdyServerSession(const QuicConfig& config, |
| 50 QuicConnection* connection, | 49 QuicConnection* connection, |
| 51 const QuicCryptoServerConfig* crypto_config) | 50 const QuicCryptoServerConfig* crypto_config) |
| 52 : QuicServerSession(config, connection, nullptr, crypto_config), | 51 : QuicServerSession(config, connection, nullptr, crypto_config), |
| 53 crypto_stream_(QuicServerSession::GetCryptoStream()) {} | 52 crypto_stream_(QuicServerSession::GetCryptoStream()) {} |
| 54 ~TestServerSession() override{}; | 53 ~TestQuicSpdyServerSession() override{}; |
| 55 | 54 |
| 56 MOCK_METHOD2(OnConnectionClosed, void(QuicErrorCode error, bool from_peer)); | 55 MOCK_METHOD2(OnConnectionClosed, void(QuicErrorCode error, bool from_peer)); |
| 57 MOCK_METHOD1(CreateIncomingDataStream, QuicDataStream*(QuicStreamId id)); | 56 MOCK_METHOD1(CreateIncomingDynamicStream, QuicDataStream*(QuicStreamId id)); |
| 58 MOCK_METHOD0(CreateOutgoingDataStream, QuicDataStream*()); | 57 MOCK_METHOD0(CreateOutgoingDynamicStream, QuicDataStream*()); |
| 59 | 58 |
| 60 void SetCryptoStream(QuicCryptoServerStream* crypto_stream) { | 59 void SetCryptoStream(QuicCryptoServerStream* crypto_stream) { |
| 61 crypto_stream_ = crypto_stream; | 60 crypto_stream_ = crypto_stream; |
| 62 } | 61 } |
| 63 | 62 |
| 64 QuicCryptoServerStream* GetCryptoStream() override { return crypto_stream_; } | 63 QuicCryptoServerStream* GetCryptoStream() override { return crypto_stream_; } |
| 65 | 64 |
| 66 private: | 65 private: |
| 67 QuicCryptoServerStream* crypto_stream_; | 66 QuicCryptoServerStream* crypto_stream_; |
| 68 | 67 |
| 69 DISALLOW_COPY_AND_ASSIGN(TestServerSession); | 68 DISALLOW_COPY_AND_ASSIGN(TestQuicSpdyServerSession); |
| 70 }; | 69 }; |
| 71 | 70 |
| 72 class TestDispatcher : public QuicDispatcher { | 71 class TestDispatcher : public QuicDispatcher { |
| 73 public: | 72 public: |
| 74 TestDispatcher(const QuicConfig& config, | 73 TestDispatcher(const QuicConfig& config, |
| 75 const QuicCryptoServerConfig* crypto_config, | 74 const QuicCryptoServerConfig* crypto_config, |
| 76 EpollServer* eps) | 75 EpollServer* eps) |
| 77 : QuicDispatcher(config, | 76 : QuicDispatcher(config, |
| 78 crypto_config, | 77 crypto_config, |
| 79 QuicSupportedVersions(), | 78 QuicSupportedVersions(), |
| (...skipping 27 matching lines...) Expand all Loading... |
| 107 | 106 |
| 108 private: | 107 private: |
| 109 QuicDispatcher* dispatcher_; | 108 QuicDispatcher* dispatcher_; |
| 110 }; | 109 }; |
| 111 | 110 |
| 112 QuicServerSession* CreateSession(QuicDispatcher* dispatcher, | 111 QuicServerSession* CreateSession(QuicDispatcher* dispatcher, |
| 113 const QuicConfig& config, | 112 const QuicConfig& config, |
| 114 QuicConnectionId connection_id, | 113 QuicConnectionId connection_id, |
| 115 const IPEndPoint& client_address, | 114 const IPEndPoint& client_address, |
| 116 const QuicCryptoServerConfig* crypto_config, | 115 const QuicCryptoServerConfig* crypto_config, |
| 117 TestServerSession** session) { | 116 TestQuicSpdyServerSession** session) { |
| 118 MockServerConnection* connection = | 117 MockServerConnection* connection = |
| 119 new MockServerConnection(connection_id, dispatcher); | 118 new MockServerConnection(connection_id, dispatcher); |
| 120 *session = new TestServerSession(config, connection, crypto_config); | 119 *session = new TestQuicSpdyServerSession(config, connection, crypto_config); |
| 121 connection->set_visitor(*session); | 120 connection->set_visitor(*session); |
| 122 ON_CALL(*connection, SendConnectionClose(_)).WillByDefault( | 121 ON_CALL(*connection, SendConnectionClose(_)).WillByDefault( |
| 123 WithoutArgs(Invoke( | 122 WithoutArgs(Invoke( |
| 124 connection, &MockServerConnection::UnregisterOnConnectionClosed))); | 123 connection, &MockServerConnection::UnregisterOnConnectionClosed))); |
| 125 EXPECT_CALL(*reinterpret_cast<MockConnection*>((*session)->connection()), | 124 EXPECT_CALL(*reinterpret_cast<MockConnection*>((*session)->connection()), |
| 126 ProcessUdpPacket(_, client_address, _)); | 125 ProcessUdpPacket(_, client_address, _)); |
| 127 | 126 |
| 128 return *session; | 127 return *session; |
| 129 } | 128 } |
| 130 | 129 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 196 time_wait_list_manager_); | 195 time_wait_list_manager_); |
| 197 } | 196 } |
| 198 | 197 |
| 199 EpollServer eps_; | 198 EpollServer eps_; |
| 200 QuicEpollConnectionHelper helper_; | 199 QuicEpollConnectionHelper helper_; |
| 201 QuicConfig config_; | 200 QuicConfig config_; |
| 202 QuicCryptoServerConfig crypto_config_; | 201 QuicCryptoServerConfig crypto_config_; |
| 203 IPEndPoint server_address_; | 202 IPEndPoint server_address_; |
| 204 TestDispatcher dispatcher_; | 203 TestDispatcher dispatcher_; |
| 205 MockTimeWaitListManager* time_wait_list_manager_; | 204 MockTimeWaitListManager* time_wait_list_manager_; |
| 206 TestServerSession* session1_; | 205 TestQuicSpdyServerSession* session1_; |
| 207 TestServerSession* session2_; | 206 TestQuicSpdyServerSession* session2_; |
| 208 string data_; | 207 string data_; |
| 209 }; | 208 }; |
| 210 | 209 |
| 211 TEST_F(QuicDispatcherTest, ProcessPackets) { | 210 TEST_F(QuicDispatcherTest, ProcessPackets) { |
| 212 IPEndPoint client_address(net::test::Loopback4(), 1); | 211 IPEndPoint client_address(net::test::Loopback4(), 1); |
| 213 server_address_ = IPEndPoint(net::test::Any4(), 5); | 212 server_address_ = IPEndPoint(net::test::Any4(), 5); |
| 214 | 213 |
| 215 EXPECT_CALL(dispatcher_, CreateQuicSession(1, _, client_address)) | 214 EXPECT_CALL(dispatcher_, CreateQuicSession(1, _, client_address)) |
| 216 .WillOnce(testing::Return(CreateSession(&dispatcher_, config_, 1, | 215 .WillOnce(testing::Return(CreateSession(&dispatcher_, config_, 1, |
| 217 client_address, &crypto_config_, | 216 client_address, &crypto_config_, |
| (...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 746 // And we'll resume where we left off when we get another call. | 745 // And we'll resume where we left off when we get another call. |
| 747 EXPECT_CALL(*connection2(), OnCanWrite()); | 746 EXPECT_CALL(*connection2(), OnCanWrite()); |
| 748 dispatcher_.OnCanWrite(); | 747 dispatcher_.OnCanWrite(); |
| 749 EXPECT_FALSE(dispatcher_.HasPendingWrites()); | 748 EXPECT_FALSE(dispatcher_.HasPendingWrites()); |
| 750 } | 749 } |
| 751 | 750 |
| 752 } // namespace | 751 } // namespace |
| 753 } // namespace test | 752 } // namespace test |
| 754 } // namespace tools | 753 } // namespace tools |
| 755 } // namespace net | 754 } // namespace net |
| OLD | NEW |