Merge branch 'master' of github.com:google/grpc into testing-release

pull/884/head
Donna Dionne 10 years ago
commit 1e62329262
  1. 4
      .travis.yml
  2. 2
      INSTALL
  3. 10
      Makefile
  4. 6
      README.md
  5. 5
      src/python/README.md
  6. 86
      src/python/interop/interop/client.py
  7. 15
      src/python/interop/interop/credentials/ca.pem
  8. 136
      src/python/interop/interop/methods.py
  9. 56
      src/python/interop/interop/resources.py
  10. 11
      src/python/interop/interop/server.py
  11. 4
      src/python/interop/setup.py
  12. 4
      src/python/src/grpc/_adapter/_c_test.py
  13. 18
      src/python/src/grpc/_adapter/_channel.c
  14. 1
      src/python/src/grpc/_adapter/_client_credentials.c
  15. 3
      src/python/src/grpc/_adapter/_face_test_case.py
  16. 6
      src/python/src/grpc/_adapter/_links_test.py
  17. 5
      src/python/src/grpc/_adapter/_lonely_rear_link_test.py
  18. 6
      src/python/src/grpc/_adapter/_low_test.py
  19. 71
      src/python/src/grpc/_adapter/rear.py
  20. 11
      src/python/src/grpc/early_adopter/_reexport.py
  21. 22
      src/python/src/grpc/early_adopter/implementations.py
  22. 16
      src/python/src/grpc/framework/assembly/implementations.py
  23. 10
      templates/Makefile.template
  24. 6
      test/core/channel/channel_stack_test.c
  25. 6
      test/core/channel/metadata_buffer_test.c
  26. 5
      test/core/echo/client.c
  27. 2
      test/core/echo/server.c
  28. 9
      test/core/end2end/cq_verifier.c
  29. 1
      test/core/end2end/cq_verifier.h
  30. 35
      test/core/end2end/dualstack_socket_test.c
  31. 3
      test/core/end2end/fixtures/chttp2_fake_security.c
  32. 3
      test/core/end2end/fixtures/chttp2_fullstack.c
  33. 6
      test/core/end2end/fixtures/chttp2_simple_ssl_fullstack.c
  34. 3
      test/core/end2end/fixtures/chttp2_simple_ssl_with_oauth2_fullstack.c
  35. 3
      test/core/end2end/fixtures/chttp2_socket_pair.c
  36. 3
      test/core/end2end/fixtures/chttp2_socket_pair_one_byte_at_a_time.c
  37. 3
      test/core/end2end/no_server_test.c
  38. 10
      test/core/end2end/tests/cancel_after_accept.c
  39. 6
      test/core/end2end/tests/cancel_after_accept_and_writes_closed.c
  40. 2
      test/core/end2end/tests/cancel_after_accept_and_writes_closed_legacy.c
  41. 2
      test/core/end2end/tests/cancel_after_accept_legacy.c
  42. 2
      test/core/end2end/tests/cancel_after_invoke.c
  43. 2
      test/core/end2end/tests/cancel_after_invoke_legacy.c
  44. 5
      test/core/end2end/tests/cancel_before_invoke.c
  45. 2
      test/core/end2end/tests/cancel_before_invoke_legacy.c
  46. 2
      test/core/end2end/tests/cancel_in_a_vacuum.c
  47. 2
      test/core/end2end/tests/cancel_in_a_vacuum_legacy.c
  48. 2
      test/core/end2end/tests/census_simple_request.c
  49. 2
      test/core/end2end/tests/census_simple_request_legacy.c
  50. 6
      test/core/end2end/tests/disappearing_server.c
  51. 2
      test/core/end2end/tests/disappearing_server_legacy.c
  52. 6
      test/core/end2end/tests/early_server_shutdown_finishes_inflight_calls.c
  53. 2
      test/core/end2end/tests/early_server_shutdown_finishes_inflight_calls_legacy.c
  54. 2
      test/core/end2end/tests/early_server_shutdown_finishes_tags.c
  55. 2
      test/core/end2end/tests/early_server_shutdown_finishes_tags_legacy.c
  56. 2
      test/core/end2end/tests/empty_batch.c
  57. 6
      test/core/end2end/tests/graceful_server_shutdown.c
  58. 2
      test/core/end2end/tests/graceful_server_shutdown_legacy.c
  59. 6
      test/core/end2end/tests/invoke_large_request.c
  60. 2
      test/core/end2end/tests/invoke_large_request_legacy.c
  61. 10
      test/core/end2end/tests/max_concurrent_streams.c
  62. 6
      test/core/end2end/tests/max_concurrent_streams_legacy.c
  63. 2
      test/core/end2end/tests/no_op.c
  64. 2
      test/core/end2end/tests/no_op_legacy.c
  65. 6
      test/core/end2end/tests/ping_pong_streaming.c
  66. 2
      test/core/end2end/tests/ping_pong_streaming_legacy.c
  67. 5
      test/core/end2end/tests/request_response_with_binary_metadata_and_payload.c
  68. 9
      test/core/end2end/tests/request_response_with_binary_metadata_and_payload_legacy.c
  69. 5
      test/core/end2end/tests/request_response_with_metadata_and_payload.c
  70. 2
      test/core/end2end/tests/request_response_with_metadata_and_payload_legacy.c
  71. 5
      test/core/end2end/tests/request_response_with_payload.c
  72. 2
      test/core/end2end/tests/request_response_with_payload_legacy.c
  73. 5
      test/core/end2end/tests/request_response_with_trailing_metadata_and_payload.c
  74. 2
      test/core/end2end/tests/request_response_with_trailing_metadata_and_payload_legacy.c
  75. 7
      test/core/end2end/tests/request_with_large_metadata.c
  76. 4
      test/core/end2end/tests/request_with_large_metadata_legacy.c
  77. 5
      test/core/end2end/tests/request_with_payload.c
  78. 2
      test/core/end2end/tests/request_with_payload_legacy.c
  79. 5
      test/core/end2end/tests/simple_delayed_request.c
  80. 2
      test/core/end2end/tests/simple_delayed_request_legacy.c
  81. 5
      test/core/end2end/tests/simple_request.c
  82. 2
      test/core/end2end/tests/simple_request_legacy.c
  83. 7
      test/core/end2end/tests/thread_stress.c
  84. 7
      test/core/end2end/tests/thread_stress_legacy.c
  85. 6
      test/core/end2end/tests/writes_done_hangs_with_pending_read.c
  86. 6
      test/core/end2end/tests/writes_done_hangs_with_pending_read_legacy.c
  87. 2
      test/core/httpcli/httpcli_test.c
  88. 14
      test/core/iomgr/alarm_list_test.c
  89. 17
      test/core/iomgr/alarm_test.c
  90. 10
      test/core/iomgr/endpoint_tests.c
  91. 16
      test/core/iomgr/resolve_address_test.c
  92. 11
      test/core/iomgr/tcp_client_posix_test.c
  93. 15
      test/core/iomgr/tcp_posix_test.c
  94. 2
      test/core/iomgr/tcp_server_posix_test.c
  95. 29
      test/core/json/json_rewrite.c
  96. 61
      test/core/json/json_rewrite_test.c
  97. 103
      test/core/json/json_test.c
  98. 22
      test/core/security/credentials_test.c
  99. 12
      test/core/security/json_token_test.c
  100. 3
      test/core/security/print_google_default_creds_token.c
  101. Some files were not shown because too many files have changed in this diff Show More

@ -0,0 +1,4 @@
language: cpp
script: ./tools/run_tests/run_tests.py -lc -t -j2
notifications:
email: false

@ -10,8 +10,8 @@ wiki pages:
************************* *************************
$ git clone https://github.com/grpc/grpc.git $ git clone https://github.com/grpc/grpc.git
$ cd grpc
$ git submodule update --init $ git submodule update --init
$ make $ make
$ sudo make install $ sudo make install

@ -77,7 +77,7 @@ LDXX_valgrind = g++
CPPFLAGS_valgrind = -O0 CPPFLAGS_valgrind = -O0
OPENSSL_CFLAGS_valgrind = -DPURIFY OPENSSL_CFLAGS_valgrind = -DPURIFY
LDFLAGS_valgrind = LDFLAGS_valgrind =
DEFINES_valgrind = _DEBUG DEBUG DEFINES_valgrind = _DEBUG DEBUG GRPC_TEST_SLOWDOWN_FACTOR=20
VALID_CONFIG_tsan = 1 VALID_CONFIG_tsan = 1
REQUIRE_CUSTOM_LIBRARIES_tsan = 1 REQUIRE_CUSTOM_LIBRARIES_tsan = 1
@ -87,7 +87,7 @@ LD_tsan = clang
LDXX_tsan = clang++ LDXX_tsan = clang++
CPPFLAGS_tsan = -O1 -fsanitize=thread -fno-omit-frame-pointer CPPFLAGS_tsan = -O1 -fsanitize=thread -fno-omit-frame-pointer
LDFLAGS_tsan = -fsanitize=thread LDFLAGS_tsan = -fsanitize=thread
DEFINES_tsan = NDEBUG DEFINES_tsan = NDEBUG GRPC_TEST_SLOWDOWN_FACTOR=10
VALID_CONFIG_asan = 1 VALID_CONFIG_asan = 1
REQUIRE_CUSTOM_LIBRARIES_asan = 1 REQUIRE_CUSTOM_LIBRARIES_asan = 1
@ -97,7 +97,7 @@ LD_asan = clang
LDXX_asan = clang++ LDXX_asan = clang++
CPPFLAGS_asan = -O1 -fsanitize=address -fno-omit-frame-pointer CPPFLAGS_asan = -O1 -fsanitize=address -fno-omit-frame-pointer
LDFLAGS_asan = -fsanitize=address LDFLAGS_asan = -fsanitize=address
DEFINES_asan = NDEBUG DEFINES_asan = NDEBUG GRPC_TEST_SLOWDOWN_FACTOR=5
VALID_CONFIG_msan = 1 VALID_CONFIG_msan = 1
REQUIRE_CUSTOM_LIBRARIES_msan = 1 REQUIRE_CUSTOM_LIBRARIES_msan = 1
@ -108,7 +108,7 @@ LDXX_msan = clang++-libc++
CPPFLAGS_msan = -O1 -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 CPPFLAGS_msan = -O1 -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1
OPENSSL_CFLAGS_msan = -DPURIFY OPENSSL_CFLAGS_msan = -DPURIFY
LDFLAGS_msan = -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 LDFLAGS_msan = -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1
DEFINES_msan = NDEBUG DEFINES_msan = NDEBUG GRPC_TEST_SLOWDOWN_FACTOR=20
VALID_CONFIG_ubsan = 1 VALID_CONFIG_ubsan = 1
REQUIRE_CUSTOM_LIBRARIES_ubsan = 1 REQUIRE_CUSTOM_LIBRARIES_ubsan = 1
@ -119,7 +119,7 @@ LDXX_ubsan = clang++
CPPFLAGS_ubsan = -O1 -fsanitize=undefined -fno-omit-frame-pointer CPPFLAGS_ubsan = -O1 -fsanitize=undefined -fno-omit-frame-pointer
OPENSSL_CFLAGS_ubsan = -DPURIFY OPENSSL_CFLAGS_ubsan = -DPURIFY
LDFLAGS_ubsan = -fsanitize=undefined LDFLAGS_ubsan = -fsanitize=undefined
DEFINES_ubsan = NDEBUG DEFINES_ubsan = NDEBUG GRPC_TEST_SLOWDOWN_FACTOR=10
VALID_CONFIG_gcov = 1 VALID_CONFIG_gcov = 1
CC_gcov = gcc CC_gcov = gcc

@ -9,13 +9,13 @@ See grpc/INSTALL for installation instructions for various platforms.
#Repository Structure #Repository Structure
This repository contains source code for gRPC libraries for multiple lanugages written on top This repository contains source code for gRPC libraries for multiple languages written on top
of shared C core library [src/core] (src/core). of shared C core library [src/core] (src/core).
* C++ source code: [src/cpp] (src/cpp) * C++ source code: [src/cpp] (src/cpp)
* Python source code: [src/python] (src/python)
* Ruby source code: [src/ruby] (src/ruby) * Ruby source code: [src/ruby] (src/ruby)
* NodeJS source code: [src/node] (src/node) * NodeJS source code: [src/node] (src/node)
* Python source code: [src/python] (src/python)
* PHP source code: [src/php] (src/php) * PHP source code: [src/php] (src/php)
* C# source code: [src/csharp] (src/csharp) * C# source code: [src/csharp] (src/csharp)
* Objective-C source code: [src/objective-c] (src/objective-c) * Objective-C source code: [src/objective-c] (src/objective-c)
@ -33,9 +33,9 @@ Libraries in different languages are in different state of development. We are s
* shared C core library [src/core] (src/core) : Early adopter ready - Alpha. * shared C core library [src/core] (src/core) : Early adopter ready - Alpha.
* C++ Library: [src/cpp] (src/cpp) : Early adopter ready - Alpha. * C++ Library: [src/cpp] (src/cpp) : Early adopter ready - Alpha.
* Python Library: [src/python] (src/python) : Early adopter ready - Alpha.
* Ruby Library: [src/ruby] (src/ruby) : Early adopter ready - Alpha. * Ruby Library: [src/ruby] (src/ruby) : Early adopter ready - Alpha.
* NodeJS Library: [src/node] (src/node) : Early adopter ready - Alpha. * NodeJS Library: [src/node] (src/node) : Early adopter ready - Alpha.
* Python Library: [src/python] (src/python) : Usable with limitations - Pre-Alpha.
* PHP Library: [src/php] (src/php) : Pre-Alpha. * PHP Library: [src/php] (src/php) : Pre-Alpha.
* C# Library: [src/csharp] (src/csharp) : Pre-Alpha. * C# Library: [src/csharp] (src/csharp) : Pre-Alpha.
* Objective-C Library: [src/objective-c] (src/objective-c): Pre-Alpha. * Objective-C Library: [src/objective-c] (src/objective-c): Pre-Alpha.

@ -4,6 +4,11 @@ gRPC Python
The Python facility of gRPC. The Python facility of gRPC.
Status
-------
Usable with limitations, Pre-Alpha
Prerequisites Prerequisites
----------------------- -----------------------

@ -0,0 +1,86 @@
# Copyright 2015, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""The Python implementation of the GRPC interoperability test client."""
import argparse
from grpc.early_adopter import implementations
from interop import methods
from interop import resources
_ONE_DAY_IN_SECONDS = 60 * 60 * 24
def _args():
parser = argparse.ArgumentParser()
parser.add_argument(
'--server_host', help='the host to which to connect', type=str)
parser.add_argument(
'--server_host_override',
help='the server host to which to claim to connect', type=str)
parser.add_argument(
'--server_port', help='the port to which to connect', type=int)
parser.add_argument(
'--test_case', help='the test case to execute', type=str)
parser.add_argument(
'--use_tls', help='require a secure connection', dest='use_tls',
action='store_true')
parser.add_argument(
'--use_test_ca', help='replace platform root CAs with ca.pem',
action='store_true')
return parser.parse_args()
def _stub(args):
if args.use_tls:
if args.use_test_ca:
root_certificates = resources.test_root_certificates()
else:
root_certificates = resources.prod_root_certificates()
# TODO(nathaniel): server host override.
stub = implementations.secure_stub(
methods.CLIENT_METHODS, args.server_host, args.server_port,
root_certificates, None, None)
else:
stub = implementations.insecure_stub(
methods.CLIENT_METHODS, args.server_host, args.server_port)
return stub
def _test_interoperability():
args = _args()
stub = _stub(args)
methods.test_interoperability(args.test_case, stub)
if __name__ == '__main__':
_test_interoperability()

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICSjCCAbOgAwIBAgIJAJHGGR4dGioHMA0GCSqGSIb3DQEBCwUAMFYxCzAJBgNV
BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX
aWRnaXRzIFB0eSBMdGQxDzANBgNVBAMTBnRlc3RjYTAeFw0xNDExMTEyMjMxMjla
Fw0yNDExMDgyMjMxMjlaMFYxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0
YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxDzANBgNVBAMT
BnRlc3RjYTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwEDfBV5MYdlHVHJ7
+L4nxrZy7mBfAVXpOc5vMYztssUI7mL2/iYujiIXM+weZYNTEpLdjyJdu7R5gGUu
g1jSVK/EPHfc74O7AyZU34PNIP4Sh33N+/A5YexrNgJlPY+E3GdVYi4ldWJjgkAd
Qah2PH5ACLrIIC6tRka9hcaBlIECAwEAAaMgMB4wDAYDVR0TBAUwAwEB/zAOBgNV
HQ8BAf8EBAMCAgQwDQYJKoZIhvcNAQELBQADgYEAHzC7jdYlzAVmddi/gdAeKPau
sPBG/C2HCWqHzpCUHcKuvMzDVkY/MP2o6JIW2DBbY64bO/FceExhjcykgaYtCH/m
oIU63+CFOTtR7otyQAWHqXa7q4SbCDlG7DyRFxqG0txPtGvy12lgldA2+RgcigQG
Dfcog5wrJytaQ6UA0wE=
-----END CERTIFICATE-----

@ -29,11 +29,16 @@
"""Implementations of interoperability test methods.""" """Implementations of interoperability test methods."""
import threading
from grpc.early_adopter import utilities from grpc.early_adopter import utilities
from interop import empty_pb2 from interop import empty_pb2
from interop import messages_pb2 from interop import messages_pb2
_TIMEOUT = 7
def _empty_call(request, unused_context): def _empty_call(request, unused_context):
return empty_pb2.Empty() return empty_pb2.Empty()
@ -142,3 +147,134 @@ SERVER_METHODS = {
FULL_DUPLEX_CALL_METHOD_NAME: _SERVER_FULL_DUPLEX_CALL, FULL_DUPLEX_CALL_METHOD_NAME: _SERVER_FULL_DUPLEX_CALL,
HALF_DUPLEX_CALL_METHOD_NAME: _SERVER_HALF_DUPLEX_CALL, HALF_DUPLEX_CALL_METHOD_NAME: _SERVER_HALF_DUPLEX_CALL,
} }
def _empty_unary(stub):
with stub:
response = stub.EmptyCall(empty_pb2.Empty(), _TIMEOUT)
if not isinstance(response, empty_pb2.Empty):
raise TypeError(
'response is of type "%s", not empty_pb2.Empty!', type(response))
def _large_unary(stub):
with stub:
request = messages_pb2.SimpleRequest(
response_type=messages_pb2.COMPRESSABLE, response_size=314159,
payload=messages_pb2.Payload(body=b'\x00' * 271828))
response_future = stub.UnaryCall.async(request, _TIMEOUT)
response = response_future.result()
if response.payload.type is not messages_pb2.COMPRESSABLE:
raise ValueError(
'response payload type is "%s"!' % type(response.payload.type))
if len(response.payload.body) != 314159:
raise ValueError(
'response body of incorrect size %d!' % len(response.payload.body))
def _client_streaming(stub):
with stub:
payload_body_sizes = (27182, 8, 1828, 45904)
payloads = (
messages_pb2.Payload(body=b'\x00' * size)
for size in payload_body_sizes)
requests = (
messages_pb2.StreamingInputCallRequest(payload=payload)
for payload in payloads)
response = stub.StreamingInputCall(requests, _TIMEOUT)
if response.aggregated_payload_size != 74922:
raise ValueError(
'incorrect size %d!' % response.aggregated_payload_size)
def _server_streaming(stub):
sizes = (31415, 9, 2653, 58979)
with stub:
request = messages_pb2.StreamingOutputCallRequest(
response_type=messages_pb2.COMPRESSABLE,
response_parameters=(
messages_pb2.ResponseParameters(size=sizes[0]),
messages_pb2.ResponseParameters(size=sizes[1]),
messages_pb2.ResponseParameters(size=sizes[2]),
messages_pb2.ResponseParameters(size=sizes[3]),
))
response_iterator = stub.StreamingOutputCall(request, _TIMEOUT)
for index, response in enumerate(response_iterator):
if response.payload.type != messages_pb2.COMPRESSABLE:
raise ValueError(
'response body of invalid type %s!' % response.payload.type)
if len(response.payload.body) != sizes[index]:
raise ValueError(
'response body of invalid size %d!' % len(response.payload.body))
class _Pipe(object):
def __init__(self):
self._condition = threading.Condition()
self._values = []
self._open = True
def __iter__(self):
return self
def next(self):
with self._condition:
while not self._values and self._open:
self._condition.wait()
if self._values:
return self._values.pop(0)
else:
raise StopIteration()
def add(self, value):
with self._condition:
self._values.append(value)
self._condition.notify()
def close(self):
with self._condition:
self._open = False
self._condition.notify()
def _ping_pong(stub):
request_response_sizes = (31415, 9, 2653, 58979)
request_payload_sizes = (27182, 8, 1828, 45904)
with stub:
pipe = _Pipe()
response_iterator = stub.FullDuplexCall(pipe, _TIMEOUT)
print 'Starting ping-pong with response iterator %s' % response_iterator
for response_size, payload_size in zip(
request_response_sizes, request_payload_sizes):
request = messages_pb2.StreamingOutputCallRequest(
response_type=messages_pb2.COMPRESSABLE,
response_parameters=(messages_pb2.ResponseParameters(
size=response_size),),
payload=messages_pb2.Payload(body=b'\x00' * payload_size))
pipe.add(request)
response = next(response_iterator)
if response.payload.type != messages_pb2.COMPRESSABLE:
raise ValueError(
'response body of invalid type %s!' % response.payload.type)
if len(response.payload.body) != response_size:
raise ValueError(
'response body of invalid size %d!' % len(response.payload.body))
pipe.close()
def test_interoperability(test_case, stub):
if test_case == 'empty_unary':
_empty_unary(stub)
elif test_case == 'large_unary':
_large_unary(stub)
elif test_case == 'server_streaming':
_server_streaming(stub)
elif test_case == 'client_streaming':
_client_streaming(stub)
elif test_case == 'ping_pong':
_ping_pong(stub)
else:
raise NotImplementedError('Test case "%s" not implemented!')

@ -0,0 +1,56 @@
# Copyright 2015, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""Constants and functions for data used in interoperability testing."""
import os
import pkg_resources
_ROOT_CERTIFICATES_RESOURCE_PATH = 'credentials/ca.pem'
_PRIVATE_KEY_RESOURCE_PATH = 'credentials/server1.key'
_CERTIFICATE_CHAIN_RESOURCE_PATH = 'credentials/server1.pem'
def test_root_certificates():
return pkg_resources.resource_string(
__name__, _ROOT_CERTIFICATES_RESOURCE_PATH)
def prod_root_certificates():
return open(os.environ['SSL_CERT_FILE'], mode='rb').read()
def private_key():
return pkg_resources.resource_string(__name__, _PRIVATE_KEY_RESOURCE_PATH)
def certificate_chain():
return pkg_resources.resource_string(
__name__, _CERTIFICATE_CHAIN_RESOURCE_PATH)

@ -31,18 +31,15 @@
import argparse import argparse
import logging import logging
import pkg_resources
import time import time
from grpc.early_adopter import implementations from grpc.early_adopter import implementations
from interop import methods from interop import methods
from interop import resources
_ONE_DAY_IN_SECONDS = 60 * 60 * 24 _ONE_DAY_IN_SECONDS = 60 * 60 * 24
_PRIVATE_KEY_RESOURCE_PATH = 'credentials/server1.key'
_CERTIFICATE_CHAIN_RESOURCE_PATH = 'credentials/server1.pem'
def serve(): def serve():
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
@ -54,10 +51,8 @@ def serve():
args = parser.parse_args() args = parser.parse_args()
if args.use_tls: if args.use_tls:
private_key = pkg_resources.resource_string( private_key = resources.private_key()
__name__, _PRIVATE_KEY_RESOURCE_PATH) certificate_chain = resources.certificate_chain()
certificate_chain = pkg_resources.resource_string(
__name__, _CERTIFICATE_CHAIN_RESOURCE_PATH)
server = implementations.secure_server( server = implementations.secure_server(
methods.SERVER_METHODS, args.port, private_key, certificate_chain) methods.SERVER_METHODS, args.port, private_key, certificate_chain)
else: else:

@ -40,7 +40,9 @@ _PACKAGE_DIRECTORIES = {
} }
_PACKAGE_DATA = { _PACKAGE_DATA = {
'interop': ['credentials/server1.key', 'credentials/server1.pem',] 'interop': [
'credentials/ca.pem', 'credentials/server1.key',
'credentials/server1.pem',]
} }
_INSTALL_REQUIRES = ['grpc-2015>=0.0.1'] _INSTALL_REQUIRES = ['grpc-2015>=0.0.1']

@ -70,7 +70,7 @@ class _CTest(unittest.TestCase):
def testChannel(self): def testChannel(self):
_c.init() _c.init()
channel = _c.Channel('test host:12345') channel = _c.Channel('test host:12345', None)
del channel del channel
_c.shut_down() _c.shut_down()
@ -81,7 +81,7 @@ class _CTest(unittest.TestCase):
_c.init() _c.init()
channel = _c.Channel('%s:%d' % (host, 12345)) channel = _c.Channel('%s:%d' % (host, 12345), None)
call = _c.Call(channel, method, host, time.time() + _TIMEOUT) call = _c.Call(channel, method, host, time.time() + _TIMEOUT)
del call del call
del channel del channel

@ -35,18 +35,28 @@
#include <Python.h> #include <Python.h>
#include <grpc/grpc.h> #include <grpc/grpc.h>
#include <grpc/grpc_security.h>
#include "grpc/_adapter/_client_credentials.h"
static int pygrpc_channel_init(Channel *self, PyObject *args, PyObject *kwds) { static int pygrpc_channel_init(Channel *self, PyObject *args, PyObject *kwds) {
const char *hostport; const char *hostport;
static char *kwlist[] = {"hostport", NULL}; PyObject *client_credentials;
static char *kwlist[] = {"hostport", "client_credentials", NULL};
if (!(PyArg_ParseTupleAndKeywords(args, kwds, "s:Channel", kwlist, if (!(PyArg_ParseTupleAndKeywords(args, kwds, "sO:Channel", kwlist,
&hostport))) { &hostport, &client_credentials))) {
return -1; return -1;
} }
if (client_credentials == Py_None) {
self->c_channel = grpc_channel_create(hostport, NULL); self->c_channel = grpc_channel_create(hostport, NULL);
return 0; return 0;
} else {
self->c_channel = grpc_secure_channel_create(
((ClientCredentials *)client_credentials)->c_client_credentials,
hostport, NULL);
return 0;
}
} }
static void pygrpc_channel_dealloc(Channel *self) { static void pygrpc_channel_dealloc(Channel *self) {

@ -58,6 +58,7 @@ static int pygrpc_client_credentials_init(ClientCredentials *self,
self->c_client_credentials = self->c_client_credentials =
grpc_ssl_credentials_create(root_certificates, NULL); grpc_ssl_credentials_create(root_certificates, NULL);
} }
return 0;
} }
static void pygrpc_client_credentials_dealloc(ClientCredentials *self) { static void pygrpc_client_credentials_dealloc(ClientCredentials *self) {

@ -85,7 +85,8 @@ class FaceTestCase(test_case.FaceTestCase, coverage.BlockingCoverage):
port = fore_link.port() port = fore_link.port()
rear_link = rear.RearLink( rear_link = rear.RearLink(
'localhost', port, pool, 'localhost', port, pool,
serialization.request_serializers, serialization.response_deserializers) serialization.request_serializers,
serialization.response_deserializers, False, None, None, None)
rear_link.start() rear_link.start()
front = tickets_implementations.front(pool, pool, pool) front = tickets_implementations.front(pool, pool, pool)
back = tickets_implementations.back( back = tickets_implementations.back(

@ -75,7 +75,7 @@ class RoundTripTest(unittest.TestCase):
rear_link = rear.RearLink( rear_link = rear.RearLink(
'localhost', port, self.rear_link_pool, {test_method: None}, 'localhost', port, self.rear_link_pool, {test_method: None},
{test_method: None}) {test_method: None}, False, None, None, None)
rear_link.join_fore_link(test_fore_link) rear_link.join_fore_link(test_fore_link)
test_fore_link.join_rear_link(rear_link) test_fore_link.join_rear_link(rear_link)
rear_link.start() rear_link.start()
@ -129,7 +129,7 @@ class RoundTripTest(unittest.TestCase):
rear_link = rear.RearLink( rear_link = rear.RearLink(
'localhost', port, self.rear_link_pool, {test_method: _IDENTITY}, 'localhost', port, self.rear_link_pool, {test_method: _IDENTITY},
{test_method: _IDENTITY}) {test_method: _IDENTITY}, False, None, None, None)
rear_link.join_fore_link(test_fore_link) rear_link.join_fore_link(test_fore_link)
test_fore_link.join_rear_link(rear_link) test_fore_link.join_rear_link(rear_link)
rear_link.start() rear_link.start()
@ -193,7 +193,7 @@ class RoundTripTest(unittest.TestCase):
rear_link = rear.RearLink( rear_link = rear.RearLink(
'localhost', port, self.rear_link_pool, 'localhost', port, self.rear_link_pool,
{test_method: scenario.serialize_request}, {test_method: scenario.serialize_request},
{test_method: scenario.deserialize_response}) {test_method: scenario.deserialize_response}, False, None, None, None)
rear_link.join_fore_link(test_fore_link) rear_link.join_fore_link(test_fore_link)
test_fore_link.join_rear_link(rear_link) test_fore_link.join_rear_link(rear_link)
rear_link.start() rear_link.start()

@ -50,7 +50,8 @@ class LonelyRearLinkTest(unittest.TestCase):
self.pool.shutdown(wait=True) self.pool.shutdown(wait=True)
def testUpAndDown(self): def testUpAndDown(self):
rear_link = rear.RearLink('nonexistent', 54321, self.pool, {}, {}) rear_link = rear.RearLink(
'nonexistent', 54321, self.pool, {}, {}, False, None, None, None)
rear_link.start() rear_link.start()
rear_link.stop() rear_link.stop()
@ -63,7 +64,7 @@ class LonelyRearLinkTest(unittest.TestCase):
rear_link = rear.RearLink( rear_link = rear.RearLink(
'nonexistent', 54321, self.pool, {test_method: None}, 'nonexistent', 54321, self.pool, {test_method: None},
{test_method: None}) {test_method: None}, False, None, None, None)
rear_link.join_fore_link(fore_link) rear_link.join_fore_link(fore_link)
rear_link.start() rear_link.start()

@ -56,7 +56,7 @@ class LonelyClientTest(unittest.TestCase):
finish_tag = object() finish_tag = object()
completion_queue = _low.CompletionQueue() completion_queue = _low.CompletionQueue()
channel = _low.Channel('%s:%d' % (host, port)) channel = _low.Channel('%s:%d' % (host, port), None)
client_call = _low.Call(channel, method, host, deadline) client_call = _low.Call(channel, method, host, deadline)
client_call.invoke(completion_queue, metadata_tag, finish_tag) client_call.invoke(completion_queue, metadata_tag, finish_tag)
@ -87,7 +87,7 @@ class EchoTest(unittest.TestCase):
self.server.start() self.server.start()
self.client_completion_queue = _low.CompletionQueue() self.client_completion_queue = _low.CompletionQueue()
self.channel = _low.Channel('%s:%d' % (self.host, port)) self.channel = _low.Channel('%s:%d' % (self.host, port), None)
def tearDown(self): def tearDown(self):
self.server.stop() self.server.stop()
@ -265,7 +265,7 @@ class CancellationTest(unittest.TestCase):
self.server.start() self.server.start()
self.client_completion_queue = _low.CompletionQueue() self.client_completion_queue = _low.CompletionQueue()
self.channel = _low.Channel('%s:%d' % (self.host, port)) self.channel = _low.Channel('%s:%d' % (self.host, port), None)
def tearDown(self): def tearDown(self):
self.server.stop() self.server.stop()

@ -92,7 +92,8 @@ class RearLink(ticket_interfaces.RearLink, activated.Activated):
"""An invocation-side bridge between RPC Framework and the C-ish _low code.""" """An invocation-side bridge between RPC Framework and the C-ish _low code."""
def __init__( def __init__(
self, host, port, pool, request_serializers, response_deserializers): self, host, port, pool, request_serializers, response_deserializers,
secure, root_certificates, private_key, certificate_chain):
"""Constructor. """Constructor.
Args: Args:
@ -103,6 +104,13 @@ class RearLink(ticket_interfaces.RearLink, activated.Activated):
serializer behaviors. serializer behaviors.
response_deserializers: A dict from RPC method names to response object response_deserializers: A dict from RPC method names to response object
deserializer behaviors. deserializer behaviors.
secure: A boolean indicating whether or not to use a secure connection.
root_certificates: The PEM-encoded root certificates or None to ask for
them to be retrieved from a default location.
private_key: The PEM-encoded private key to use or None if no private
key should be used.
certificate_chain: The PEM-encoded certificate chain to use or None if
no certificate chain should be used.
""" """
self._condition = threading.Condition() self._condition = threading.Condition()
self._host = host self._host = host
@ -116,6 +124,14 @@ class RearLink(ticket_interfaces.RearLink, activated.Activated):
self._channel = None self._channel = None
self._rpc_states = {} self._rpc_states = {}
self._spinning = False self._spinning = False
if secure:
self._client_credentials = _low.ClientCredentials(
root_certificates, private_key, certificate_chain)
else:
self._client_credentials = None
self._root_certificates = root_certificates
self._private_key = private_key
self._certificate_chain = certificate_chain
def _on_write_event(self, operation_id, event, rpc_state): def _on_write_event(self, operation_id, event, rpc_state):
if event.write_accepted: if event.write_accepted:
@ -310,7 +326,8 @@ class RearLink(ticket_interfaces.RearLink, activated.Activated):
""" """
with self._condition: with self._condition:
self._completion_queue = _low.CompletionQueue() self._completion_queue = _low.CompletionQueue()
self._channel = _low.Channel('%s:%d' % (self._host, self._port)) self._channel = _low.Channel(
'%s:%d' % (self._host, self._port), self._client_credentials)
return self return self
def _stop(self): def _stop(self):
@ -369,11 +386,17 @@ class RearLink(ticket_interfaces.RearLink, activated.Activated):
class _ActivatedRearLink(ticket_interfaces.RearLink, activated.Activated): class _ActivatedRearLink(ticket_interfaces.RearLink, activated.Activated):
def __init__(self, host, port, request_serializers, response_deserializers): def __init__(
self, host, port, request_serializers, response_deserializers, secure,
root_certificates, private_key, certificate_chain):
self._host = host self._host = host
self._port = port self._port = port
self._request_serializers = request_serializers self._request_serializers = request_serializers
self._response_deserializers = response_deserializers self._response_deserializers = response_deserializers
self._secure = secure
self._root_certificates = root_certificates
self._private_key = private_key
self._certificate_chain = certificate_chain
self._lock = threading.Lock() self._lock = threading.Lock()
self._pool = None self._pool = None
@ -391,7 +414,8 @@ class _ActivatedRearLink(ticket_interfaces.RearLink, activated.Activated):
self._pool = logging_pool.pool(_THREAD_POOL_SIZE) self._pool = logging_pool.pool(_THREAD_POOL_SIZE)
self._rear_link = RearLink( self._rear_link = RearLink(
self._host, self._port, self._pool, self._request_serializers, self._host, self._port, self._pool, self._request_serializers,
self._response_deserializers) self._response_deserializers, self._secure, self._root_certificates,
self._private_key, self._certificate_chain)
self._rear_link.join_fore_link(self._fore_link) self._rear_link.join_fore_link(self._fore_link)
self._rear_link.start() self._rear_link.start()
return self return self
@ -422,6 +446,7 @@ class _ActivatedRearLink(ticket_interfaces.RearLink, activated.Activated):
self._rear_link.accept_front_to_back_ticket(ticket) self._rear_link.accept_front_to_back_ticket(ticket)
# TODO(issue 726): reconcile these two creation functions.
def activated_rear_link( def activated_rear_link(
host, port, request_serializers, response_deserializers): host, port, request_serializers, response_deserializers):
"""Creates a RearLink that is also an activated.Activated. """Creates a RearLink that is also an activated.Activated.
@ -436,6 +461,42 @@ def activated_rear_link(
serializer behavior. serializer behavior.
response_deserializers: A dictionary from RPC method name to response response_deserializers: A dictionary from RPC method name to response
object deserializer behavior. object deserializer behavior.
secure: A boolean indicating whether or not to use a secure connection.
root_certificates: The PEM-encoded root certificates or None to ask for
them to be retrieved from a default location.
private_key: The PEM-encoded private key to use or None if no private key
should be used.
certificate_chain: The PEM-encoded certificate chain to use or None if no
certificate chain should be used.
"""
return _ActivatedRearLink(
host, port, request_serializers, response_deserializers, False, None,
None, None)
def secure_activated_rear_link(
host, port, request_serializers, response_deserializers, root_certificates,
private_key, certificate_chain):
"""Creates a RearLink that is also an activated.Activated.
The returned object is only valid for use between calls to its start and stop
methods (or in context when used as a context manager).
Args:
host: The host to which to connect for RPC service.
port: The port to which to connect for RPC service.
request_serializers: A dictionary from RPC method name to request object
serializer behavior.
response_deserializers: A dictionary from RPC method name to response
object deserializer behavior.
root_certificates: The PEM-encoded root certificates or None to ask for
them to be retrieved from a default location.
private_key: The PEM-encoded private key to use or None if no private key
should be used.
certificate_chain: The PEM-encoded certificate chain to use or None if no
certificate chain should be used.
""" """
return _ActivatedRearLink( return _ActivatedRearLink(
host, port, request_serializers, response_deserializers) host, port, request_serializers, response_deserializers, True,
root_certificates, private_key, certificate_chain)

@ -27,9 +27,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import abc
import collections
from grpc.framework.face import exceptions as face_exceptions from grpc.framework.face import exceptions as face_exceptions
from grpc.framework.face import interfaces as face_interfaces from grpc.framework.face import interfaces as face_interfaces
from grpc.framework.foundation import future from grpc.framework.foundation import future
@ -186,6 +183,14 @@ class _Stub(interfaces.Stub):
def __getattr__(self, attr): def __getattr__(self, attr):
underlying_attr = self._assembly_stub.__getattr__(attr) underlying_attr = self._assembly_stub.__getattr__(attr)
cardinality = self._cardinalities.get(attr) cardinality = self._cardinalities.get(attr)
# TODO(nathaniel): unify this trick with its other occurrence in the code.
if cardinality is None:
for name, cardinality in self._cardinalities.iteritems():
last_slash_index = name.rfind('/')
if 0 <= last_slash_index and name[last_slash_index + 1:] == attr:
break
else:
raise AttributeError(attr)
if cardinality is interfaces.Cardinality.UNARY_UNARY: if cardinality is interfaces.Cardinality.UNARY_UNARY:
return _UnaryUnarySyncAsync(underlying_attr) return _UnaryUnarySyncAsync(underlying_attr)
elif cardinality is interfaces.Cardinality.UNARY_STREAM: elif cardinality is interfaces.Cardinality.UNARY_STREAM:

@ -93,13 +93,7 @@ class _Server(interfaces.Server):
with self._lock: with self._lock:
return self._fore_link.port() return self._fore_link.port()
def _build_stub( def _build_stub(breakdown, activated_rear_link):
methods, host, port, root_certificates, private_key, certificate_chain):
breakdown = _assembly_utilities.break_down_invocation(methods)
# TODO(nathaniel): pass security values.
activated_rear_link = _rear.activated_rear_link(
host, port, breakdown.request_serializers,
breakdown.response_deserializers)
assembly_stub = _assembly_implementations.assemble_dynamic_inline_stub( assembly_stub = _assembly_implementations.assemble_dynamic_inline_stub(
breakdown.implementations, activated_rear_link) breakdown.implementations, activated_rear_link)
return _reexport.stub(assembly_stub, breakdown.cardinalities) return _reexport.stub(assembly_stub, breakdown.cardinalities)
@ -123,7 +117,11 @@ def insecure_stub(methods, host, port):
Returns: Returns:
An interfaces.Stub affording RPC invocation. An interfaces.Stub affording RPC invocation.
""" """
return _build_stub(methods, host, port, None, None, None) breakdown = _assembly_utilities.break_down_invocation(methods)
activated_rear_link = _rear.activated_rear_link(
host, port, breakdown.request_serializers,
breakdown.response_deserializers)
return _build_stub(breakdown, activated_rear_link)
def secure_stub( def secure_stub(
@ -146,8 +144,12 @@ def secure_stub(
Returns: Returns:
An interfaces.Stub affording RPC invocation. An interfaces.Stub affording RPC invocation.
""" """
return _build_stub( breakdown = _assembly_utilities.break_down_invocation(methods)
methods, host, port, root_certificates, private_key, certificate_chain) activated_rear_link = _rear.secure_activated_rear_link(
host, port, breakdown.request_serializers,
breakdown.response_deserializers, root_certificates, private_key,
certificate_chain)
return _build_stub(breakdown, activated_rear_link)
def insecure_server(methods, port): def insecure_server(methods, port):

@ -31,16 +31,18 @@
import threading import threading
# tickets_interfaces, face_interfaces, and activated are referenced from
# specification in this module.
from grpc.framework.assembly import interfaces from grpc.framework.assembly import interfaces
from grpc.framework.base import util as base_utilities from grpc.framework.base import util as base_utilities
from grpc.framework.base.packets import implementations as tickets_implementations from grpc.framework.base.packets import implementations as tickets_implementations
from grpc.framework.base.packets import interfaces as tickets_interfaces from grpc.framework.base.packets import interfaces as tickets_interfaces # pylint: disable=unused-import
from grpc.framework.common import cardinality from grpc.framework.common import cardinality
from grpc.framework.common import style from grpc.framework.common import style
from grpc.framework.face import implementations as face_implementations from grpc.framework.face import implementations as face_implementations
from grpc.framework.face import interfaces as face_interfaces from grpc.framework.face import interfaces as face_interfaces # pylint: disable=unused-import
from grpc.framework.face import utilities as face_utilities from grpc.framework.face import utilities as face_utilities
from grpc.framework.foundation import activated from grpc.framework.foundation import activated # pylint: disable=unused-import
from grpc.framework.foundation import logging_pool from grpc.framework.foundation import logging_pool
_ONE_DAY_IN_SECONDS = 60 * 60 * 24 _ONE_DAY_IN_SECONDS = 60 * 60 * 24
@ -138,7 +140,13 @@ class _DynamicInlineStub(object):
with self._lock: with self._lock:
behavior = self._behaviors.get(attr) behavior = self._behaviors.get(attr)
if behavior is None: if behavior is None:
raise AttributeError(attr) for name, behavior in self._behaviors.iteritems():
last_slash_index = name.rfind('/')
if 0 <= last_slash_index and name[last_slash_index + 1:] == attr:
return behavior
else:
raise AttributeError(
'_DynamicInlineStub instance has no attribute "%s"!' % attr)
else: else:
return behavior return behavior

@ -94,7 +94,7 @@ LDXX_valgrind = g++
CPPFLAGS_valgrind = -O0 CPPFLAGS_valgrind = -O0
OPENSSL_CFLAGS_valgrind = -DPURIFY OPENSSL_CFLAGS_valgrind = -DPURIFY
LDFLAGS_valgrind = LDFLAGS_valgrind =
DEFINES_valgrind = _DEBUG DEBUG DEFINES_valgrind = _DEBUG DEBUG GRPC_TEST_SLOWDOWN_FACTOR=20
VALID_CONFIG_tsan = 1 VALID_CONFIG_tsan = 1
REQUIRE_CUSTOM_LIBRARIES_tsan = 1 REQUIRE_CUSTOM_LIBRARIES_tsan = 1
@ -104,7 +104,7 @@ LD_tsan = clang
LDXX_tsan = clang++ LDXX_tsan = clang++
CPPFLAGS_tsan = -O1 -fsanitize=thread -fno-omit-frame-pointer CPPFLAGS_tsan = -O1 -fsanitize=thread -fno-omit-frame-pointer
LDFLAGS_tsan = -fsanitize=thread LDFLAGS_tsan = -fsanitize=thread
DEFINES_tsan = NDEBUG DEFINES_tsan = NDEBUG GRPC_TEST_SLOWDOWN_FACTOR=10
VALID_CONFIG_asan = 1 VALID_CONFIG_asan = 1
REQUIRE_CUSTOM_LIBRARIES_asan = 1 REQUIRE_CUSTOM_LIBRARIES_asan = 1
@ -114,7 +114,7 @@ LD_asan = clang
LDXX_asan = clang++ LDXX_asan = clang++
CPPFLAGS_asan = -O1 -fsanitize=address -fno-omit-frame-pointer CPPFLAGS_asan = -O1 -fsanitize=address -fno-omit-frame-pointer
LDFLAGS_asan = -fsanitize=address LDFLAGS_asan = -fsanitize=address
DEFINES_asan = NDEBUG DEFINES_asan = NDEBUG GRPC_TEST_SLOWDOWN_FACTOR=5
VALID_CONFIG_msan = 1 VALID_CONFIG_msan = 1
REQUIRE_CUSTOM_LIBRARIES_msan = 1 REQUIRE_CUSTOM_LIBRARIES_msan = 1
@ -125,7 +125,7 @@ LDXX_msan = clang++-libc++
CPPFLAGS_msan = -O1 -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 CPPFLAGS_msan = -O1 -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1
OPENSSL_CFLAGS_msan = -DPURIFY OPENSSL_CFLAGS_msan = -DPURIFY
LDFLAGS_msan = -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 LDFLAGS_msan = -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1
DEFINES_msan = NDEBUG DEFINES_msan = NDEBUG GRPC_TEST_SLOWDOWN_FACTOR=20
VALID_CONFIG_ubsan = 1 VALID_CONFIG_ubsan = 1
REQUIRE_CUSTOM_LIBRARIES_ubsan = 1 REQUIRE_CUSTOM_LIBRARIES_ubsan = 1
@ -136,7 +136,7 @@ LDXX_ubsan = clang++
CPPFLAGS_ubsan = -O1 -fsanitize=undefined -fno-omit-frame-pointer CPPFLAGS_ubsan = -O1 -fsanitize=undefined -fno-omit-frame-pointer
OPENSSL_CFLAGS_ubsan = -DPURIFY OPENSSL_CFLAGS_ubsan = -DPURIFY
LDFLAGS_ubsan = -fsanitize=undefined LDFLAGS_ubsan = -fsanitize=undefined
DEFINES_ubsan = NDEBUG DEFINES_ubsan = NDEBUG GRPC_TEST_SLOWDOWN_FACTOR=10
VALID_CONFIG_gcov = 1 VALID_CONFIG_gcov = 1
CC_gcov = gcc CC_gcov = gcc

@ -77,10 +77,10 @@ static void channel_func(grpc_channel_element *elem,
} }
static void test_create_channel_stack(void) { static void test_create_channel_stack(void) {
const grpc_channel_filter const grpc_channel_filter filter = {
filter = {call_func, channel_func, sizeof(int), call_func, channel_func, sizeof(int),
call_init_func, call_destroy_func, sizeof(int), call_init_func, call_destroy_func, sizeof(int),
channel_init_func, channel_destroy_func, "some_test_filter" }; channel_init_func, channel_destroy_func, "some_test_filter"};
const grpc_channel_filter *filters = &filter; const grpc_channel_filter *filters = &filter;
grpc_channel_stack *channel_stack; grpc_channel_stack *channel_stack;
grpc_call_stack *call_stack; grpc_call_stack *call_stack;

@ -112,12 +112,12 @@ static void destroy_channel_elem(grpc_channel_element *elem) {}
static const grpc_channel_filter top_filter = { static const grpc_channel_filter top_filter = {
fail_call_op, fail_channel_op, sizeof(size_t), fail_call_op, fail_channel_op, sizeof(size_t),
init_call_elem, destroy_call_elem, sizeof(channel_data), init_call_elem, destroy_call_elem, sizeof(channel_data),
init_channel_elem, destroy_channel_elem, "top_filter" }; init_channel_elem, destroy_channel_elem, "top_filter"};
static const grpc_channel_filter bottom_filter = { static const grpc_channel_filter bottom_filter = {
expect_call_op, fail_channel_op, sizeof(size_t), expect_call_op, fail_channel_op, sizeof(size_t),
init_call_elem, destroy_call_elem, sizeof(channel_data), init_call_elem, destroy_call_elem, sizeof(channel_data),
init_channel_elem, destroy_channel_elem, "bottom_filter" }; init_channel_elem, destroy_channel_elem, "bottom_filter"};
static const grpc_channel_filter *filters[2] = {&top_filter, &bottom_filter}; static const grpc_channel_filter *filters[2] = {&top_filter, &bottom_filter};
@ -149,7 +149,7 @@ static void test_case(size_t key_prefix_len, size_t value_prefix_len,
op.flags = i; op.flags = i;
op.data.metadata = grpc_mdelem_from_slices(mdctx, key, value); op.data.metadata = grpc_mdelem_from_slices(mdctx, key, value);
op.done_cb = do_nothing; op.done_cb = do_nothing;
op.user_data = (void *)(gpr_uintptr)i; op.user_data = (void *)(gpr_uintptr) i;
grpc_metadata_buffer_queue(&buffer, &op); grpc_metadata_buffer_queue(&buffer, &op);
} }

@ -78,9 +78,8 @@ int main(int argc, char **argv) {
GPR_ASSERT(argc == 2); GPR_ASSERT(argc == 2);
channel = grpc_channel_create(argv[1], NULL); channel = grpc_channel_create(argv[1], NULL);
call = grpc_channel_create_call_old( call = grpc_channel_create_call_old(channel, "/foo", "localhost",
channel, "/foo", "localhost", GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5));
gpr_time_add(gpr_time_from_seconds(5), gpr_now()));
GPR_ASSERT(grpc_call_invoke_old(call, cq, (void *)1, (void *)1, 0) == GPR_ASSERT(grpc_call_invoke_old(call, cq, (void *)1, (void *)1, 0) ==
GRPC_CALL_OK); GRPC_CALL_OK);

@ -166,7 +166,7 @@ int main(int argc, char **argv) {
shutdown_started = 1; shutdown_started = 1;
} }
ev = grpc_completion_queue_next( ev = grpc_completion_queue_next(
cq, gpr_time_add(gpr_now(), gpr_time_from_micros(1000000))); cq, gpr_time_add(gpr_now(), gpr_time_from_seconds(1)));
if (!ev) continue; if (!ev) continue;
s = ev->tag; s = ev->tag;
switch (ev->type) { switch (ev->type) {

@ -116,7 +116,8 @@ static int has_metadata(const grpc_metadata *md, size_t count, const char *key,
return 0; return 0;
} }
int contains_metadata(grpc_metadata_array *array, const char *key, const char *value) { int contains_metadata(grpc_metadata_array *array, const char *key,
const char *value) {
return has_metadata(array->metadata, array->count, key, value); return has_metadata(array->metadata, array->count, key, value);
} }
@ -327,8 +328,7 @@ static void fail_no_event_received(cq_verifier *v) {
} }
void cq_verify(cq_verifier *v) { void cq_verify(cq_verifier *v) {
gpr_timespec deadline = gpr_timespec deadline = GRPC_TIMEOUT_SECONDS_TO_DEADLINE(10);
gpr_time_add(gpr_now(), gpr_time_from_micros(10 * GPR_US_PER_SEC));
grpc_event *ev; grpc_event *ev;
expectation *e; expectation *e;
char *s; char *s;
@ -371,8 +371,7 @@ void cq_verify(cq_verifier *v) {
} }
void cq_verify_empty(cq_verifier *v) { void cq_verify_empty(cq_verifier *v) {
gpr_timespec deadline = gpr_timespec deadline = gpr_time_add(gpr_now(), gpr_time_from_seconds(1));
gpr_time_add(gpr_now(), gpr_time_from_micros(3000000));
grpc_event *ev; grpc_event *ev;
GPR_ASSERT(v->expect.next == &v->expect && "expectation queue must be empty"); GPR_ASSERT(v->expect.next == &v->expect && "expectation queue must be empty");

@ -35,6 +35,7 @@
#define __GRPC_TEST_END2END_CQ_VERIFIER_H__ #define __GRPC_TEST_END2END_CQ_VERIFIER_H__
#include <grpc/grpc.h> #include <grpc/grpc.h>
#include "test/core/util/test_config.h"
/* A cq_verifier can verify that expected events arrive in a timely fashion /* A cq_verifier can verify that expected events arrive in a timely fashion
on a single completion queue */ on a single completion queue */

@ -45,7 +45,7 @@
static void *tag(gpr_intptr i) { return (void *)i; } static void *tag(gpr_intptr i) { return (void *)i; }
static gpr_timespec ms_from_now(int ms) { static gpr_timespec ms_from_now(int ms) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_MS * ms)); return GRPC_TIMEOUT_MILLIS_TO_DEADLINE(ms);
} }
static void drain_cq(grpc_completion_queue *cq) { static void drain_cq(grpc_completion_queue *cq) {
@ -75,6 +75,10 @@ void test_connect(const char *server_host, const char *client_host, int port,
gpr_timespec deadline; gpr_timespec deadline;
int got_port; int got_port;
if (port == 0) {
port = grpc_pick_unused_port_or_die();
}
gpr_join_host_port(&server_hostport, server_host, port); gpr_join_host_port(&server_hostport, server_host, port);
/* Create server. */ /* Create server. */
@ -179,7 +183,6 @@ void test_connect(const char *server_host, const char *client_host, int port,
int main(int argc, char **argv) { int main(int argc, char **argv) {
int do_ipv6 = 1; int do_ipv6 = 1;
int fixed_port;
grpc_test_init(argc, argv); grpc_test_init(argc, argv);
grpc_init(); grpc_init();
@ -189,32 +192,28 @@ int main(int argc, char **argv) {
do_ipv6 = 0; do_ipv6 = 0;
} }
for (fixed_port = 0; fixed_port <= 1; fixed_port++) {
int port = fixed_port ? grpc_pick_unused_port_or_die() : 0;
/* For coverage, test with and without dualstack sockets. */ /* For coverage, test with and without dualstack sockets. */
for (grpc_forbid_dualstack_sockets_for_testing = 0; for (grpc_forbid_dualstack_sockets_for_testing = 0;
grpc_forbid_dualstack_sockets_for_testing <= 1; grpc_forbid_dualstack_sockets_for_testing <= 1;
grpc_forbid_dualstack_sockets_for_testing++) { grpc_forbid_dualstack_sockets_for_testing++) {
/* :: and 0.0.0.0 are handled identically. */ /* :: and 0.0.0.0 are handled identically. */
test_connect("::", "127.0.0.1", port, 1); test_connect("::", "127.0.0.1", 0, 1);
test_connect("::", "::ffff:127.0.0.1", port, 1); test_connect("::", "::ffff:127.0.0.1", 0, 1);
test_connect("::", "localhost", port, 1); test_connect("::", "localhost", 0, 1);
test_connect("0.0.0.0", "127.0.0.1", port, 1); test_connect("0.0.0.0", "127.0.0.1", 0, 1);
test_connect("0.0.0.0", "::ffff:127.0.0.1", port, 1); test_connect("0.0.0.0", "::ffff:127.0.0.1", 0, 1);
test_connect("0.0.0.0", "localhost", port, 1); test_connect("0.0.0.0", "localhost", 0, 1);
if (do_ipv6) { if (do_ipv6) {
test_connect("::", "::1", port, 1); test_connect("::", "::1", 0, 1);
test_connect("0.0.0.0", "::1", port, 1); test_connect("0.0.0.0", "::1", 0, 1);
} }
/* These only work when the families agree. */ /* These only work when the families agree. */
test_connect("127.0.0.1", "127.0.0.1", port, 1); test_connect("127.0.0.1", "127.0.0.1", 0, 1);
if (do_ipv6) { if (do_ipv6) {
test_connect("::1", "::1", port, 1); test_connect("::1", "::1", 0, 1);
test_connect("::1", "127.0.0.1", port, 0); test_connect("::1", "127.0.0.1", 0, 0);
test_connect("127.0.0.1", "::1", port, 0); test_connect("127.0.0.1", "::1", 0, 0);
}
} }
} }

@ -117,7 +117,8 @@ static grpc_end2end_test_config configs[] = {
chttp2_create_fixture_secure_fullstack, chttp2_create_fixture_secure_fullstack,
chttp2_init_client_fake_secure_fullstack, chttp2_init_client_fake_secure_fullstack,
chttp2_init_server_fake_secure_fullstack, chttp2_init_server_fake_secure_fullstack,
chttp2_tear_down_secure_fullstack}, }; chttp2_tear_down_secure_fullstack},
};
int main(int argc, char **argv) { int main(int argc, char **argv) {
size_t i; size_t i;

@ -99,7 +99,8 @@ void chttp2_tear_down_fullstack(grpc_end2end_test_fixture *f) {
static grpc_end2end_test_config configs[] = { static grpc_end2end_test_config configs[] = {
{"chttp2/fullstack", FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION, {"chttp2/fullstack", FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION,
chttp2_create_fixture_fullstack, chttp2_init_client_fullstack, chttp2_create_fixture_fullstack, chttp2_init_client_fullstack,
chttp2_init_server_fullstack, chttp2_tear_down_fullstack}, }; chttp2_init_server_fullstack, chttp2_tear_down_fullstack},
};
int main(int argc, char **argv) { int main(int argc, char **argv) {
size_t i; size_t i;

@ -101,8 +101,7 @@ void chttp2_tear_down_secure_fullstack(grpc_end2end_test_fixture *f) {
static void chttp2_init_client_simple_ssl_secure_fullstack( static void chttp2_init_client_simple_ssl_secure_fullstack(
grpc_end2end_test_fixture *f, grpc_channel_args *client_args) { grpc_end2end_test_fixture *f, grpc_channel_args *client_args) {
grpc_credentials *ssl_creds = grpc_credentials *ssl_creds = grpc_ssl_credentials_create(NULL, NULL);
grpc_ssl_credentials_create(NULL, NULL);
grpc_arg ssl_name_override = {GRPC_ARG_STRING, grpc_arg ssl_name_override = {GRPC_ARG_STRING,
GRPC_SSL_TARGET_NAME_OVERRIDE_ARG, GRPC_SSL_TARGET_NAME_OVERRIDE_ARG,
{"foo.test.google.fr"}}; {"foo.test.google.fr"}};
@ -128,7 +127,8 @@ static grpc_end2end_test_config configs[] = {
chttp2_create_fixture_secure_fullstack, chttp2_create_fixture_secure_fullstack,
chttp2_init_client_simple_ssl_secure_fullstack, chttp2_init_client_simple_ssl_secure_fullstack,
chttp2_init_server_simple_ssl_secure_fullstack, chttp2_init_server_simple_ssl_secure_fullstack,
chttp2_tear_down_secure_fullstack}, }; chttp2_tear_down_secure_fullstack},
};
int main(int argc, char **argv) { int main(int argc, char **argv) {
size_t i; size_t i;

@ -133,7 +133,8 @@ static grpc_end2end_test_config configs[] = {
chttp2_create_fixture_secure_fullstack, chttp2_create_fixture_secure_fullstack,
chttp2_init_client_simple_ssl_with_oauth2_secure_fullstack, chttp2_init_client_simple_ssl_with_oauth2_secure_fullstack,
chttp2_init_server_simple_ssl_secure_fullstack, chttp2_init_server_simple_ssl_secure_fullstack,
chttp2_tear_down_secure_fullstack}, }; chttp2_tear_down_secure_fullstack},
};
int main(int argc, char **argv) { int main(int argc, char **argv) {
size_t i; size_t i;

@ -133,7 +133,8 @@ static void chttp2_tear_down_socketpair(grpc_end2end_test_fixture *f) {
static grpc_end2end_test_config configs[] = { static grpc_end2end_test_config configs[] = {
{"chttp2/socketpair", 0, chttp2_create_fixture_socketpair, {"chttp2/socketpair", 0, chttp2_create_fixture_socketpair,
chttp2_init_client_socketpair, chttp2_init_server_socketpair, chttp2_init_client_socketpair, chttp2_init_server_socketpair,
chttp2_tear_down_socketpair}, }; chttp2_tear_down_socketpair},
};
int main(int argc, char **argv) { int main(int argc, char **argv) {
size_t i; size_t i;

@ -133,7 +133,8 @@ static void chttp2_tear_down_socketpair(grpc_end2end_test_fixture *f) {
static grpc_end2end_test_config configs[] = { static grpc_end2end_test_config configs[] = {
{"chttp2/socketpair_one_byte_at_a_time", 0, {"chttp2/socketpair_one_byte_at_a_time", 0,
chttp2_create_fixture_socketpair, chttp2_init_client_socketpair, chttp2_create_fixture_socketpair, chttp2_init_client_socketpair,
chttp2_init_server_socketpair, chttp2_tear_down_socketpair}, }; chttp2_init_server_socketpair, chttp2_tear_down_socketpair},
};
int main(int argc, char **argv) { int main(int argc, char **argv) {
size_t i; size_t i;

@ -41,8 +41,7 @@ static void *tag(gpr_intptr i) { return (void *)i; }
int main(int argc, char **argv) { int main(int argc, char **argv) {
grpc_channel *chan; grpc_channel *chan;
grpc_call *call; grpc_call *call;
gpr_timespec timeout = gpr_time_from_seconds(4); gpr_timespec deadline = GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5);
gpr_timespec deadline = gpr_time_add(gpr_now(), timeout);
grpc_completion_queue *cq; grpc_completion_queue *cq;
cq_verifier *cqv; cq_verifier *cqv;
grpc_event *ev; grpc_event *ev;

@ -62,7 +62,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -163,11 +163,9 @@ static void test_cancel_after_accept(grpc_end2end_test_config config,
op++; op++;
GPR_ASSERT(GRPC_CALL_OK == grpc_call_start_batch(c, ops, op - ops, tag(1))); GPR_ASSERT(GRPC_CALL_OK == grpc_call_start_batch(c, ops, op - ops, tag(1)));
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call(f.server, &s, GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call(
&call_details, f.server, &s, &call_details,
&request_metadata_recv, &request_metadata_recv, f.server_cq, tag(2)));
f.server_cq,
tag(2)));
cq_expect_completion(v_server, tag(2), GRPC_OP_OK); cq_expect_completion(v_server, tag(2), GRPC_OP_OK);
cq_verify(v_server); cq_verify(v_server);

@ -62,7 +62,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -121,8 +121,8 @@ static void test_cancel_after_accept_and_writes_closed(
grpc_call_invoke_old(c, f.client_cq, tag(2), tag(3), 0)); grpc_call_invoke_old(c, f.client_cq, tag(2), tag(3), 0));
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f.server, tag(100))); GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f.server, tag(100)));
cq_expect_server_rpc_new(v_server, &s, tag(100), "/foo", cq_expect_server_rpc_new(v_server, &s, tag(100), "/foo", "foo.test.google.fr",
"foo.test.google.fr", deadline, NULL); deadline, NULL);
cq_verify(v_server); cq_verify(v_server);
GPR_ASSERT(GRPC_CALL_OK == GPR_ASSERT(GRPC_CALL_OK ==

@ -62,7 +62,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -62,7 +62,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -62,7 +62,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -62,7 +62,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -103,7 +103,8 @@ static void end_test(grpc_end2end_test_fixture *f) {
} }
/* Cancel before invoke */ /* Cancel before invoke */
static void test_cancel_before_invoke(grpc_end2end_test_config config, int test_ops) { static void test_cancel_before_invoke(grpc_end2end_test_config config,
int test_ops) {
grpc_op ops[6]; grpc_op ops[6];
grpc_op *op; grpc_op *op;
grpc_call *c; grpc_call *c;

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -60,7 +60,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -60,7 +60,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -46,7 +46,7 @@
#include "test/core/end2end/cq_verifier.h" #include "test/core/end2end/cq_verifier.h"
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config, static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,

@ -46,7 +46,7 @@
#include "test/core/end2end/cq_verifier.h" #include "test/core/end2end/cq_verifier.h"
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config, static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,

@ -49,7 +49,7 @@ enum { TIMEOUT = 200000 };
static void *tag(gpr_intptr t) { return (void *)t; } static void *tag(gpr_intptr t) { return (void *)t; }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -109,8 +109,8 @@ static void do_request_and_shutdown_server(grpc_end2end_test_fixture *f,
cq_verify(v_client); cq_verify(v_client);
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f->server, tag(100))); GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f->server, tag(100)));
cq_expect_server_rpc_new(v_server, &s, tag(100), "/foo", cq_expect_server_rpc_new(v_server, &s, tag(100), "/foo", "foo.test.google.fr",
"foo.test.google.fr", deadline, NULL); deadline, NULL);
cq_verify(v_server); cq_verify(v_server);
GPR_ASSERT(GRPC_CALL_OK == GPR_ASSERT(GRPC_CALL_OK ==

@ -49,7 +49,7 @@ enum { TIMEOUT = 200000 };
static void *tag(gpr_intptr t) { return (void *)t; } static void *tag(gpr_intptr t) { return (void *)t; }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -123,8 +123,8 @@ static void test_early_server_shutdown_finishes_inflight_calls(
cq_verify(v_client); cq_verify(v_client);
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f.server, tag(100))); GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f.server, tag(100)));
cq_expect_server_rpc_new(v_server, &s, tag(100), "/foo", cq_expect_server_rpc_new(v_server, &s, tag(100), "/foo", "foo.test.google.fr",
"foo.test.google.fr", deadline, NULL); deadline, NULL);
cq_verify(v_server); cq_verify(v_server);
GPR_ASSERT(GRPC_CALL_OK == GPR_ASSERT(GRPC_CALL_OK ==

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -63,7 +63,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -122,8 +122,8 @@ static void test_early_server_shutdown_finishes_inflight_calls(
cq_verify(v_client); cq_verify(v_client);
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f.server, tag(100))); GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f.server, tag(100)));
cq_expect_server_rpc_new(v_server, &s, tag(100), "/foo", cq_expect_server_rpc_new(v_server, &s, tag(100), "/foo", "foo.test.google.fr",
"foo.test.google.fr", deadline, NULL); deadline, NULL);
cq_verify(v_server); cq_verify(v_server);
GPR_ASSERT(GRPC_CALL_OK == GPR_ASSERT(GRPC_CALL_OK ==

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static void drain_cq(grpc_completion_queue *cq) { static void drain_cq(grpc_completion_queue *cq) {
@ -138,8 +138,8 @@ static void test_invoke_large_request(grpc_end2end_test_config config) {
request (as this request is very large) */ request (as this request is very large) */
cq_verify_empty(v_client); cq_verify_empty(v_client);
cq_expect_server_rpc_new(v_server, &s, tag(100), "/foo", cq_expect_server_rpc_new(v_server, &s, tag(100), "/foo", "foo.test.google.fr",
"foo.test.google.fr", deadline, NULL); deadline, NULL);
cq_verify(v_server); cq_verify(v_server);
GPR_ASSERT(GRPC_CALL_OK == GPR_ASSERT(GRPC_CALL_OK ==

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static void drain_cq(grpc_completion_queue *cq) { static void drain_cq(grpc_completion_queue *cq) {

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -121,8 +121,8 @@ static void simple_request_body(grpc_end2end_test_fixture f) {
cq_verify(v_client); cq_verify(v_client);
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f.server, tag(100))); GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f.server, tag(100)));
cq_expect_server_rpc_new(v_server, &s, tag(100), "/foo", cq_expect_server_rpc_new(v_server, &s, tag(100), "/foo", "foo.test.google.fr",
"foo.test.google.fr", deadline, NULL); deadline, NULL);
cq_verify(v_server); cq_verify(v_server);
GPR_ASSERT(GRPC_CALL_OK == GPR_ASSERT(GRPC_CALL_OK ==
@ -196,7 +196,7 @@ static void test_max_concurrent_streams(grpc_end2end_test_config config) {
GPR_ASSERT(GRPC_CALL_OK == GPR_ASSERT(GRPC_CALL_OK ==
grpc_call_invoke_old(c2, f.client_cq, tag(401), tag(402), 0)); grpc_call_invoke_old(c2, f.client_cq, tag(401), tag(402), 0));
GPR_ASSERT(GRPC_CALL_OK == grpc_call_writes_done_old(c1, tag(303))); GPR_ASSERT(GRPC_CALL_OK == grpc_call_writes_done_old(c1, tag(303)));
GPR_ASSERT(GRPC_CALL_OK == grpc_call_writes_done_old(c2, tag(303))); GPR_ASSERT(GRPC_CALL_OK == grpc_call_writes_done_old(c2, tag(403)));
ev = grpc_completion_queue_next( ev = grpc_completion_queue_next(
f.client_cq, gpr_time_add(gpr_now(), gpr_time_from_seconds(10))); f.client_cq, gpr_time_add(gpr_now(), gpr_time_from_seconds(10)));
@ -230,8 +230,8 @@ static void test_max_concurrent_streams(grpc_end2end_test_config config) {
/* first request is finished, we should be able to start the second */ /* first request is finished, we should be able to start the second */
cq_expect_finished_with_status(v_client, tag(live_call + 2), cq_expect_finished_with_status(v_client, tag(live_call + 2),
GRPC_STATUS_UNIMPLEMENTED, "xyz", NULL); GRPC_STATUS_UNIMPLEMENTED, "xyz", NULL);
cq_expect_finish_accepted(v_client, tag(live_call + 3), GRPC_OP_OK);
live_call = (live_call == 300) ? 400 : 300; live_call = (live_call == 300) ? 400 : 300;
cq_expect_finish_accepted(v_client, tag(live_call + 3), GRPC_OP_OK);
cq_verify(v_client); cq_verify(v_client);
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f.server, tag(200))); GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f.server, tag(200)));

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -196,7 +196,7 @@ static void test_max_concurrent_streams(grpc_end2end_test_config config) {
GPR_ASSERT(GRPC_CALL_OK == GPR_ASSERT(GRPC_CALL_OK ==
grpc_call_invoke_old(c2, f.client_cq, tag(401), tag(402), 0)); grpc_call_invoke_old(c2, f.client_cq, tag(401), tag(402), 0));
GPR_ASSERT(GRPC_CALL_OK == grpc_call_writes_done_old(c1, tag(303))); GPR_ASSERT(GRPC_CALL_OK == grpc_call_writes_done_old(c1, tag(303)));
GPR_ASSERT(GRPC_CALL_OK == grpc_call_writes_done_old(c2, tag(303))); GPR_ASSERT(GRPC_CALL_OK == grpc_call_writes_done_old(c2, tag(403)));
ev = grpc_completion_queue_next( ev = grpc_completion_queue_next(
f.client_cq, gpr_time_add(gpr_now(), gpr_time_from_seconds(10))); f.client_cq, gpr_time_add(gpr_now(), gpr_time_from_seconds(10)));
@ -230,8 +230,8 @@ static void test_max_concurrent_streams(grpc_end2end_test_config config) {
/* first request is finished, we should be able to start the second */ /* first request is finished, we should be able to start the second */
cq_expect_finished_with_status(v_client, tag(live_call + 2), cq_expect_finished_with_status(v_client, tag(live_call + 2),
GRPC_STATUS_UNIMPLEMENTED, "xyz", NULL); GRPC_STATUS_UNIMPLEMENTED, "xyz", NULL);
cq_expect_finish_accepted(v_client, tag(live_call + 3), GRPC_OP_OK);
live_call = (live_call == 300) ? 400 : 300; live_call = (live_call == 300) ? 400 : 300;
cq_expect_finish_accepted(v_client, tag(live_call + 3), GRPC_OP_OK);
cq_verify(v_client); cq_verify(v_client);
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f.server, tag(200))); GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f.server, tag(200)));

@ -59,7 +59,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -59,7 +59,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -127,8 +127,8 @@ static void test_pingpong_streaming(grpc_end2end_test_config config,
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f.server, tag(100))); GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f.server, tag(100)));
cq_expect_server_rpc_new(v_server, &s, tag(100), "/foo", cq_expect_server_rpc_new(v_server, &s, tag(100), "/foo", "foo.test.google.fr",
"foo.test.google.fr", deadline, NULL); deadline, NULL);
cq_verify(v_server); cq_verify(v_server);
GPR_ASSERT(GRPC_CALL_OK == GPR_ASSERT(GRPC_CALL_OK ==
grpc_call_server_accept_old(s, f.server_cq, tag(102))); grpc_call_server_accept_old(s, f.server_cq, tag(102)));

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -175,8 +175,7 @@ static void test_request_response_with_metadata_and_payload(
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call(f.server, &s, GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call(f.server, &s,
&call_details, &call_details,
&request_metadata_recv, &request_metadata_recv,
f.server_cq, f.server_cq, tag(101)));
tag(101)));
cq_expect_completion(v_server, tag(101), GRPC_OP_OK); cq_expect_completion(v_server, tag(101), GRPC_OP_OK);
cq_verify(v_server); cq_verify(v_server);

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -157,9 +157,10 @@ static void test_request_response_with_metadata_and_payload(
cq_verify(v_client); cq_verify(v_client);
cq_expect_server_rpc_new( cq_expect_server_rpc_new(
v_server, &s, tag(100), "/foo", "foo.test.google.fr", deadline, "key1-bin", v_server, &s, tag(100), "/foo", "foo.test.google.fr", deadline,
"\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc", "key2-bin", "key1-bin", "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc",
"\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d", NULL); "key2-bin", "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d",
NULL);
cq_verify(v_server); cq_verify(v_server);
grpc_call_server_accept_old(s, f.server_cq, tag(102)); grpc_call_server_accept_old(s, f.server_cq, tag(102));

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -168,8 +168,7 @@ static void test_request_response_with_metadata_and_payload(
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call(f.server, &s, GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call(f.server, &s,
&call_details, &call_details,
&request_metadata_recv, &request_metadata_recv,
f.server_cq, f.server_cq, tag(101)));
tag(101)));
cq_expect_completion(v_server, tag(101), GRPC_OP_OK); cq_expect_completion(v_server, tag(101), GRPC_OP_OK);
cq_verify(v_server); cq_verify(v_server);

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -162,8 +162,7 @@ static void request_response_with_payload(grpc_end2end_test_fixture f) {
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call(f.server, &s, GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call(f.server, &s,
&call_details, &call_details,
&request_metadata_recv, &request_metadata_recv,
f.server_cq, f.server_cq, tag(101)));
tag(101)));
cq_expect_completion(v_server, tag(101), GRPC_OP_OK); cq_expect_completion(v_server, tag(101), GRPC_OP_OK);
cq_verify(v_server); cq_verify(v_server);

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -169,8 +169,7 @@ static void test_request_response_with_metadata_and_payload(
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call(f.server, &s, GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call(f.server, &s,
&call_details, &call_details,
&request_metadata_recv, &request_metadata_recv,
f.server_cq, f.server_cq, tag(101)));
tag(101)));
cq_expect_completion(v_server, tag(101), GRPC_OP_OK); cq_expect_completion(v_server, tag(101), GRPC_OP_OK);
cq_verify(v_server); cq_verify(v_server);

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -134,7 +134,7 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) {
meta.key = "key"; meta.key = "key";
meta.value = gpr_malloc(large_size + 1); meta.value = gpr_malloc(large_size + 1);
memset((char *)meta.value, 'a', large_size); memset((char *)meta.value, 'a', large_size);
((char*)meta.value)[large_size] = 0; ((char *)meta.value)[large_size] = 0;
meta.value_length = large_size; meta.value_length = large_size;
grpc_metadata_array_init(&initial_metadata_recv); grpc_metadata_array_init(&initial_metadata_recv);
@ -166,8 +166,7 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) {
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call(f.server, &s, GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call(f.server, &s,
&call_details, &call_details,
&request_metadata_recv, &request_metadata_recv,
f.server_cq, f.server_cq, tag(101)));
tag(101)));
cq_expect_completion(v_server, tag(101), GRPC_OP_OK); cq_expect_completion(v_server, tag(101), GRPC_OP_OK);
cq_verify(v_server); cq_verify(v_server);

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -118,7 +118,7 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) {
meta.key = "key"; meta.key = "key";
meta.value = gpr_malloc(large_size + 1); meta.value = gpr_malloc(large_size + 1);
memset((char *)meta.value, 'a', large_size); memset((char *)meta.value, 'a', large_size);
((char*)meta.value)[large_size] = 0; ((char *)meta.value)[large_size] = 0;
meta.value_length = large_size; meta.value_length = large_size;
c = grpc_channel_create_call_old(f.client, "/foo", "foo.test.google.fr", c = grpc_channel_create_call_old(f.client, "/foo", "foo.test.google.fr",

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -157,8 +157,7 @@ static void test_invoke_request_with_payload(grpc_end2end_test_config config) {
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call(f.server, &s, GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call(f.server, &s,
&call_details, &call_details,
&request_metadata_recv, &request_metadata_recv,
f.server_cq, f.server_cq, tag(101)));
tag(101)));
cq_expect_completion(v_server, tag(101), GRPC_OP_OK); cq_expect_completion(v_server, tag(101), GRPC_OP_OK);
cq_verify(v_server); cq_verify(v_server);

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -49,7 +49,7 @@ enum { TIMEOUT = 200000 };
static void *tag(gpr_intptr t) { return (void *)t; } static void *tag(gpr_intptr t) { return (void *)t; }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -144,8 +144,7 @@ static void simple_delayed_request_body(grpc_end2end_test_config config,
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call(f->server, &s, GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call(f->server, &s,
&call_details, &call_details,
&request_metadata_recv, &request_metadata_recv,
f->server_cq, f->server_cq, tag(101)));
tag(101)));
cq_expect_completion(v_server, tag(101), GRPC_OP_OK); cq_expect_completion(v_server, tag(101), GRPC_OP_OK);
cq_verify(v_server); cq_verify(v_server);

@ -49,7 +49,7 @@ enum { TIMEOUT = 200000 };
static void *tag(gpr_intptr t) { return (void *)t; } static void *tag(gpr_intptr t) { return (void *)t; }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -63,7 +63,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -150,8 +150,7 @@ static void simple_request_body(grpc_end2end_test_fixture f) {
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call(f.server, &s, GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call(f.server, &s,
&call_details, &call_details,
&request_metadata_recv, &request_metadata_recv,
f.server_cq, f.server_cq, tag(101)));
tag(101)));
cq_expect_completion(v_server, tag(101), GRPC_OP_OK); cq_expect_completion(v_server, tag(101), GRPC_OP_OK);
cq_verify(v_server); cq_verify(v_server);

@ -62,7 +62,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }

@ -41,6 +41,7 @@
#include <grpc/support/log.h> #include <grpc/support/log.h>
#include <grpc/support/time.h> #include <grpc/support/time.h>
#include <grpc/support/thd.h> #include <grpc/support/thd.h>
#include "test/core/util/test_config.h"
#define SERVER_THREADS 16 #define SERVER_THREADS 16
#define CLIENT_THREADS 16 #define CLIENT_THREADS 16
@ -53,7 +54,7 @@ static gpr_mu g_mu;
static int g_active_requests; static int g_active_requests;
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -280,11 +281,11 @@ static void run_test(grpc_end2end_test_config config, int requests_in_flight) {
/* kick off threads */ /* kick off threads */
for (i = 0; i < CLIENT_THREADS; i++) { for (i = 0; i < CLIENT_THREADS; i++) {
gpr_event_init(&g_client_done[i]); gpr_event_init(&g_client_done[i]);
gpr_thd_new(&thd_id, client_thread, (void *)(gpr_intptr)i, NULL); gpr_thd_new(&thd_id, client_thread, (void *)(gpr_intptr) i, NULL);
} }
for (i = 0; i < SERVER_THREADS; i++) { for (i = 0; i < SERVER_THREADS; i++) {
gpr_event_init(&g_server_done[i]); gpr_event_init(&g_server_done[i]);
gpr_thd_new(&thd_id, server_thread, (void *)(gpr_intptr)i, NULL); gpr_thd_new(&thd_id, server_thread, (void *)(gpr_intptr) i, NULL);
} }
/* start requests */ /* start requests */

@ -41,6 +41,7 @@
#include <grpc/support/log.h> #include <grpc/support/log.h>
#include <grpc/support/time.h> #include <grpc/support/time.h>
#include <grpc/support/thd.h> #include <grpc/support/thd.h>
#include "test/core/util/test_config.h"
#define SERVER_THREADS 16 #define SERVER_THREADS 16
#define CLIENT_THREADS 16 #define CLIENT_THREADS 16
@ -53,7 +54,7 @@ static gpr_mu g_mu;
static int g_active_requests; static int g_active_requests;
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -280,11 +281,11 @@ static void run_test(grpc_end2end_test_config config, int requests_in_flight) {
/* kick off threads */ /* kick off threads */
for (i = 0; i < CLIENT_THREADS; i++) { for (i = 0; i < CLIENT_THREADS; i++) {
gpr_event_init(&g_client_done[i]); gpr_event_init(&g_client_done[i]);
gpr_thd_new(&thd_id, client_thread, (void *)(gpr_intptr)i, NULL); gpr_thd_new(&thd_id, client_thread, (void *)(gpr_intptr) i, NULL);
} }
for (i = 0; i < SERVER_THREADS; i++) { for (i = 0; i < SERVER_THREADS; i++) {
gpr_event_init(&g_server_done[i]); gpr_event_init(&g_server_done[i]);
gpr_thd_new(&thd_id, server_thread, (void *)(gpr_intptr)i, NULL); gpr_thd_new(&thd_id, server_thread, (void *)(gpr_intptr) i, NULL);
} }
/* start requests */ /* start requests */

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -140,8 +140,8 @@ static void test_writes_done_hangs_with_pending_read(
cq_verify(v_client); cq_verify(v_client);
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f.server, tag(100))); GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f.server, tag(100)));
cq_expect_server_rpc_new(v_server, &s, tag(100), "/foo", cq_expect_server_rpc_new(v_server, &s, tag(100), "/foo", "foo.test.google.fr",
"foo.test.google.fr", deadline, NULL); deadline, NULL);
cq_verify(v_server); cq_verify(v_server);
GPR_ASSERT(GRPC_CALL_OK == GPR_ASSERT(GRPC_CALL_OK ==

@ -61,7 +61,7 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
} }
static gpr_timespec n_seconds_time(int n) { static gpr_timespec n_seconds_time(int n) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(GPR_US_PER_SEC * n)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n);
} }
static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); }
@ -140,8 +140,8 @@ static void test_writes_done_hangs_with_pending_read(
cq_verify(v_client); cq_verify(v_client);
GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f.server, tag(100))); GPR_ASSERT(GRPC_CALL_OK == grpc_server_request_call_old(f.server, tag(100)));
cq_expect_server_rpc_new(v_server, &s, tag(100), "/foo", cq_expect_server_rpc_new(v_server, &s, tag(100), "/foo", "foo.test.google.fr",
"foo.test.google.fr", deadline, NULL); deadline, NULL);
cq_verify(v_server); cq_verify(v_server);
GPR_ASSERT(GRPC_CALL_OK == GPR_ASSERT(GRPC_CALL_OK ==

@ -43,7 +43,7 @@
static gpr_event g_done; static gpr_event g_done;
static gpr_timespec n_seconds_time(int seconds) { static gpr_timespec n_seconds_time(int seconds) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(seconds * 1000000)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(seconds);
} }
static void on_finish(void *arg, const grpc_httpcli_response *response) { static void on_finish(void *arg, const grpc_httpcli_response *response) {

@ -61,13 +61,13 @@ static void add_test(void) {
/* 10 ms alarms. will expire in the current epoch */ /* 10 ms alarms. will expire in the current epoch */
for (i = 0; i < 10; i++) { for (i = 0; i < 10; i++) {
grpc_alarm_init(&alarms[i], gpr_time_add(start, gpr_time_from_millis(10)), grpc_alarm_init(&alarms[i], gpr_time_add(start, gpr_time_from_millis(10)),
cb, (void *)(gpr_intptr)i, start); cb, (void *)(gpr_intptr) i, start);
} }
/* 1010 ms alarms. will expire in the next epoch */ /* 1010 ms alarms. will expire in the next epoch */
for (i = 10; i < 20; i++) { for (i = 10; i < 20; i++) {
grpc_alarm_init(&alarms[i], gpr_time_add(start, gpr_time_from_millis(1010)), grpc_alarm_init(&alarms[i], gpr_time_add(start, gpr_time_from_millis(1010)),
cb, (void *)(gpr_intptr)i, start); cb, (void *)(gpr_intptr) i, start);
} }
/* collect alarms. Only the first batch should be ready. */ /* collect alarms. Only the first batch should be ready. */
@ -115,15 +115,15 @@ void destruction_test(void) {
memset(cb_called, 0, sizeof(cb_called)); memset(cb_called, 0, sizeof(cb_called));
grpc_alarm_init(&alarms[0], gpr_time_from_millis(100), cb, grpc_alarm_init(&alarms[0], gpr_time_from_millis(100), cb,
(void *)(gpr_intptr)0, gpr_time_0); (void *)(gpr_intptr) 0, gpr_time_0);
grpc_alarm_init(&alarms[1], gpr_time_from_millis(3), cb, grpc_alarm_init(&alarms[1], gpr_time_from_millis(3), cb,
(void *)(gpr_intptr)1, gpr_time_0); (void *)(gpr_intptr) 1, gpr_time_0);
grpc_alarm_init(&alarms[2], gpr_time_from_millis(100), cb, grpc_alarm_init(&alarms[2], gpr_time_from_millis(100), cb,
(void *)(gpr_intptr)2, gpr_time_0); (void *)(gpr_intptr) 2, gpr_time_0);
grpc_alarm_init(&alarms[3], gpr_time_from_millis(3), cb, grpc_alarm_init(&alarms[3], gpr_time_from_millis(3), cb,
(void *)(gpr_intptr)3, gpr_time_0); (void *)(gpr_intptr) 3, gpr_time_0);
grpc_alarm_init(&alarms[4], gpr_time_from_millis(1), cb, grpc_alarm_init(&alarms[4], gpr_time_from_millis(1), cb,
(void *)(gpr_intptr)4, gpr_time_0); (void *)(gpr_intptr) 4, gpr_time_0);
GPR_ASSERT(1 == grpc_alarm_check(NULL, gpr_time_from_millis(2), NULL)); GPR_ASSERT(1 == grpc_alarm_check(NULL, gpr_time_from_millis(2), NULL));
GPR_ASSERT(1 == cb_called[4][1]); GPR_ASSERT(1 == cb_called[4][1]);
grpc_alarm_cancel(&alarms[0]); grpc_alarm_cancel(&alarms[0]);

@ -113,10 +113,10 @@ static void test_grpc_alarm(void) {
gpr_cv_init(&arg.cv); gpr_cv_init(&arg.cv);
gpr_event_init(&arg.fcb_arg); gpr_event_init(&arg.fcb_arg);
grpc_alarm_init(&alarm, gpr_time_add(gpr_time_from_millis(100), gpr_now()), grpc_alarm_init(&alarm, GRPC_TIMEOUT_MILLIS_TO_DEADLINE(100), alarm_cb, &arg,
alarm_cb, &arg, gpr_now()); gpr_now());
alarm_deadline = gpr_time_add(gpr_now(), gpr_time_from_seconds(1)); alarm_deadline = GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1);
gpr_mu_lock(&arg.mu); gpr_mu_lock(&arg.mu);
while (arg.done == 0) { while (arg.done == 0) {
if (gpr_cv_wait(&arg.cv, &arg.mu, alarm_deadline)) { if (gpr_cv_wait(&arg.cv, &arg.mu, alarm_deadline)) {
@ -126,7 +126,7 @@ static void test_grpc_alarm(void) {
} }
gpr_mu_unlock(&arg.mu); gpr_mu_unlock(&arg.mu);
followup_deadline = gpr_time_add(gpr_now(), gpr_time_from_seconds(5)); followup_deadline = GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5);
fdone = gpr_event_wait(&arg.fcb_arg, followup_deadline); fdone = gpr_event_wait(&arg.fcb_arg, followup_deadline);
if (arg.counter != 1) { if (arg.counter != 1) {
@ -162,12 +162,11 @@ static void test_grpc_alarm(void) {
gpr_cv_init(&arg2.cv); gpr_cv_init(&arg2.cv);
gpr_event_init(&arg2.fcb_arg); gpr_event_init(&arg2.fcb_arg);
grpc_alarm_init(&alarm_to_cancel, grpc_alarm_init(&alarm_to_cancel, GRPC_TIMEOUT_MILLIS_TO_DEADLINE(100),
gpr_time_add(gpr_time_from_millis(100), gpr_now()), alarm_cb, alarm_cb, &arg2, gpr_now());
&arg2, gpr_now());
grpc_alarm_cancel(&alarm_to_cancel); grpc_alarm_cancel(&alarm_to_cancel);
alarm_deadline = gpr_time_add(gpr_now(), gpr_time_from_seconds(1)); alarm_deadline = GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1);
gpr_mu_lock(&arg2.mu); gpr_mu_lock(&arg2.mu);
while (arg2.done == 0) { while (arg2.done == 0) {
gpr_cv_wait(&arg2.cv, &arg2.mu, alarm_deadline); gpr_cv_wait(&arg2.cv, &arg2.mu, alarm_deadline);
@ -176,7 +175,7 @@ static void test_grpc_alarm(void) {
gpr_log(GPR_INFO, "alarm done = %d", arg2.done); gpr_log(GPR_INFO, "alarm done = %d", arg2.done);
followup_deadline = gpr_time_add(gpr_now(), gpr_time_from_seconds(5)); followup_deadline = GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5);
fdone = gpr_event_wait(&arg2.fcb_arg, followup_deadline); fdone = gpr_event_wait(&arg2.fcb_arg, followup_deadline);
if (arg2.counter != arg2.done_success_ctr) { if (arg2.counter != arg2.done_success_ctr) {

@ -39,6 +39,7 @@
#include <grpc/support/slice.h> #include <grpc/support/slice.h>
#include <grpc/support/log.h> #include <grpc/support/log.h>
#include <grpc/support/time.h> #include <grpc/support/time.h>
#include "test/core/util/test_config.h"
/* /*
General test notes: General test notes:
@ -211,7 +212,7 @@ static void read_and_write_test(grpc_endpoint_test_config config,
size_t num_bytes, size_t write_size, size_t num_bytes, size_t write_size,
size_t slice_size, int shutdown) { size_t slice_size, int shutdown) {
struct read_and_write_test_state state; struct read_and_write_test_state state;
gpr_timespec deadline = gpr_time_add(gpr_now(), gpr_time_from_seconds(20)); gpr_timespec deadline = GRPC_TIMEOUT_SECONDS_TO_DEADLINE(20);
grpc_endpoint_test_fixture f = begin_test(config, __FUNCTION__, slice_size); grpc_endpoint_test_fixture f = begin_test(config, __FUNCTION__, slice_size);
if (shutdown) { if (shutdown) {
@ -290,7 +291,7 @@ static void shutdown_during_write_test_read_handler(
if (error != GRPC_ENDPOINT_CB_OK) { if (error != GRPC_ENDPOINT_CB_OK) {
grpc_endpoint_destroy(st->ep); grpc_endpoint_destroy(st->ep);
gpr_event_set(&st->ev, (void *)(gpr_intptr)error); gpr_event_set(&st->ev, (void *)(gpr_intptr) error);
} else { } else {
grpc_endpoint_notify_on_read( grpc_endpoint_notify_on_read(
st->ep, shutdown_during_write_test_read_handler, user_data); st->ep, shutdown_during_write_test_read_handler, user_data);
@ -309,7 +310,7 @@ static void shutdown_during_write_test_write_handler(
gpr_log(GPR_ERROR, gpr_log(GPR_ERROR,
"shutdown_during_write_test_write_handler completed unexpectedly"); "shutdown_during_write_test_write_handler completed unexpectedly");
} }
gpr_event_set(&st->ev, (void *)(gpr_intptr)1); gpr_event_set(&st->ev, (void *)(gpr_intptr) 1);
} }
static void shutdown_during_write_test(grpc_endpoint_test_config config, static void shutdown_during_write_test(grpc_endpoint_test_config config,
@ -345,8 +346,7 @@ static void shutdown_during_write_test(grpc_endpoint_test_config config,
abort(); abort();
case GRPC_ENDPOINT_WRITE_PENDING: case GRPC_ENDPOINT_WRITE_PENDING:
grpc_endpoint_shutdown(write_st.ep); grpc_endpoint_shutdown(write_st.ep);
deadline = deadline = GRPC_TIMEOUT_SECONDS_TO_DEADLINE(10);
gpr_time_add(gpr_now(), gpr_time_from_micros(10 * GPR_US_PER_SEC));
GPR_ASSERT(gpr_event_wait(&write_st.ev, deadline)); GPR_ASSERT(gpr_event_wait(&write_st.ev, deadline));
grpc_endpoint_destroy(write_st.ep); grpc_endpoint_destroy(write_st.ep);
GPR_ASSERT(gpr_event_wait(&read_st.ev, deadline)); GPR_ASSERT(gpr_event_wait(&read_st.ev, deadline));

@ -39,7 +39,7 @@
#include "test/core/util/test_config.h" #include "test/core/util/test_config.h"
static gpr_timespec test_deadline(void) { static gpr_timespec test_deadline(void) {
return gpr_time_add(gpr_now(), gpr_time_from_micros(100000000)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(100);
} }
static void must_succeed(void* evp, grpc_resolved_addresses* p) { static void must_succeed(void* evp, grpc_resolved_addresses* p) {
@ -83,8 +83,9 @@ static void test_ipv6_with_port(void) {
} }
static void test_ipv6_without_port(void) { static void test_ipv6_without_port(void) {
const char* const kCases[] = {"2001:db8::1", "2001:db8::1.2.3.4", const char* const kCases[] = {
"[2001:db8::1]", }; "2001:db8::1", "2001:db8::1.2.3.4", "[2001:db8::1]",
};
unsigned i; unsigned i;
for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) { for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) {
gpr_event ev; gpr_event ev;
@ -95,7 +96,9 @@ static void test_ipv6_without_port(void) {
} }
static void test_invalid_ip_addresses(void) { static void test_invalid_ip_addresses(void) {
const char* const kCases[] = {"293.283.1238.3:1", "[2001:db8::11111]:1", }; const char* const kCases[] = {
"293.283.1238.3:1", "[2001:db8::11111]:1",
};
unsigned i; unsigned i;
for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) { for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) {
gpr_event ev; gpr_event ev;
@ -106,8 +109,9 @@ static void test_invalid_ip_addresses(void) {
} }
static void test_unparseable_hostports(void) { static void test_unparseable_hostports(void) {
const char* const kCases[] = {"[", "[::1", "[::1]bad", const char* const kCases[] = {
"[1.2.3.4]", "[localhost]", "[localhost]:1", }; "[", "[::1", "[::1]bad", "[1.2.3.4]", "[localhost]", "[localhost]:1",
};
unsigned i; unsigned i;
for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) { for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) {
gpr_event ev; gpr_event ev;

@ -43,9 +43,10 @@
#include "src/core/iomgr/socket_utils_posix.h" #include "src/core/iomgr/socket_utils_posix.h"
#include <grpc/support/log.h> #include <grpc/support/log.h>
#include <grpc/support/time.h> #include <grpc/support/time.h>
#include "test/core/util/test_config.h"
static gpr_timespec test_deadline(void) { static gpr_timespec test_deadline(void) {
return gpr_time_add(gpr_now(), gpr_time_from_seconds(10)); return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(10);
} }
static void must_succeed(void *arg, grpc_endpoint *tcp) { static void must_succeed(void *arg, grpc_endpoint *tcp) {
@ -150,13 +151,12 @@ void test_times_out(void) {
/* connect to dummy server address */ /* connect to dummy server address */
connect_deadline = gpr_time_add(gpr_now(), gpr_time_from_micros(1000000)); connect_deadline = GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1);
grpc_tcp_client_connect(must_fail, &ev, (struct sockaddr *)&addr, addr_len, grpc_tcp_client_connect(must_fail, &ev, (struct sockaddr *)&addr, addr_len,
connect_deadline); connect_deadline);
/* Make sure the event doesn't trigger early */ /* Make sure the event doesn't trigger early */
GPR_ASSERT(!gpr_event_wait( GPR_ASSERT(!gpr_event_wait(&ev, GRPC_TIMEOUT_MILLIS_TO_DEADLINE(500)));
&ev, gpr_time_add(gpr_now(), gpr_time_from_micros(500000))));
/* Now wait until it should have triggered */ /* Now wait until it should have triggered */
sleep(1); sleep(1);
@ -168,7 +168,8 @@ void test_times_out(void) {
} }
} }
int main(void) { int main(int argc, char **argv) {
grpc_test_init(argc, argv);
grpc_iomgr_init(); grpc_iomgr_init();
test_succeeds(); test_succeeds();
gpr_log(GPR_ERROR, "End of first test"); gpr_log(GPR_ERROR, "End of first test");

@ -163,8 +163,7 @@ static void read_test(ssize_t num_bytes, ssize_t slice_size) {
grpc_endpoint *ep; grpc_endpoint *ep;
struct read_socket_state state; struct read_socket_state state;
ssize_t written_bytes; ssize_t written_bytes;
gpr_timespec rel_deadline = {20, 0}; gpr_timespec deadline = GRPC_TIMEOUT_SECONDS_TO_DEADLINE(20);
gpr_timespec deadline = gpr_time_add(gpr_now(), rel_deadline);
gpr_log(GPR_INFO, "Read test of size %d, slice size %d", num_bytes, gpr_log(GPR_INFO, "Read test of size %d, slice size %d", num_bytes,
slice_size); slice_size);
@ -206,8 +205,7 @@ static void large_read_test(ssize_t slice_size) {
grpc_endpoint *ep; grpc_endpoint *ep;
struct read_socket_state state; struct read_socket_state state;
ssize_t written_bytes; ssize_t written_bytes;
gpr_timespec rel_deadline = {20, 0}; gpr_timespec deadline = GRPC_TIMEOUT_SECONDS_TO_DEADLINE(20);
gpr_timespec deadline = gpr_time_add(gpr_now(), rel_deadline);
gpr_log(GPR_INFO, "Start large read test, slice size %d", slice_size); gpr_log(GPR_INFO, "Start large read test, slice size %d", slice_size);
@ -343,8 +341,7 @@ static void write_test(ssize_t num_bytes, ssize_t slice_size) {
size_t num_blocks; size_t num_blocks;
gpr_slice *slices; gpr_slice *slices;
int current_data = 0; int current_data = 0;
gpr_timespec rel_deadline = {20, 0}; gpr_timespec deadline = GRPC_TIMEOUT_SECONDS_TO_DEADLINE(20);
gpr_timespec deadline = gpr_time_add(gpr_now(), rel_deadline);
gpr_log(GPR_INFO, "Start write test with %d bytes, slice size %d", num_bytes, gpr_log(GPR_INFO, "Start write test with %d bytes, slice size %d", num_bytes,
slice_size); slice_size);
@ -400,8 +397,7 @@ static void write_error_test(ssize_t num_bytes, ssize_t slice_size) {
size_t num_blocks; size_t num_blocks;
gpr_slice *slices; gpr_slice *slices;
int current_data = 0; int current_data = 0;
gpr_timespec rel_deadline = {20, 0}; gpr_timespec deadline = GRPC_TIMEOUT_SECONDS_TO_DEADLINE(20);
gpr_timespec deadline = gpr_time_add(gpr_now(), rel_deadline);
gpr_log(GPR_INFO, "Start write error test with %d bytes, slice size %d", gpr_log(GPR_INFO, "Start write error test with %d bytes, slice size %d",
num_bytes, slice_size); num_bytes, slice_size);
@ -482,7 +478,8 @@ static grpc_endpoint_test_fixture create_fixture_tcp_socketpair(
} }
static grpc_endpoint_test_config configs[] = { static grpc_endpoint_test_config configs[] = {
{"tcp/tcp_socketpair", create_fixture_tcp_socketpair, clean_up}, }; {"tcp/tcp_socketpair", create_fixture_tcp_socketpair, clean_up},
};
int main(int argc, char **argv) { int main(int argc, char **argv) {
grpc_test_init(argc, argv); grpc_test_init(argc, argv);

@ -123,7 +123,7 @@ static void test_connect(int n) {
grpc_tcp_server_start(s, NULL, 0, on_connect, NULL); grpc_tcp_server_start(s, NULL, 0, on_connect, NULL);
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
deadline = gpr_time_add(gpr_now(), gpr_time_from_micros(10000000)); deadline = GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1);
nconnects_before = nconnects; nconnects_before = nconnects;
clifd = socket(addr.ss_family, SOCK_STREAM, 0); clifd = socket(addr.ss_family, SOCK_STREAM, 0);

@ -40,9 +40,7 @@
#include "src/core/json/json_reader.h" #include "src/core/json/json_reader.h"
#include "src/core/json/json_writer.h" #include "src/core/json/json_writer.h"
typedef struct json_writer_userdata { typedef struct json_writer_userdata { FILE* out; } json_writer_userdata;
FILE* out;
} json_writer_userdata;
typedef struct stacked_container { typedef struct stacked_container {
grpc_json_type type; grpc_json_type type;
@ -76,11 +74,9 @@ static void json_writer_output_string_with_len(void* userdata, const char* str,
fwrite(str, len, 1, state->out); fwrite(str, len, 1, state->out);
} }
grpc_json_writer_vtable writer_vtable = { grpc_json_writer_vtable writer_vtable = {json_writer_output_char,
json_writer_output_char,
json_writer_output_string, json_writer_output_string,
json_writer_output_string_with_len json_writer_output_string_with_len};
};
static void check_string(json_reader_userdata* state, size_t needed) { static void check_string(json_reader_userdata* state, size_t needed) {
if (state->free_space >= needed) return; if (state->free_space >= needed) return;
@ -202,19 +198,12 @@ static void json_reader_set_null(void* userdata) {
} }
static grpc_json_reader_vtable reader_vtable = { static grpc_json_reader_vtable reader_vtable = {
json_reader_string_clear, json_reader_string_clear, json_reader_string_add_char,
json_reader_string_add_char, json_reader_string_add_utf32, json_reader_read_char,
json_reader_string_add_utf32, json_reader_container_begins, json_reader_container_ends,
json_reader_read_char, json_reader_set_key, json_reader_set_string,
json_reader_container_begins, json_reader_set_number, json_reader_set_true,
json_reader_container_ends, json_reader_set_false, json_reader_set_null};
json_reader_set_key,
json_reader_set_string,
json_reader_set_number,
json_reader_set_true,
json_reader_set_false,
json_reader_set_null
};
int rewrite(FILE* in, FILE* out, int indent) { int rewrite(FILE* in, FILE* out, int indent) {
grpc_json_writer writer; grpc_json_writer writer;

@ -42,9 +42,7 @@
#include "src/core/json/json_reader.h" #include "src/core/json/json_reader.h"
#include "src/core/json/json_writer.h" #include "src/core/json/json_writer.h"
typedef struct json_writer_userdata { typedef struct json_writer_userdata { FILE* cmp; } json_writer_userdata;
FILE* cmp;
} json_writer_userdata;
typedef struct stacked_container { typedef struct stacked_container {
grpc_json_type type; grpc_json_type type;
@ -83,11 +81,9 @@ static void json_writer_output_string_with_len(void* userdata, const char* str,
} }
} }
grpc_json_writer_vtable writer_vtable = { grpc_json_writer_vtable writer_vtable = {json_writer_output_char,
json_writer_output_char,
json_writer_output_string, json_writer_output_string,
json_writer_output_string_with_len json_writer_output_string_with_len};
};
static void check_string(json_reader_userdata* state, size_t needed) { static void check_string(json_reader_userdata* state, size_t needed) {
if (state->free_space >= needed) return; if (state->free_space >= needed) return;
@ -216,19 +212,12 @@ static void json_reader_set_null(void* userdata) {
} }
static grpc_json_reader_vtable reader_vtable = { static grpc_json_reader_vtable reader_vtable = {
json_reader_string_clear, json_reader_string_clear, json_reader_string_add_char,
json_reader_string_add_char, json_reader_string_add_utf32, json_reader_read_char,
json_reader_string_add_utf32, json_reader_container_begins, json_reader_container_ends,
json_reader_read_char, json_reader_set_key, json_reader_set_string,
json_reader_container_begins, json_reader_set_number, json_reader_set_true,
json_reader_container_ends, json_reader_set_false, json_reader_set_null};
json_reader_set_key,
json_reader_set_string,
json_reader_set_number,
json_reader_set_true,
json_reader_set_false,
json_reader_set_null
};
int rewrite_and_compare(FILE* in, FILE* cmp, int indent) { int rewrite_and_compare(FILE* in, FILE* cmp, int indent) {
grpc_json_writer writer; grpc_json_writer writer;
@ -275,26 +264,14 @@ typedef struct test_file {
} test_file; } test_file;
static test_file test_files[] = { static test_file test_files[] = {
{ {"test/core/json/rewrite_test_input.json",
"test/core/json/rewrite_test_input.json", "test/core/json/rewrite_test_output_condensed.json", 0},
"test/core/json/rewrite_test_output_condensed.json", {"test/core/json/rewrite_test_input.json",
0 "test/core/json/rewrite_test_output_indented.json", 2},
}, {"test/core/json/rewrite_test_output_indented.json",
{ "test/core/json/rewrite_test_output_condensed.json", 0},
"test/core/json/rewrite_test_input.json", {"test/core/json/rewrite_test_output_condensed.json",
"test/core/json/rewrite_test_output_indented.json", "test/core/json/rewrite_test_output_indented.json", 2},
2
},
{
"test/core/json/rewrite_test_output_indented.json",
"test/core/json/rewrite_test_output_condensed.json",
0
},
{
"test/core/json/rewrite_test_output_condensed.json",
"test/core/json/rewrite_test_output_indented.json",
2
},
}; };
void test_rewrites() { void test_rewrites() {
@ -305,8 +282,8 @@ void test_rewrites() {
FILE* input = fopen(test->input, "rb"); FILE* input = fopen(test->input, "rb");
FILE* cmp = fopen(test->cmp, "rb"); FILE* cmp = fopen(test->cmp, "rb");
int status; int status;
gpr_log(GPR_INFO, "Testing file %s against %s using indent=%i", gpr_log(GPR_INFO, "Testing file %s against %s using indent=%i", test->input,
test->input, test->cmp, test->indent); test->cmp, test->indent);
status = rewrite_and_compare(input, cmp, test->indent); status = rewrite_and_compare(input, cmp, test->indent);
GPR_ASSERT(status); GPR_ASSERT(status);
fclose(input); fclose(input);

@ -50,77 +50,80 @@ static testing_pair testing_pairs[] = {
/* Testing valid parsing. */ /* Testing valid parsing. */
/* Testing trivial parses, with de-indentation. */ /* Testing trivial parses, with de-indentation. */
{ " 0 ", "0" }, {" 0 ", "0"},
{ " 1 ", "1" }, {" 1 ", "1"},
{ " \"a\" ", "\"a\"" }, {" \"a\" ", "\"a\""},
{ " true ", "true" }, {" true ", "true"},
/* Testing the parser's ability to decode trivial UTF-16. */ /* Testing the parser's ability to decode trivial UTF-16. */
{ "\"\\u0020\\\\\\u0010\\u000a\\u000D\"", "\" \\\\\\u0010\\n\\r\"" }, {"\"\\u0020\\\\\\u0010\\u000a\\u000D\"", "\" \\\\\\u0010\\n\\r\""},
/* Testing various UTF-8 sequences. */ /* Testing various UTF-8 sequences. */
{ "\"ßâñć௵⇒\"", "\"\\u00df\\u00e2\\u00f1\\u0107\\u0bf5\\u21d2\"" }, {"\"ßâñć௵⇒\"", "\"\\u00df\\u00e2\\u00f1\\u0107\\u0bf5\\u21d2\""},
{ "\"\\u00df\\u00e2\\u00f1\\u0107\\u0bf5\\u21d2\"", "\"\\u00df\\u00e2\\u00f1\\u0107\\u0bf5\\u21d2\"" }, {"\"\\u00df\\u00e2\\u00f1\\u0107\\u0bf5\\u21d2\"",
"\"\\u00df\\u00e2\\u00f1\\u0107\\u0bf5\\u21d2\""},
/* Testing UTF-8 character "𝄞", U+11D1E. */ /* Testing UTF-8 character "𝄞", U+11D1E. */
{ "\"\xf0\x9d\x84\x9e\"", "\"\\ud834\\udd1e\"" }, {"\"\xf0\x9d\x84\x9e\"", "\"\\ud834\\udd1e\""},
{ "\"\\ud834\\udd1e\"", "\"\\ud834\\udd1e\"" }, {"\"\\ud834\\udd1e\"", "\"\\ud834\\udd1e\""},
/* Testing nested empty containers. */ /* Testing nested empty containers. */
{ " [ [ ] , { } , [ ] ] ", "[[],{},[]]", }, {
" [ [ ] , { } , [ ] ] ", "[[],{},[]]",
},
/* Testing escapes and control chars in key strings. */ /* Testing escapes and control chars in key strings. */
{ " { \"\x7f\\n\\\\a , b\": 1, \"\": 0 } ", "{\"\\u007f\\n\\\\a , b\":1,\"\":0}" }, {" { \"\x7f\\n\\\\a , b\": 1, \"\": 0 } ",
"{\"\\u007f\\n\\\\a , b\":1,\"\":0}"},
/* Testing the writer's ability to cut off invalid UTF-8 sequences. */ /* Testing the writer's ability to cut off invalid UTF-8 sequences. */
{ "\"abc\xf0\x9d\x24\"", "\"abc\"" }, {"\"abc\xf0\x9d\x24\"", "\"abc\""},
{ "\"\xff\"", "\"\"" }, {"\"\xff\"", "\"\""},
/* Testing valid number parsing. */ /* Testing valid number parsing. */
{ "[0, 42 , 0.0123, 123.456]", "[0,42,0.0123,123.456]"}, {"[0, 42 , 0.0123, 123.456]", "[0,42,0.0123,123.456]"},
{ "[1e4,-53.235e-31, 0.3e+3]", "[1e4,-53.235e-31,0.3e+3]" }, {"[1e4,-53.235e-31, 0.3e+3]", "[1e4,-53.235e-31,0.3e+3]"},
/* Testing keywords parsing. */ /* Testing keywords parsing. */
{ "[true, false, null]", "[true,false,null]" }, {"[true, false, null]", "[true,false,null]"},
/* Testing invalid parsing. */ /* Testing invalid parsing. */
/* Testing plain invalid things, exercising the state machine. */ /* Testing plain invalid things, exercising the state machine. */
{ "\\", NULL }, {"\\", NULL},
{ "nu ll", NULL }, {"nu ll", NULL},
{ "fals", NULL }, {"fals", NULL},
/* Testing unterminated string. */ /* Testing unterminated string. */
{ "\"\\x", NULL }, {"\"\\x", NULL},
/* Testing invalid UTF-16 number. */ /* Testing invalid UTF-16 number. */
{ "\"\\u123x", NULL }, {"\"\\u123x", NULL},
/* Testing imbalanced surrogate pairs. */ /* Testing imbalanced surrogate pairs. */
{ "\"\\ud834f", NULL }, {"\"\\ud834f", NULL},
{ "\"\\ud834\\n", NULL }, {"\"\\ud834\\n", NULL},
{ "\"\\udd1ef", NULL }, {"\"\\udd1ef", NULL},
{ "\"\\ud834\\ud834\"", NULL }, {"\"\\ud834\\ud834\"", NULL},
{ "\"\\ud834\\u1234\"", NULL }, {"\"\\ud834\\u1234\"", NULL},
/* Testing embedded invalid whitechars. */ /* Testing embedded invalid whitechars. */
{ "\"\n\"", NULL }, {"\"\n\"", NULL},
{ "\"\t\"", NULL }, {"\"\t\"", NULL},
/* Testing empty json data. */ /* Testing empty json data. */
{ "", NULL }, {"", NULL},
/* Testing extra characters after end of parsing. */ /* Testing extra characters after end of parsing. */
{ "{},", NULL }, {"{},", NULL},
/* Testing imbalanced containers. */ /* Testing imbalanced containers. */
{ "{}}", NULL }, {"{}}", NULL},
{ "[]]", NULL }, {"[]]", NULL},
{ "{{}", NULL }, {"{{}", NULL},
{ "[[]", NULL }, {"[[]", NULL},
{ "[}", NULL }, {"[}", NULL},
{ "{]", NULL }, {"{]", NULL},
/*Testing trailing comma. */ /*Testing trailing comma. */
{ "{,}", NULL }, {"{,}", NULL},
{ "[1,2,3,4,]", NULL }, {"[1,2,3,4,]", NULL},
/* Testing having a key syntax in an array. */ /* Testing having a key syntax in an array. */
{ "[\"x\":0]", NULL }, {"[\"x\":0]", NULL},
/* Testing invalid numbers. */ /* Testing invalid numbers. */
{ "1.", NULL }, {"1.", NULL},
{ "1e", NULL }, {"1e", NULL},
{ ".12", NULL }, {".12", NULL},
{ "1.x", NULL }, {"1.x", NULL},
{ "1.12x", NULL }, {"1.12x", NULL},
{ "1ex", NULL }, {"1ex", NULL},
{ "1e12x", NULL }, {"1e12x", NULL},
{ ".12x", NULL }, {".12x", NULL},
{ "000", NULL }, {"000", NULL},
}; };
static void test_pairs() { static void test_pairs() {
@ -169,7 +172,7 @@ static void test_atypical() {
gpr_free(scratchpad); gpr_free(scratchpad);
} }
int main(int argc, char **argv) { int main(int argc, char** argv) {
grpc_test_init(argc, argv); grpc_test_init(argc, argv);
test_pairs(); test_pairs();
test_atypical(); test_atypical();

@ -55,7 +55,8 @@ static const char test_root_cert[] = "I am the root!";
Maximum size for a string literal is 509 chars in C89, yay! */ Maximum size for a string literal is 509 chars in C89, yay! */
static const char test_json_key_str_part1[] = static const char test_json_key_str_part1[] =
"{ \"private_key\": \"-----BEGIN PRIVATE KEY-----" "{ \"private_key\": \"-----BEGIN PRIVATE KEY-----"
"\\nMIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAOEvJsnoHnyHkXcp\\n7mJEqg" "\\nMIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAOEvJsnoHnyHkXcp\\n7mJE"
"qg"
"WGjiw71NfXByguekSKho65FxaGbsnSM9SMQAqVk7Q2rG+I0OpsT0LrWQtZ\\nyjSeg/" "WGjiw71NfXByguekSKho65FxaGbsnSM9SMQAqVk7Q2rG+I0OpsT0LrWQtZ\\nyjSeg/"
"rWBQvS4hle4LfijkP3J5BG+" "rWBQvS4hle4LfijkP3J5BG+"
"IXDMP8RfziNRQsenAXDNPkY4kJCvKux2xdD\\nOnVF6N7dL3nTYZg+" "IXDMP8RfziNRQsenAXDNPkY4kJCvKux2xdD\\nOnVF6N7dL3nTYZg+"
@ -66,11 +67,14 @@ static const char test_json_key_str_part1[] =
static const char test_json_key_str_part2[] = static const char test_json_key_str_part2[] =
"53XxNVnxBHsYb+AYEfklR96yVi8HywjVHP34+OQZ\\nCslxoHQM8s+" "53XxNVnxBHsYb+AYEfklR96yVi8HywjVHP34+OQZ\\nCslxoHQM8s+"
"dBnjfScLu22JqkPv04xyxmt0QAKm9+vTdAkEA4ib7YvEAn2jXzcCI\\nEkoy2L/" "dBnjfScLu22JqkPv04xyxmt0QAKm9+vTdAkEA4ib7YvEAn2jXzcCI\\nEkoy2L/"
"XydR1GCHoacdfdAwiL2npOdnbvi4ZmdYRPY1LSTO058tQHKVXV7NLeCa3\\nAARh2QJBAMKeDAG" "XydR1GCHoacdfdAwiL2npOdnbvi4ZmdYRPY1LSTO058tQHKVXV7NLeCa3\\nAARh2QJBAMKeDA"
"W303SQv2cZTdbeaLKJbB5drz3eo3j7dDKjrTD9JupixFbzcGw\\n8FZi5c8idxiwC36kbAL6HzA" "G"
"W303SQv2cZTdbeaLKJbB5drz3eo3j7dDKjrTD9JupixFbzcGw\\n8FZi5c8idxiwC36kbAL6Hz"
"A"
"ZoX+ofI0CQE6KCzPJTtYNqyShgKAZdJ8hwOcvCZtf\\n6z8RJm0+" "ZoX+ofI0CQE6KCzPJTtYNqyShgKAZdJ8hwOcvCZtf\\n6z8RJm0+"
"6YBd38lfh5j8mZd7aHFf6I17j5AQY7oPEc47TjJj/" "6YBd38lfh5j8mZd7aHFf6I17j5AQY7oPEc47TjJj/"
"5nZ68ECQQDvYuI3\\nLyK5fS8g0SYbmPOL9TlcHDOqwG0mrX9qpg5DC2fniXNSrrZ64GTDKdzZY" "5nZ68ECQQDvYuI3\\nLyK5fS8g0SYbmPOL9TlcHDOqwG0mrX9qpg5DC2fniXNSrrZ64GTDKdzZ"
"Y"
"Ap6LI9W\\nIqv4vr6y38N79TTC\\n-----END PRIVATE KEY-----\\n\", "; "Ap6LI9W\\nIqv4vr6y38N79TTC\\n-----END PRIVATE KEY-----\\n\", ";
static const char test_json_key_str_part3[] = static const char test_json_key_str_part3[] =
"\"private_key_id\": \"e6b5137873db8d2ef81e06a47289e6434ec8a165\", " "\"private_key_id\": \"e6b5137873db8d2ef81e06a47289e6434ec8a165\", "
@ -614,8 +618,9 @@ static void test_service_account_creds_signing_failure(void) {
grpc_jwt_encode_and_sign_set_override(NULL); grpc_jwt_encode_and_sign_set_override(NULL);
} }
static void on_jwt_creds_get_metadata_success( static void on_jwt_creds_get_metadata_success(void *user_data,
void *user_data, grpc_mdelem **md_elems, size_t num_md, grpc_mdelem **md_elems,
size_t num_md,
grpc_credentials_status status) { grpc_credentials_status status) {
char *expected_md_value; char *expected_md_value;
gpr_asprintf(&expected_md_value, "Bearer %s", test_signed_jwt); gpr_asprintf(&expected_md_value, "Bearer %s", test_signed_jwt);
@ -630,8 +635,9 @@ static void on_jwt_creds_get_metadata_success(
gpr_free(expected_md_value); gpr_free(expected_md_value);
} }
static void on_jwt_creds_get_metadata_failure( static void on_jwt_creds_get_metadata_failure(void *user_data,
void *user_data, grpc_mdelem **md_elems, size_t num_md, grpc_mdelem **md_elems,
size_t num_md,
grpc_credentials_status status) { grpc_credentials_status status) {
GPR_ASSERT(status == GRPC_CREDENTIALS_ERROR); GPR_ASSERT(status == GRPC_CREDENTIALS_ERROR);
GPR_ASSERT(num_md == 0); GPR_ASSERT(num_md == 0);

@ -49,7 +49,8 @@
Maximum size for a string literal is 509 chars in C89, yay! */ Maximum size for a string literal is 509 chars in C89, yay! */
static const char test_json_key_str_part1[] = static const char test_json_key_str_part1[] =
"{ \"private_key\": \"-----BEGIN PRIVATE KEY-----" "{ \"private_key\": \"-----BEGIN PRIVATE KEY-----"
"\\nMIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAOEvJsnoHnyHkXcp\\n7mJEqg" "\\nMIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAOEvJsnoHnyHkXcp\\n7mJE"
"qg"
"WGjiw71NfXByguekSKho65FxaGbsnSM9SMQAqVk7Q2rG+I0OpsT0LrWQtZ\\nyjSeg/" "WGjiw71NfXByguekSKho65FxaGbsnSM9SMQAqVk7Q2rG+I0OpsT0LrWQtZ\\nyjSeg/"
"rWBQvS4hle4LfijkP3J5BG+" "rWBQvS4hle4LfijkP3J5BG+"
"IXDMP8RfziNRQsenAXDNPkY4kJCvKux2xdD\\nOnVF6N7dL3nTYZg+" "IXDMP8RfziNRQsenAXDNPkY4kJCvKux2xdD\\nOnVF6N7dL3nTYZg+"
@ -60,11 +61,14 @@ static const char test_json_key_str_part1[] =
static const char test_json_key_str_part2[] = static const char test_json_key_str_part2[] =
"53XxNVnxBHsYb+AYEfklR96yVi8HywjVHP34+OQZ\\nCslxoHQM8s+" "53XxNVnxBHsYb+AYEfklR96yVi8HywjVHP34+OQZ\\nCslxoHQM8s+"
"dBnjfScLu22JqkPv04xyxmt0QAKm9+vTdAkEA4ib7YvEAn2jXzcCI\\nEkoy2L/" "dBnjfScLu22JqkPv04xyxmt0QAKm9+vTdAkEA4ib7YvEAn2jXzcCI\\nEkoy2L/"
"XydR1GCHoacdfdAwiL2npOdnbvi4ZmdYRPY1LSTO058tQHKVXV7NLeCa3\\nAARh2QJBAMKeDAG" "XydR1GCHoacdfdAwiL2npOdnbvi4ZmdYRPY1LSTO058tQHKVXV7NLeCa3\\nAARh2QJBAMKeDA"
"W303SQv2cZTdbeaLKJbB5drz3eo3j7dDKjrTD9JupixFbzcGw\\n8FZi5c8idxiwC36kbAL6HzA" "G"
"W303SQv2cZTdbeaLKJbB5drz3eo3j7dDKjrTD9JupixFbzcGw\\n8FZi5c8idxiwC36kbAL6Hz"
"A"
"ZoX+ofI0CQE6KCzPJTtYNqyShgKAZdJ8hwOcvCZtf\\n6z8RJm0+" "ZoX+ofI0CQE6KCzPJTtYNqyShgKAZdJ8hwOcvCZtf\\n6z8RJm0+"
"6YBd38lfh5j8mZd7aHFf6I17j5AQY7oPEc47TjJj/" "6YBd38lfh5j8mZd7aHFf6I17j5AQY7oPEc47TjJj/"
"5nZ68ECQQDvYuI3\\nLyK5fS8g0SYbmPOL9TlcHDOqwG0mrX9qpg5DC2fniXNSrrZ64GTDKdzZY" "5nZ68ECQQDvYuI3\\nLyK5fS8g0SYbmPOL9TlcHDOqwG0mrX9qpg5DC2fniXNSrrZ64GTDKdzZ"
"Y"
"Ap6LI9W\\nIqv4vr6y38N79TTC\\n-----END PRIVATE KEY-----\\n\", "; "Ap6LI9W\\nIqv4vr6y38N79TTC\\n-----END PRIVATE KEY-----\\n\", ";
static const char test_json_key_str_part3[] = static const char test_json_key_str_part3[] =
"\"private_key_id\": \"e6b5137873db8d2ef81e06a47289e6434ec8a165\", " "\"private_key_id\": \"e6b5137873db8d2ef81e06a47289e6434ec8a165\", "

@ -73,8 +73,7 @@ int main(int argc, char **argv) {
char *service_url = "https://test.foo.google.com/Foo"; char *service_url = "https://test.foo.google.com/Foo";
gpr_cmdline *cl = gpr_cmdline_create("print_google_default_creds_token"); gpr_cmdline *cl = gpr_cmdline_create("print_google_default_creds_token");
gpr_cmdline_add_string(cl, "service_url", gpr_cmdline_add_string(cl, "service_url",
"Service URL for the token request.", "Service URL for the token request.", &service_url);
&service_url);
gpr_cmdline_parse(cl, argc, argv); gpr_cmdline_parse(cl, argc, argv);
grpc_init(); grpc_init();

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save