xref: /aosp_15_r20/external/grpc-grpc/test/cpp/interop/server_helper.cc (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1*cc02d7e2SAndroid Build Coastguard Worker //
2*cc02d7e2SAndroid Build Coastguard Worker //
3*cc02d7e2SAndroid Build Coastguard Worker // Copyright 2015 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 #include "test/cpp/interop/server_helper.h"
20*cc02d7e2SAndroid Build Coastguard Worker 
21*cc02d7e2SAndroid Build Coastguard Worker #include <memory>
22*cc02d7e2SAndroid Build Coastguard Worker 
23*cc02d7e2SAndroid Build Coastguard Worker #include "absl/flags/declare.h"
24*cc02d7e2SAndroid Build Coastguard Worker #include "absl/flags/flag.h"
25*cc02d7e2SAndroid Build Coastguard Worker 
26*cc02d7e2SAndroid Build Coastguard Worker #include <grpcpp/security/server_credentials.h>
27*cc02d7e2SAndroid Build Coastguard Worker 
28*cc02d7e2SAndroid Build Coastguard Worker #include "src/core/lib/surface/call_test_only.h"
29*cc02d7e2SAndroid Build Coastguard Worker #include "src/core/lib/transport/transport.h"
30*cc02d7e2SAndroid Build Coastguard Worker #include "test/cpp/util/test_credentials_provider.h"
31*cc02d7e2SAndroid Build Coastguard Worker 
32*cc02d7e2SAndroid Build Coastguard Worker ABSL_DECLARE_FLAG(bool, use_alts);
33*cc02d7e2SAndroid Build Coastguard Worker ABSL_DECLARE_FLAG(bool, use_tls);
34*cc02d7e2SAndroid Build Coastguard Worker ABSL_DECLARE_FLAG(std::string, custom_credentials_type);
35*cc02d7e2SAndroid Build Coastguard Worker 
36*cc02d7e2SAndroid Build Coastguard Worker namespace grpc {
37*cc02d7e2SAndroid Build Coastguard Worker namespace testing {
38*cc02d7e2SAndroid Build Coastguard Worker 
CreateInteropServerCredentials()39*cc02d7e2SAndroid Build Coastguard Worker std::shared_ptr<ServerCredentials> CreateInteropServerCredentials() {
40*cc02d7e2SAndroid Build Coastguard Worker   if (!absl::GetFlag(FLAGS_custom_credentials_type).empty()) {
41*cc02d7e2SAndroid Build Coastguard Worker     return GetCredentialsProvider()->GetServerCredentials(
42*cc02d7e2SAndroid Build Coastguard Worker         absl::GetFlag(FLAGS_custom_credentials_type));
43*cc02d7e2SAndroid Build Coastguard Worker   } else if (absl::GetFlag(FLAGS_use_alts)) {
44*cc02d7e2SAndroid Build Coastguard Worker     return GetCredentialsProvider()->GetServerCredentials(kAltsCredentialsType);
45*cc02d7e2SAndroid Build Coastguard Worker   } else if (absl::GetFlag(FLAGS_use_tls)) {
46*cc02d7e2SAndroid Build Coastguard Worker     return GetCredentialsProvider()->GetServerCredentials(kTlsCredentialsType);
47*cc02d7e2SAndroid Build Coastguard Worker   } else {
48*cc02d7e2SAndroid Build Coastguard Worker     return GetCredentialsProvider()->GetServerCredentials(
49*cc02d7e2SAndroid Build Coastguard Worker         kInsecureCredentialsType);
50*cc02d7e2SAndroid Build Coastguard Worker   }
51*cc02d7e2SAndroid Build Coastguard Worker }
52*cc02d7e2SAndroid Build Coastguard Worker 
InteropServerContextInspector(const grpc::ServerContext & context)53*cc02d7e2SAndroid Build Coastguard Worker InteropServerContextInspector::InteropServerContextInspector(
54*cc02d7e2SAndroid Build Coastguard Worker     const grpc::ServerContext& context)
55*cc02d7e2SAndroid Build Coastguard Worker     : context_(context) {}
56*cc02d7e2SAndroid Build Coastguard Worker 
57*cc02d7e2SAndroid Build Coastguard Worker grpc_compression_algorithm
GetCallCompressionAlgorithm() const58*cc02d7e2SAndroid Build Coastguard Worker InteropServerContextInspector::GetCallCompressionAlgorithm() const {
59*cc02d7e2SAndroid Build Coastguard Worker   return grpc_call_test_only_get_compression_algorithm(context_.call_.call);
60*cc02d7e2SAndroid Build Coastguard Worker }
61*cc02d7e2SAndroid Build Coastguard Worker 
GetEncodingsAcceptedByClient() const62*cc02d7e2SAndroid Build Coastguard Worker uint32_t InteropServerContextInspector::GetEncodingsAcceptedByClient() const {
63*cc02d7e2SAndroid Build Coastguard Worker   return grpc_call_test_only_get_encodings_accepted_by_peer(
64*cc02d7e2SAndroid Build Coastguard Worker       context_.call_.call);
65*cc02d7e2SAndroid Build Coastguard Worker }
66*cc02d7e2SAndroid Build Coastguard Worker 
WasCompressed() const67*cc02d7e2SAndroid Build Coastguard Worker bool InteropServerContextInspector::WasCompressed() const {
68*cc02d7e2SAndroid Build Coastguard Worker   return (grpc_call_test_only_get_message_flags(context_.call_.call) &
69*cc02d7e2SAndroid Build Coastguard Worker           GRPC_WRITE_INTERNAL_COMPRESS) ||
70*cc02d7e2SAndroid Build Coastguard Worker          (grpc_call_test_only_get_message_flags(context_.call_.call) &
71*cc02d7e2SAndroid Build Coastguard Worker           GRPC_WRITE_INTERNAL_TEST_ONLY_WAS_COMPRESSED);
72*cc02d7e2SAndroid Build Coastguard Worker }
73*cc02d7e2SAndroid Build Coastguard Worker 
74*cc02d7e2SAndroid Build Coastguard Worker std::shared_ptr<const AuthContext>
GetAuthContext() const75*cc02d7e2SAndroid Build Coastguard Worker InteropServerContextInspector::GetAuthContext() const {
76*cc02d7e2SAndroid Build Coastguard Worker   return context_.auth_context();
77*cc02d7e2SAndroid Build Coastguard Worker }
78*cc02d7e2SAndroid Build Coastguard Worker 
IsCancelled() const79*cc02d7e2SAndroid Build Coastguard Worker bool InteropServerContextInspector::IsCancelled() const {
80*cc02d7e2SAndroid Build Coastguard Worker   return context_.IsCancelled();
81*cc02d7e2SAndroid Build Coastguard Worker }
82*cc02d7e2SAndroid Build Coastguard Worker 
83*cc02d7e2SAndroid Build Coastguard Worker }  // namespace testing
84*cc02d7e2SAndroid Build Coastguard Worker }  // namespace grpc
85