_xds_credentials_test.py
Go to the documentation of this file.
1 # Copyright 2021 The gRPC authors.
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14 """Tests xDS server and channel credentials."""
15 
16 from concurrent import futures
17 import contextlib
18 import logging
19 import unittest
20 
21 import grpc
22 import grpc.experimental
23 
24 from tests.unit import resources
25 from tests.unit import test_common
26 
27 
29 
30  def service(self, handler_call_details):
32  lambda request, unused_context: request)
33 
34 
35 @contextlib.contextmanager
36 def xds_channel_server_without_xds(server_fallback_creds):
37  server = grpc.server(futures.ThreadPoolExecutor())
38  server.add_generic_rpc_handlers((_GenericHandler(),))
39  server_server_fallback_creds = grpc.ssl_server_credentials(
40  ((resources.private_key(), resources.certificate_chain()),))
41  server_creds = grpc.xds_server_credentials(server_fallback_creds)
42  port = server.add_secure_port("localhost:0", server_creds)
43  server.start()
44  try:
45  yield "localhost:{}".format(port)
46  finally:
47  server.stop(None)
48 
49 
50 class XdsCredentialsTest(unittest.TestCase):
51 
53  # Since there is no xDS server, the fallback credentials will be used.
54  # In this case, SSL credentials.
55  server_fallback_creds = grpc.ssl_server_credentials(
56  ((resources.private_key(), resources.certificate_chain()),))
58  server_fallback_creds) as server_address:
59  override_options = (("grpc.ssl_target_name_override",
60  "foo.test.google.fr"),)
61  channel_fallback_creds = grpc.ssl_channel_credentials(
62  root_certificates=resources.test_root_certificates(),
63  private_key=resources.private_key(),
64  certificate_chain=resources.certificate_chain())
65  channel_creds = grpc.xds_channel_credentials(channel_fallback_creds)
66  with grpc.secure_channel(server_address,
67  channel_creds,
68  options=override_options) as channel:
69  request = b"abc"
70  response = channel.unary_unary("/test/method")(
71  request, wait_for_ready=True)
72  self.assertEqual(response, request)
73 
75  # Since there is no xDS server, the fallback credentials will be used.
76  # In this case, insecure.
77  server_fallback_creds = grpc.insecure_server_credentials()
79  server_fallback_creds) as server_address:
80  channel_fallback_creds = grpc.experimental.insecure_channel_credentials(
81  )
82  channel_creds = grpc.xds_channel_credentials(channel_fallback_creds)
83  with grpc.secure_channel(server_address, channel_creds) as channel:
84  request = b"abc"
85  response = channel.unary_unary("/test/method")(
86  request, wait_for_ready=True)
87  self.assertEqual(response, request)
88 
90  server = grpc.server(futures.ThreadPoolExecutor(), xds=True)
91  server.add_generic_rpc_handlers((_GenericHandler(),))
92  server_fallback_creds = grpc.insecure_server_credentials()
93  server_creds = grpc.xds_server_credentials(server_fallback_creds)
94  port = server.add_secure_port("localhost:0", server_creds)
95  server.start()
96  server.stop(None)
97  # No exceptions thrown. A more comprehensive suite of tests will be
98  # provided by the interop tests.
99 
100 
101 if __name__ == "__main__":
102  logging.basicConfig()
103  unittest.main()
grpc.unary_unary_rpc_method_handler
def unary_unary_rpc_method_handler(behavior, request_deserializer=None, response_serializer=None)
Definition: src/python/grpcio/grpc/__init__.py:1510
grpc.insecure_server_credentials
def insecure_server_credentials()
Definition: src/python/grpcio/grpc/__init__.py:1755
grpc::experimental.insecure_channel_credentials
def insecure_channel_credentials()
Definition: src/python/grpcio/grpc/experimental/__init__.py:51
http2_test_server.format
format
Definition: http2_test_server.py:118
tests.unit._xds_credentials_test._GenericHandler.service
def service(self, handler_call_details)
Definition: _xds_credentials_test.py:30
tests.unit._xds_credentials_test.XdsCredentialsTest.test_xds_creds_fallback_insecure
def test_xds_creds_fallback_insecure(self)
Definition: _xds_credentials_test.py:74
grpc.xds_server_credentials
def xds_server_credentials(fallback_credentials)
Definition: src/python/grpcio/grpc/__init__.py:1743
grpc::experimental
Definition: include/grpcpp/channel.h:46
tests.unit._xds_credentials_test._GenericHandler
Definition: _xds_credentials_test.py:28
grpc.ssl_server_credentials
def ssl_server_credentials(private_key_certificate_chain_pairs, root_certificates=None, require_client_auth=False)
Definition: src/python/grpcio/grpc/__init__.py:1709
grpc.GenericRpcHandler
Definition: src/python/grpcio/grpc/__init__.py:1333
grpc.server
def server(thread_pool, handlers=None, interceptors=None, options=None, maximum_concurrent_rpcs=None, compression=None, xds=False)
Definition: src/python/grpcio/grpc/__init__.py:2034
tests.unit._xds_credentials_test.XdsCredentialsTest.test_xds_creds_fallback_ssl
def test_xds_creds_fallback_ssl(self)
Definition: _xds_credentials_test.py:52
tests.unit
Definition: src/python/grpcio_tests/tests/unit/__init__.py:1
tests.unit._xds_credentials_test.XdsCredentialsTest.test_start_xds_server
def test_start_xds_server(self)
Definition: _xds_credentials_test.py:89
grpc.xds_channel_credentials
def xds_channel_credentials(fallback_credentials=None)
Definition: src/python/grpcio/grpc/__init__.py:1629
tests.unit._xds_credentials_test.xds_channel_server_without_xds
def xds_channel_server_without_xds(server_fallback_creds)
Definition: _xds_credentials_test.py:36
grpc.ssl_channel_credentials
def ssl_channel_credentials(root_certificates=None, private_key=None, certificate_chain=None)
Definition: src/python/grpcio/grpc/__init__.py:1607
tests.unit._xds_credentials_test.XdsCredentialsTest
Definition: _xds_credentials_test.py:50
grpc.secure_channel
def secure_channel(target, credentials, options=None, compression=None)
Definition: src/python/grpcio/grpc/__init__.py:1982


grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:39