mock_mdns_socket_factory.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  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
  3. // found in the LICENSE file.
  4. #ifndef NET_DNS_MOCK_MDNS_SOCKET_FACTORY_H_
  5. #define NET_DNS_MOCK_MDNS_SOCKET_FACTORY_H_
  6. #include <stdint.h>
  7. #include <memory>
  8. #include <string>
  9. #include <vector>
  10. #include "net/base/completion_once_callback.h"
  11. #include "net/base/completion_repeating_callback.h"
  12. #include "net/dns/mdns_client_impl.h"
  13. #include "net/log/net_log_with_source.h"
  14. #include "testing/gmock/include/gmock/gmock.h"
  15. namespace net {
  16. class IPAddress;
  17. class MockMDnsDatagramServerSocket : public DatagramServerSocket {
  18. public:
  19. explicit MockMDnsDatagramServerSocket(AddressFamily address_family);
  20. ~MockMDnsDatagramServerSocket() override;
  21. // DatagramServerSocket implementation:
  22. MOCK_METHOD1(Listen, int(const IPEndPoint& address));
  23. MOCK_METHOD4(RecvFrom,
  24. int(IOBuffer* buffer,
  25. int size,
  26. IPEndPoint* address,
  27. CompletionOnceCallback callback));
  28. int SendTo(IOBuffer* buf,
  29. int buf_len,
  30. const IPEndPoint& address,
  31. CompletionOnceCallback callback) override;
  32. MOCK_METHOD3(SendToInternal,
  33. int(const std::string& packet,
  34. const std::string address,
  35. CompletionOnceCallback callback));
  36. MOCK_METHOD1(SetReceiveBufferSize, int(int32_t size));
  37. MOCK_METHOD1(SetSendBufferSize, int(int32_t size));
  38. MOCK_METHOD0(SetDoNotFragment, int());
  39. MOCK_METHOD1(SetMsgConfirm, void(bool confirm));
  40. MOCK_METHOD0(Close, void());
  41. MOCK_CONST_METHOD1(GetPeerAddress, int(IPEndPoint* address));
  42. int GetLocalAddress(IPEndPoint* address) const override;
  43. MOCK_METHOD0(UseNonBlockingIO, void());
  44. MOCK_CONST_METHOD0(NetLog, const NetLogWithSource&());
  45. MOCK_METHOD0(AllowAddressReuse, void());
  46. MOCK_METHOD0(AllowBroadcast, void());
  47. MOCK_METHOD0(AllowAddressSharingForMulticast, void());
  48. MOCK_CONST_METHOD1(JoinGroup, int(const IPAddress& group_address));
  49. MOCK_CONST_METHOD1(LeaveGroup, int(const IPAddress& address));
  50. MOCK_METHOD1(SetMulticastInterface, int(uint32_t interface_index));
  51. MOCK_METHOD1(SetMulticastTimeToLive, int(int ttl));
  52. MOCK_METHOD1(SetMulticastLoopbackMode, int(bool loopback));
  53. MOCK_METHOD1(SetDiffServCodePoint, int(DiffServCodePoint dscp));
  54. MOCK_METHOD0(DetachFromThread, void());
  55. void SetResponsePacket(const std::string& response_packet);
  56. int HandleRecvNow(IOBuffer* buffer,
  57. int size,
  58. IPEndPoint* address,
  59. CompletionOnceCallback callback);
  60. int HandleRecvLater(IOBuffer* buffer,
  61. int size,
  62. IPEndPoint* address,
  63. CompletionOnceCallback callback);
  64. private:
  65. std::string response_packet_;
  66. IPEndPoint local_address_;
  67. };
  68. class MockMDnsSocketFactory : public MDnsSocketFactory {
  69. public:
  70. MockMDnsSocketFactory();
  71. ~MockMDnsSocketFactory() override;
  72. void CreateSockets(
  73. std::vector<std::unique_ptr<DatagramServerSocket>>* sockets) override;
  74. void SimulateReceive(const uint8_t* packet, int size);
  75. MOCK_METHOD1(OnSendTo, void(const std::string&));
  76. private:
  77. int SendToInternal(const std::string& packet,
  78. const std::string& address,
  79. CompletionOnceCallback callback);
  80. // The latest receive callback is always saved, since the MDnsConnection
  81. // does not care which socket a packet is received on.
  82. int RecvFromInternal(IOBuffer* buffer,
  83. int size,
  84. IPEndPoint* address,
  85. CompletionOnceCallback callback);
  86. void CreateSocket(
  87. AddressFamily address_family,
  88. std::vector<std::unique_ptr<DatagramServerSocket>>* sockets);
  89. scoped_refptr<IOBuffer> recv_buffer_;
  90. int recv_buffer_size_;
  91. CompletionOnceCallback recv_callback_;
  92. };
  93. } // namespace net
  94. #endif // NET_DNS_MOCK_MDNS_SOCKET_FACTORY_H_