| // |
| // |
| // Copyright 2019 gRPC authors. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| // |
| // |
| |
| #ifndef GRPC_TEST_CPP_IOS_CRONETTESTS_TESTHELPER_H |
| #define GRPC_TEST_CPP_IOS_CRONETTESTS_TESTHELPER_H |
| |
| #import <XCTest/XCTest.h> |
| |
| #import <map> |
| #import <sstream> |
| |
| #import <grpc/support/time.h> |
| #import <grpcpp/support/client_interceptor.h> |
| #import <grpcpp/support/config.h> |
| #import <grpcpp/support/string_ref.h> |
| |
| #import "src/proto/grpc/testing/echo.grpc.pb.h" |
| |
| const char* const kServerFinishAfterNReads = "server_finish_after_n_reads"; |
| const char* const kServerResponseStreamsToSend = "server_responses_to_send"; |
| const int kServerDefaultResponseStreamsToSend = 3; |
| const char* const kDebugInfoTrailerKey = "debug-info-bin"; |
| |
| std::string ToString(const grpc::string_ref& r); |
| void configureCronet(void); |
| bool CheckIsLocalhost(const std::string& addr); |
| |
| class PhonyInterceptor : public grpc::experimental::Interceptor { |
| public: |
| PhonyInterceptor() {} |
| virtual void Intercept(grpc::experimental::InterceptorBatchMethods* methods); |
| static void Reset(); |
| static int GetNumTimesRun(); |
| |
| private: |
| static std::atomic<int> num_times_run_; |
| static std::atomic<int> num_times_run_reverse_; |
| }; |
| |
| class PhonyInterceptorFactory |
| : public grpc::experimental::ClientInterceptorFactoryInterface { |
| public: |
| virtual grpc::experimental::Interceptor* CreateClientInterceptor( |
| grpc::experimental::ClientRpcInfo* info) override { |
| return new PhonyInterceptor(); |
| } |
| }; |
| |
| class TestServiceImpl : public grpc::testing::EchoTestService::Service { |
| public: |
| grpc::Status Echo(grpc::ServerContext* context, |
| const grpc::testing::EchoRequest* request, |
| grpc::testing::EchoResponse* response); |
| grpc::Status RequestStream( |
| grpc::ServerContext* context, |
| grpc::ServerReader<grpc::testing::EchoRequest>* reader, |
| grpc::testing::EchoResponse* response); |
| grpc::Status ResponseStream( |
| grpc::ServerContext* context, const grpc::testing::EchoRequest* request, |
| grpc::ServerWriter<grpc::testing::EchoResponse>* writer); |
| |
| grpc::Status BidiStream( |
| grpc::ServerContext* context, |
| grpc::ServerReaderWriter<grpc::testing::EchoResponse, |
| grpc::testing::EchoRequest>* stream); |
| }; |
| |
| #endif // GRPC_TEST_CPP_IOS_CRONETTESTS_TESTHELPER_H |