xref: /aosp_15_r20/external/grpc-grpc/src/objective-c/tests/CppCronetTests/TestHelper.h (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1*cc02d7e2SAndroid Build Coastguard Worker //
2*cc02d7e2SAndroid Build Coastguard Worker //
3*cc02d7e2SAndroid Build Coastguard Worker // Copyright 2019 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 GRPC_TEST_CPP_IOS_CRONETTESTS_TESTHELPER_H
20*cc02d7e2SAndroid Build Coastguard Worker #define GRPC_TEST_CPP_IOS_CRONETTESTS_TESTHELPER_H
21*cc02d7e2SAndroid Build Coastguard Worker 
22*cc02d7e2SAndroid Build Coastguard Worker #import <XCTest/XCTest.h>
23*cc02d7e2SAndroid Build Coastguard Worker 
24*cc02d7e2SAndroid Build Coastguard Worker #import <map>
25*cc02d7e2SAndroid Build Coastguard Worker #import <sstream>
26*cc02d7e2SAndroid Build Coastguard Worker 
27*cc02d7e2SAndroid Build Coastguard Worker #import <grpc/support/time.h>
28*cc02d7e2SAndroid Build Coastguard Worker #import <grpcpp/support/client_interceptor.h>
29*cc02d7e2SAndroid Build Coastguard Worker #import <grpcpp/support/config.h>
30*cc02d7e2SAndroid Build Coastguard Worker #import <grpcpp/support/string_ref.h>
31*cc02d7e2SAndroid Build Coastguard Worker 
32*cc02d7e2SAndroid Build Coastguard Worker #import "src/proto/grpc/testing/echo.grpc.pb.h"
33*cc02d7e2SAndroid Build Coastguard Worker 
34*cc02d7e2SAndroid Build Coastguard Worker const char* const kServerFinishAfterNReads = "server_finish_after_n_reads";
35*cc02d7e2SAndroid Build Coastguard Worker const char* const kServerResponseStreamsToSend = "server_responses_to_send";
36*cc02d7e2SAndroid Build Coastguard Worker const int kServerDefaultResponseStreamsToSend = 3;
37*cc02d7e2SAndroid Build Coastguard Worker const char* const kDebugInfoTrailerKey = "debug-info-bin";
38*cc02d7e2SAndroid Build Coastguard Worker 
39*cc02d7e2SAndroid Build Coastguard Worker std::string ToString(const grpc::string_ref& r);
40*cc02d7e2SAndroid Build Coastguard Worker void configureCronet(void);
41*cc02d7e2SAndroid Build Coastguard Worker bool CheckIsLocalhost(const std::string& addr);
42*cc02d7e2SAndroid Build Coastguard Worker 
43*cc02d7e2SAndroid Build Coastguard Worker class PhonyInterceptor : public grpc::experimental::Interceptor {
44*cc02d7e2SAndroid Build Coastguard Worker  public:
PhonyInterceptor()45*cc02d7e2SAndroid Build Coastguard Worker   PhonyInterceptor() {}
46*cc02d7e2SAndroid Build Coastguard Worker   virtual void Intercept(grpc::experimental::InterceptorBatchMethods* methods);
47*cc02d7e2SAndroid Build Coastguard Worker   static void Reset();
48*cc02d7e2SAndroid Build Coastguard Worker   static int GetNumTimesRun();
49*cc02d7e2SAndroid Build Coastguard Worker 
50*cc02d7e2SAndroid Build Coastguard Worker  private:
51*cc02d7e2SAndroid Build Coastguard Worker   static std::atomic<int> num_times_run_;
52*cc02d7e2SAndroid Build Coastguard Worker   static std::atomic<int> num_times_run_reverse_;
53*cc02d7e2SAndroid Build Coastguard Worker };
54*cc02d7e2SAndroid Build Coastguard Worker 
55*cc02d7e2SAndroid Build Coastguard Worker class PhonyInterceptorFactory
56*cc02d7e2SAndroid Build Coastguard Worker     : public grpc::experimental::ClientInterceptorFactoryInterface {
57*cc02d7e2SAndroid Build Coastguard Worker  public:
CreateClientInterceptor(grpc::experimental::ClientRpcInfo * info)58*cc02d7e2SAndroid Build Coastguard Worker   virtual grpc::experimental::Interceptor* CreateClientInterceptor(
59*cc02d7e2SAndroid Build Coastguard Worker       grpc::experimental::ClientRpcInfo* info) override {
60*cc02d7e2SAndroid Build Coastguard Worker     return new PhonyInterceptor();
61*cc02d7e2SAndroid Build Coastguard Worker   }
62*cc02d7e2SAndroid Build Coastguard Worker };
63*cc02d7e2SAndroid Build Coastguard Worker 
64*cc02d7e2SAndroid Build Coastguard Worker class TestServiceImpl : public grpc::testing::EchoTestService::Service {
65*cc02d7e2SAndroid Build Coastguard Worker  public:
66*cc02d7e2SAndroid Build Coastguard Worker   grpc::Status Echo(grpc::ServerContext* context,
67*cc02d7e2SAndroid Build Coastguard Worker                     const grpc::testing::EchoRequest* request,
68*cc02d7e2SAndroid Build Coastguard Worker                     grpc::testing::EchoResponse* response);
69*cc02d7e2SAndroid Build Coastguard Worker   grpc::Status RequestStream(
70*cc02d7e2SAndroid Build Coastguard Worker       grpc::ServerContext* context,
71*cc02d7e2SAndroid Build Coastguard Worker       grpc::ServerReader<grpc::testing::EchoRequest>* reader,
72*cc02d7e2SAndroid Build Coastguard Worker       grpc::testing::EchoResponse* response);
73*cc02d7e2SAndroid Build Coastguard Worker   grpc::Status ResponseStream(
74*cc02d7e2SAndroid Build Coastguard Worker       grpc::ServerContext* context, const grpc::testing::EchoRequest* request,
75*cc02d7e2SAndroid Build Coastguard Worker       grpc::ServerWriter<grpc::testing::EchoResponse>* writer);
76*cc02d7e2SAndroid Build Coastguard Worker 
77*cc02d7e2SAndroid Build Coastguard Worker   grpc::Status BidiStream(
78*cc02d7e2SAndroid Build Coastguard Worker       grpc::ServerContext* context,
79*cc02d7e2SAndroid Build Coastguard Worker       grpc::ServerReaderWriter<grpc::testing::EchoResponse,
80*cc02d7e2SAndroid Build Coastguard Worker                                grpc::testing::EchoRequest>* stream);
81*cc02d7e2SAndroid Build Coastguard Worker };
82*cc02d7e2SAndroid Build Coastguard Worker 
83*cc02d7e2SAndroid Build Coastguard Worker #endif  // GRPC_TEST_CPP_IOS_CRONETTESTS_TESTHELPER_H
84