Merge github.com:grpc/grpc into tis-but-thy-name

pull/2303/head
Craig Tiller 10 years ago
commit 13ec8719ca
  1. 23
      src/compiler/objective_c_generator.cc
  2. 20
      src/objective-c/GRPCClient/private/GRPCWrappedCall.m
  3. 8
      src/objective-c/tests/InteropTests.m
  4. 49
      src/php/bin/determine_extension_dir.sh
  5. 11
      src/php/bin/interop_client.sh
  6. 11
      src/php/bin/run_gen_code_test.sh
  7. 35
      src/php/bin/run_tests.sh

@ -68,18 +68,19 @@ void PrintMethodSignature(Printer *printer,
printer->Print(vars, "- ($return_type$)$method_name$With"); printer->Print(vars, "- ($return_type$)$method_name$With");
if (method->client_streaming()) { if (method->client_streaming()) {
printer->Print("RequestsWriter:(id<GRXWriter>)request"); printer->Print("RequestsWriter:(id<GRXWriter>)requestWriter");
} else { } else {
printer->Print(vars, "Request:($request_class$ *)request"); printer->Print(vars, "Request:($request_class$ *)request");
} }
// TODO(jcanizales): Put this on a new line and align colons. // TODO(jcanizales): Put this on a new line and align colons.
// TODO(jcanizales): eventHandler for server streaming?
printer->Print(" handler:(void(^)(");
if (method->server_streaming()) { if (method->server_streaming()) {
printer->Print("BOOL done, "); printer->Print(vars, " eventHandler:(void(^)(BOOL done, "
"$response_class$ *response, NSError *error))eventHandler");
} else {
printer->Print(vars, " handler:(void(^)($response_class$ *response, "
"NSError *error))handler");
} }
printer->Print(vars, "$response_class$ *response, NSError *error))handler");
} }
void PrintSimpleSignature(Printer *printer, void PrintSimpleSignature(Printer *printer,
@ -125,11 +126,15 @@ void PrintSimpleImplementation(Printer *printer,
printer->Print("{\n"); printer->Print("{\n");
printer->Print(vars, " [[self RPCTo$method_name$With"); printer->Print(vars, " [[self RPCTo$method_name$With");
if (method->client_streaming()) { if (method->client_streaming()) {
printer->Print("RequestsWriter:request"); printer->Print("RequestsWriter:requestWriter");
} else { } else {
printer->Print("Request:request"); printer->Print("Request:request");
} }
printer->Print(" handler:handler] start];\n"); if (method->server_streaming()) {
printer->Print(" eventHandler:eventHandler] start];\n");
} else {
printer->Print(" handler:handler] start];\n");
}
printer->Print("}\n"); printer->Print("}\n");
} }
@ -141,7 +146,7 @@ void PrintAdvancedImplementation(Printer *printer,
printer->Print(" requestsWriter:"); printer->Print(" requestsWriter:");
if (method->client_streaming()) { if (method->client_streaming()) {
printer->Print("request\n"); printer->Print("requestWriter\n");
} else { } else {
printer->Print("[GRXWriter writerWithValue:request]\n"); printer->Print("[GRXWriter writerWithValue:request]\n");
} }
@ -150,7 +155,7 @@ void PrintAdvancedImplementation(Printer *printer,
printer->Print(" responsesWriteable:[GRXWriteable "); printer->Print(" responsesWriteable:[GRXWriteable ");
if (method->server_streaming()) { if (method->server_streaming()) {
printer->Print("writeableWithStreamHandler:handler]];\n"); printer->Print("writeableWithStreamHandler:eventHandler]];\n");
} else { } else {
printer->Print("writeableWithSingleValueHandler:handler]];\n"); printer->Print("writeableWithSingleValueHandler:handler]];\n");
} }

@ -132,8 +132,12 @@
grpc_metadata_array_init(&_headers); grpc_metadata_array_init(&_headers);
_op.data.recv_initial_metadata = &_headers; _op.data.recv_initial_metadata = &_headers;
if (handler) { if (handler) {
// Prevent reference cycle with _handler
__weak typeof(self) weakSelf = self;
_handler = ^{ _handler = ^{
NSDictionary *metadata = [NSDictionary grpc_dictionaryFromMetadataArray:_headers]; __strong typeof(self) strongSelf = weakSelf;
NSDictionary *metadata = [NSDictionary
grpc_dictionaryFromMetadataArray:strongSelf->_headers];
handler(metadata); handler(metadata);
}; };
} }
@ -160,8 +164,11 @@
_op.op = GRPC_OP_RECV_MESSAGE; _op.op = GRPC_OP_RECV_MESSAGE;
_op.data.recv_message = &_receivedMessage; _op.data.recv_message = &_receivedMessage;
if (handler) { if (handler) {
// Prevent reference cycle with _handler
__weak typeof(self) weakSelf = self;
_handler = ^{ _handler = ^{
handler(_receivedMessage); __strong typeof(self) strongSelf = weakSelf;
handler(strongSelf->_receivedMessage);
}; };
} }
} }
@ -190,9 +197,14 @@
grpc_metadata_array_init(&_trailers); grpc_metadata_array_init(&_trailers);
_op.data.recv_status_on_client.trailing_metadata = &_trailers; _op.data.recv_status_on_client.trailing_metadata = &_trailers;
if (handler) { if (handler) {
// Prevent reference cycle with _handler
__weak typeof(self) weakSelf = self;
_handler = ^{ _handler = ^{
NSError *error = [NSError grpc_errorFromStatusCode:_statusCode details:_details]; __strong typeof(self) strongSelf = weakSelf;
NSDictionary *trailers = [NSDictionary grpc_dictionaryFromMetadataArray:_trailers]; NSError *error = [NSError grpc_errorFromStatusCode:strongSelf->_statusCode
details:strongSelf->_details];
NSDictionary *trailers = [NSDictionary
grpc_dictionaryFromMetadataArray:strongSelf->_trailers];
handler(error, trailers); handler(error, trailers);
}; };
} }

@ -174,7 +174,7 @@
__block int index = 0; __block int index = 0;
[_service streamingOutputCallWithRequest:request [_service streamingOutputCallWithRequest:request
handler:^(BOOL done, eventHandler:^(BOOL done,
RMTStreamingOutputCallResponse *response, RMTStreamingOutputCallResponse *response,
NSError *error){ NSError *error){
XCTAssertNil(error, @"Finished with unexpected error: %@", error); XCTAssertNil(error, @"Finished with unexpected error: %@", error);
@ -211,7 +211,7 @@
[requestsBuffer writeValue:request]; [requestsBuffer writeValue:request];
[_service fullDuplexCallWithRequestsWriter:requestsBuffer [_service fullDuplexCallWithRequestsWriter:requestsBuffer
handler:^(BOOL done, eventHandler:^(BOOL done,
RMTStreamingOutputCallResponse *response, RMTStreamingOutputCallResponse *response,
NSError *error) { NSError *error) {
XCTAssertNil(error, @"Finished with unexpected error: %@", error); XCTAssertNil(error, @"Finished with unexpected error: %@", error);
@ -242,7 +242,7 @@
- (void)testEmptyStreamRPC { - (void)testEmptyStreamRPC {
__weak XCTestExpectation *expectation = [self expectationWithDescription:@"EmptyStream"]; __weak XCTestExpectation *expectation = [self expectationWithDescription:@"EmptyStream"];
[_service fullDuplexCallWithRequestsWriter:[GRXWriter emptyWriter] [_service fullDuplexCallWithRequestsWriter:[GRXWriter emptyWriter]
handler:^(BOOL done, eventHandler:^(BOOL done,
RMTStreamingOutputCallResponse *response, RMTStreamingOutputCallResponse *response,
NSError *error) { NSError *error) {
XCTAssertNil(error, @"Finished with unexpected error: %@", error); XCTAssertNil(error, @"Finished with unexpected error: %@", error);
@ -283,7 +283,7 @@
[requestsBuffer writeValue:request]; [requestsBuffer writeValue:request];
__block ProtoRPC *call = [_service RPCToFullDuplexCallWithRequestsWriter:requestsBuffer __block ProtoRPC *call = [_service RPCToFullDuplexCallWithRequestsWriter:requestsBuffer
handler:^(BOOL done, eventHandler:^(BOOL done,
RMTStreamingOutputCallResponse *response, RMTStreamingOutputCallResponse *response,
NSError *error) { NSError *error) {
if (receivedResponse) { if (receivedResponse) {

@ -0,0 +1,49 @@
#!/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
default_extension_dir=$(php -i | grep extension_dir | sed 's/.*=> //g')
if command -v brew >/dev/null && [ -d $(brew --prefix)/opt/grpc-php ]; then
# homebrew and the grpc-php formula are installed
extension_dir="-d extension_dir="$(brew --prefix)/opt/grpc-php
elif [ ! -f $default_extension_dir/grpc.so ]; then
# the grpc extension is not found in the default PHP extension dir
# try the source modules directory
module_dir=../ext/grpc/modules
if [ ! -f $module_dir/grpc.so ]; then
echo "Please run 'phpize && ./configure && make' from ext/grpc first"
exit 1
fi
# sym-link in system supplied extensions
for f in $default_extension_dir/*.so; do
ln -s $f $module_dir/$(basename $f) &> /dev/null || true
done
extension_dir="-d extension_dir="$module_dir
fi

@ -1,4 +1,4 @@
#!/bin/sh #!/bin/bash
# Copyright 2015, Google Inc. # Copyright 2015, Google Inc.
# All rights reserved. # All rights reserved.
# #
@ -28,11 +28,8 @@
# (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.
set -e
set +e
cd $(dirname $0) cd $(dirname $0)
source ./determine_extension_dir.sh
module_dir=../ext/grpc/modules php $extension_dir -d extension=grpc.so \
php -d extension_dir=$module_dir -d extension=grpc.so \
../tests/interop/interop_client.php $@ 1>&2 ../tests/interop/interop_client.php $@ 1>&2

@ -1,4 +1,4 @@
# Runs the generated code test against the ruby server #!/bin/bash
# Copyright 2015, Google Inc. # Copyright 2015, Google Inc.
# All rights reserved. # All rights reserved.
# #
@ -28,10 +28,11 @@
# (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.
set -e
cd $(dirname $0) cd $(dirname $0)
GRPC_TEST_HOST=localhost:50051 php -d extension_dir=../ext/grpc/modules/ \ source ./determine_extension_dir.sh
-d extension=grpc.so `which phpunit` -v --debug --strict \ export GRPC_TEST_HOST=localhost:7071
php $extension_dir -d extension=grpc.so $(which phpunit) -v --debug --strict \
../tests/generated_code/GeneratedCodeTest.php ../tests/generated_code/GeneratedCodeTest.php
GRPC_TEST_HOST=localhost:50051 php -d extension_dir=../ext/grpc/modules/ \ php $extension_dir -d extension=grpc.so $(which phpunit) -v --debug --strict \
-d extension=grpc.so `which phpunit` -v --debug --strict \
../tests/generated_code/GeneratedCodeWithCallbackTest.php ../tests/generated_code/GeneratedCodeWithCallbackTest.php

@ -1,4 +1,4 @@
#!/bin/sh #!/bin/bash
# Copyright 2015, Google Inc. # Copyright 2015, Google Inc.
# All rights reserved. # All rights reserved.
# #
@ -32,33 +32,6 @@
# against it # against it
set -e set -e
cd $(dirname $0) cd $(dirname $0)
default_extension_dir=`php -i | grep extension_dir | sed 's/.*=> //g'` source ./determine_extension_dir.sh
php $extension_dir -d extension=grpc.so $(which phpunit) -v --debug --strict \
if command -v brew >/dev/null && [ -d `brew --prefix`/opt/grpc-php ] ../tests/unit_tests
then
# homebrew and the grpc-php formula are installed
extension_dir="-d extension_dir="`brew --prefix`/opt/grpc-php
elif [ ! -e $default_extension_dir/grpc.so ]
then
# the grpc extension is not found in the default PHP extension dir
# try the source modules directory
module_dir=../ext/grpc/modules
if [ ! -d $module_dir ]
then
echo "Please run 'phpize && ./configure && make' from ext/grpc first"
exit 1
fi
# sym-link in system supplied extensions
for f in $default_extension_dir/*.so
do
ln -s $f $module_dir/$(basename $f) &> /dev/null || true
done
extension_dir='-d extension_dir='$module_dir
fi
php \
$extension_dir \
-d extension=grpc.so \
`which phpunit` -v --debug --strict ../tests/unit_tests

Loading…
Cancel
Save