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