mirror of https://github.com/grpc/grpc.git
Merge branch 'master' of https://github.com/grpc/grpc into zookeeper
commit
1284552713
278 changed files with 2269 additions and 969 deletions
@ -0,0 +1,77 @@ |
||||
Connection Backoff Interop Test Descriptions |
||||
=============================================== |
||||
|
||||
This test is to verify the client is reconnecting the server with correct |
||||
backoffs as specified in |
||||
[the spec](http://github.com/grpc/grpc/blob/master/doc/connection-backoff.md). |
||||
The test server has a port (control_port) running a rpc service for controlling |
||||
the server and another port (retry_port) to close any incoming tcp connections. |
||||
The test has the following flow: |
||||
|
||||
1. The server starts listening on control_port. |
||||
2. The client calls Start rpc on server control_port. |
||||
3. The server starts listening on retry_port. |
||||
4. The client connects to server retry_port and retries with backoff for 540s, |
||||
which translates to about 13 retries. |
||||
5. The client calls Stop rpc on server control port. |
||||
6. The client checks the response to see whether the server thinks the backoffs |
||||
are conforming the spec or do its own check on the backoffs in the response. |
||||
|
||||
Client and server use |
||||
[test.proto](https://github.com/grpc/grpc/blob/master/test/proto/test.proto). |
||||
Each language should implement its own client. The C++ server is shared among |
||||
languages. |
||||
|
||||
Client |
||||
------ |
||||
|
||||
Clients should accept these arguments: |
||||
* --server_control_port=PORT |
||||
* The server port to connect to for rpc. For example, "8080" |
||||
* --server_retry_port=PORT |
||||
* The server port to connect to for testing backoffs. For example, "8081" |
||||
|
||||
The client must connect to the control port without TLS. The client should |
||||
either assert on the server returned backoff status or check the returned |
||||
backoffs on its own. |
||||
|
||||
Procedure of client: |
||||
|
||||
1. Calls Start on server control port with a large deadline or no deadline, |
||||
waits for its finish and checks it succeeded. |
||||
2. Initiates a channel connection to server retry port, which should perform |
||||
reconnections with proper backoffs. A convienent way to achieve this is to |
||||
call Start with a deadline of 540s. The rpc should fail with deadline exceeded. |
||||
3. Calls Stop on server control port and checks it succeeded. |
||||
4. Checks the response to see whether the server thinks the backoffs passed the |
||||
test. |
||||
5. Optionally, the client can do its own check on the returned backoffs. |
||||
|
||||
|
||||
Server |
||||
------ |
||||
|
||||
A C++ server can be used for the test. Other languages do NOT need to implement |
||||
a server. To minimize the network delay, the server binary should run on the |
||||
same machine or on a nearby machine (in terms of network distance) with the |
||||
client binary. |
||||
|
||||
A server implements the ReconnectService to its state. It also opens a |
||||
tcp server on the retry_port, which just shuts down all incoming tcp |
||||
connections to simulate connection failures. The server will keep a record of |
||||
all the reconnection timestamps and return the connection backoffs in the |
||||
response in milliseconds. The server also checks the backoffs to see whether |
||||
they conform the spec and returns whether the client passes the test. |
||||
|
||||
If the server receives a Start call when another client is being tested, it |
||||
finishes the call when the other client is done. If some other host connects |
||||
to the server retry_port when a client is being tested, the server will log an |
||||
error but likely would think the client fails the test. |
||||
|
||||
The server accepts these arguments: |
||||
|
||||
* --control_port=PORT |
||||
* The port to listen on for control rpcs. For example, "8080" |
||||
* --retry_port=PORT |
||||
* The tcp server port. For example, "8081" |
||||
|
@ -1,57 +0,0 @@ |
||||
/*
|
||||
* |
||||
* 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. |
||||
* |
||||
*/ |
||||
|
||||
/* GRPC <--> CENSUS context interface */ |
||||
|
||||
#ifndef CENSUS_GRPC_CONTEXT_H |
||||
#define CENSUS_GRPC_CONTEXT_H |
||||
|
||||
#include <grpc/census.h> |
||||
#include "src/core/surface/call.h" |
||||
|
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
|
||||
/* Set census context for the call; Must be called before first call to
|
||||
grpc_call_start_batch(). */ |
||||
void grpc_census_call_set_context(grpc_call *call, census_context *context); |
||||
|
||||
/* Retrieve the calls current census context. */ |
||||
census_context *grpc_census_call_get_context(grpc_call *call); |
||||
|
||||
#ifdef __cplusplus |
||||
} |
||||
#endif |
||||
|
||||
#endif /* CENSUS_GRPC_CONTEXT_H */ |
@ -0,0 +1,39 @@ |
||||
#!/bin/bash |
||||
# 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. |
||||
|
||||
set -e |
||||
|
||||
cd $(dirname $0) |
||||
|
||||
# The local test server needs to be compiled before this because pod install of |
||||
# gRPC renames some C gRPC files and not the server's code references to them. |
||||
# |
||||
# Suppress error output because Cocoapods issue #3823 causes a flooding warning. |
||||
pod install 2>/dev/null |
@ -0,0 +1,2 @@ |
||||
graft grpc |
||||
include commands.py |
@ -0,0 +1,76 @@ |
||||
# 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. |
||||
|
||||
"""Provides distutils command classes for the GRPC Python setup process.""" |
||||
|
||||
import os |
||||
import os.path |
||||
import sys |
||||
|
||||
import setuptools |
||||
|
||||
_CONF_PY_ADDENDUM = """ |
||||
extensions.append('sphinx.ext.napoleon') |
||||
napoleon_google_docstring = True |
||||
napoleon_numpy_docstring = True |
||||
|
||||
html_theme = 'sphinx_rtd_theme' |
||||
""" |
||||
|
||||
|
||||
class SphinxDocumentation(setuptools.Command): |
||||
"""Command to generate documentation via sphinx.""" |
||||
|
||||
description = '' |
||||
user_options = [] |
||||
|
||||
def initialize_options(self): |
||||
pass |
||||
|
||||
def finalize_options(self): |
||||
pass |
||||
|
||||
def run(self): |
||||
# We import here to ensure that setup.py has had a chance to install the |
||||
# relevant package eggs first. |
||||
import sphinx |
||||
import sphinx.apidoc |
||||
metadata = self.distribution.metadata |
||||
src_dir = os.path.join( |
||||
os.getcwd(), self.distribution.package_dir['grpc']) |
||||
sys.path.append(src_dir) |
||||
sphinx.apidoc.main([ |
||||
'', '--force', '--full', '-H', metadata.name, '-A', metadata.author, |
||||
'-V', metadata.version, '-R', metadata.version, |
||||
'-o', os.path.join('doc', 'src'), src_dir]) |
||||
conf_filepath = os.path.join('doc', 'src', 'conf.py') |
||||
with open(conf_filepath, 'a') as conf_file: |
||||
conf_file.write(_CONF_PY_ADDENDUM) |
||||
sphinx.main(['', os.path.join('doc', 'src'), os.path.join('doc', 'build')]) |
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue