mock_stream.h 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. //
  2. //
  3. // Copyright 2017 gRPC authors.
  4. //
  5. // Licensed under the Apache License, Version 2.0 (the "License");
  6. // you may not use this file except in compliance with the License.
  7. // You may obtain a copy of the License at
  8. //
  9. // http://www.apache.org/licenses/LICENSE-2.0
  10. //
  11. // Unless required by applicable law or agreed to in writing, software
  12. // distributed under the License is distributed on an "AS IS" BASIS,
  13. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. // See the License for the specific language governing permissions and
  15. // limitations under the License.
  16. //
  17. //
  18. #ifndef GRPCPP_TEST_MOCK_STREAM_H
  19. #define GRPCPP_TEST_MOCK_STREAM_H
  20. #include <stdint.h>
  21. #include <gmock/gmock.h>
  22. #include <grpcpp/impl/call.h>
  23. #include <grpcpp/support/async_stream.h>
  24. #include <grpcpp/support/async_unary_call.h>
  25. #include <grpcpp/support/sync_stream.h>
  26. namespace grpc {
  27. namespace testing {
  28. template <class R>
  29. class MockClientReader : public grpc::ClientReaderInterface<R> {
  30. public:
  31. MockClientReader() = default;
  32. /// ClientStreamingInterface
  33. MOCK_METHOD0_T(Finish, Status());
  34. /// ReaderInterface
  35. MOCK_METHOD1_T(NextMessageSize, bool(uint32_t*));
  36. MOCK_METHOD1_T(Read, bool(R*));
  37. /// ClientReaderInterface
  38. MOCK_METHOD0_T(WaitForInitialMetadata, void());
  39. };
  40. template <class W>
  41. class MockClientWriter : public grpc::ClientWriterInterface<W> {
  42. public:
  43. MockClientWriter() = default;
  44. /// ClientStreamingInterface
  45. MOCK_METHOD0_T(Finish, Status());
  46. /// WriterInterface
  47. MOCK_METHOD2_T(Write, bool(const W&, const WriteOptions));
  48. /// ClientWriterInterface
  49. MOCK_METHOD0_T(WritesDone, bool());
  50. };
  51. template <class W, class R>
  52. class MockClientReaderWriter : public grpc::ClientReaderWriterInterface<W, R> {
  53. public:
  54. MockClientReaderWriter() = default;
  55. /// ClientStreamingInterface
  56. MOCK_METHOD0_T(Finish, Status());
  57. /// ReaderInterface
  58. MOCK_METHOD1_T(NextMessageSize, bool(uint32_t*));
  59. MOCK_METHOD1_T(Read, bool(R*));
  60. /// WriterInterface
  61. MOCK_METHOD2_T(Write, bool(const W&, const WriteOptions));
  62. /// ClientReaderWriterInterface
  63. MOCK_METHOD0_T(WaitForInitialMetadata, void());
  64. MOCK_METHOD0_T(WritesDone, bool());
  65. };
  66. /// TODO: We do not support mocking an async RPC for now.
  67. template <class R>
  68. class MockClientAsyncResponseReader
  69. : public grpc::ClientAsyncResponseReaderInterface<R> {
  70. public:
  71. MockClientAsyncResponseReader() = default;
  72. /// ClientAsyncResponseReaderInterface
  73. MOCK_METHOD0_T(StartCall, void());
  74. MOCK_METHOD1_T(ReadInitialMetadata, void(void*));
  75. MOCK_METHOD3_T(Finish, void(R*, Status*, void*));
  76. };
  77. template <class R>
  78. class MockClientAsyncReader : public ClientAsyncReaderInterface<R> {
  79. public:
  80. MockClientAsyncReader() = default;
  81. /// ClientAsyncStreamingInterface
  82. MOCK_METHOD1_T(StartCall, void(void*));
  83. MOCK_METHOD1_T(ReadInitialMetadata, void(void*));
  84. MOCK_METHOD2_T(Finish, void(Status*, void*));
  85. /// AsyncReaderInterface
  86. MOCK_METHOD2_T(Read, void(R*, void*));
  87. };
  88. template <class W>
  89. class MockClientAsyncWriter : public grpc::ClientAsyncWriterInterface<W> {
  90. public:
  91. MockClientAsyncWriter() = default;
  92. /// ClientAsyncStreamingInterface
  93. MOCK_METHOD1_T(StartCall, void(void*));
  94. MOCK_METHOD1_T(ReadInitialMetadata, void(void*));
  95. MOCK_METHOD2_T(Finish, void(Status*, void*));
  96. /// AsyncWriterInterface
  97. MOCK_METHOD2_T(Write, void(const W&, void*));
  98. MOCK_METHOD3_T(Write, void(const W&, grpc::WriteOptions, void*));
  99. /// ClientAsyncWriterInterface
  100. MOCK_METHOD1_T(WritesDone, void(void*));
  101. };
  102. template <class W, class R>
  103. class MockClientAsyncReaderWriter
  104. : public ClientAsyncReaderWriterInterface<W, R> {
  105. public:
  106. MockClientAsyncReaderWriter() = default;
  107. /// ClientAsyncStreamingInterface
  108. MOCK_METHOD1_T(StartCall, void(void*));
  109. MOCK_METHOD1_T(ReadInitialMetadata, void(void*));
  110. MOCK_METHOD2_T(Finish, void(Status*, void*));
  111. /// AsyncWriterInterface
  112. MOCK_METHOD2_T(Write, void(const W&, void*));
  113. MOCK_METHOD3_T(Write, void(const W&, grpc::WriteOptions, void*));
  114. /// AsyncReaderInterface
  115. MOCK_METHOD2_T(Read, void(R*, void*));
  116. /// ClientAsyncReaderWriterInterface
  117. MOCK_METHOD1_T(WritesDone, void(void*));
  118. };
  119. template <class R>
  120. class MockServerReader : public grpc::ServerReaderInterface<R> {
  121. public:
  122. MockServerReader() = default;
  123. /// ServerStreamingInterface
  124. MOCK_METHOD0_T(SendInitialMetadata, void());
  125. /// ReaderInterface
  126. MOCK_METHOD1_T(NextMessageSize, bool(uint32_t*));
  127. MOCK_METHOD1_T(Read, bool(R*));
  128. };
  129. template <class W>
  130. class MockServerWriter : public grpc::ServerWriterInterface<W> {
  131. public:
  132. MockServerWriter() = default;
  133. /// ServerStreamingInterface
  134. MOCK_METHOD0_T(SendInitialMetadata, void());
  135. /// WriterInterface
  136. MOCK_METHOD2_T(Write, bool(const W&, const WriteOptions));
  137. };
  138. template <class W, class R>
  139. class MockServerReaderWriter : public grpc::ServerReaderWriterInterface<W, R> {
  140. public:
  141. MockServerReaderWriter() = default;
  142. /// ServerStreamingInterface
  143. MOCK_METHOD0_T(SendInitialMetadata, void());
  144. /// ReaderInterface
  145. MOCK_METHOD1_T(NextMessageSize, bool(uint32_t*));
  146. MOCK_METHOD1_T(Read, bool(R*));
  147. /// WriterInterface
  148. MOCK_METHOD2_T(Write, bool(const W&, const WriteOptions));
  149. };
  150. } // namespace testing
  151. } // namespace grpc
  152. #endif // GRPCPP_TEST_MOCK_STREAM_H