quic_simple_server_test.cc 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. // Copyright 2014 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "net/tools/quic/quic_simple_server.h"
  5. #include <memory>
  6. #include "net/quic/address_utils.h"
  7. #include "net/third_party/quiche/src/quiche/quic/core/crypto/quic_random.h"
  8. #include "net/third_party/quiche/src/quiche/quic/core/quic_crypto_stream.h"
  9. #include "net/third_party/quiche/src/quiche/quic/core/quic_utils.h"
  10. #include "net/third_party/quiche/src/quiche/quic/platform/api/quic_test.h"
  11. #include "net/third_party/quiche/src/quiche/quic/test_tools/crypto_test_utils.h"
  12. #include "net/third_party/quiche/src/quiche/quic/test_tools/mock_quic_dispatcher.h"
  13. #include "net/third_party/quiche/src/quiche/quic/test_tools/quic_test_utils.h"
  14. #include "net/third_party/quiche/src/quiche/quic/tools/quic_memory_cache_backend.h"
  15. #include "net/tools/quic/quic_simple_server_session_helper.h"
  16. #include "testing/gtest/include/gtest/gtest.h"
  17. using ::testing::_;
  18. namespace net::test {
  19. // TODO(dmz) Remove "Chrome" part of name once net/tools/quic is deleted.
  20. class QuicChromeServerDispatchPacketTest : public ::testing::Test {
  21. public:
  22. QuicChromeServerDispatchPacketTest()
  23. : crypto_config_("blah",
  24. quic::QuicRandom::GetInstance(),
  25. quic::test::crypto_test_utils::ProofSourceForTesting(),
  26. quic::KeyExchangeSource::Default()),
  27. version_manager_(quic::AllSupportedVersions()),
  28. dispatcher_(&config_,
  29. &crypto_config_,
  30. &version_manager_,
  31. std::make_unique<quic::test::MockQuicConnectionHelper>(),
  32. std::make_unique<QuicSimpleServerSessionHelper>(
  33. quic::QuicRandom::GetInstance()),
  34. std::make_unique<quic::test::MockAlarmFactory>(),
  35. &memory_cache_backend_) {
  36. dispatcher_.InitializeWithWriter(nullptr);
  37. }
  38. void DispatchPacket(const quic::QuicReceivedPacket& packet) {
  39. IPEndPoint client_addr, server_addr;
  40. dispatcher_.ProcessPacket(ToQuicSocketAddress(server_addr),
  41. ToQuicSocketAddress(client_addr), packet);
  42. }
  43. protected:
  44. quic::QuicConfig config_;
  45. quic::QuicCryptoServerConfig crypto_config_;
  46. quic::QuicVersionManager version_manager_;
  47. quic::test::MockQuicDispatcher dispatcher_;
  48. quic::QuicMemoryCacheBackend memory_cache_backend_;
  49. };
  50. TEST_F(QuicChromeServerDispatchPacketTest, DispatchPacket) {
  51. unsigned char valid_packet[] = {// public flags (8 byte connection_id)
  52. 0x3C,
  53. // connection_id
  54. 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC,
  55. 0xFE,
  56. // packet sequence number
  57. 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
  58. // private flags
  59. 0x00};
  60. quic::QuicReceivedPacket encrypted_valid_packet(
  61. reinterpret_cast<char*>(valid_packet), std::size(valid_packet),
  62. quic::QuicTime::Zero(), false);
  63. EXPECT_CALL(dispatcher_, ProcessPacket(_, _, _)).Times(1);
  64. DispatchPacket(encrypted_valid_packet);
  65. }
  66. } // namespace net::test