commit
d58daa2b2f
251 changed files with 6627 additions and 1814 deletions
@ -0,0 +1,8 @@ |
||||
Each version of gRPC gets a new description of what the 'g' stands for, since |
||||
we've never really been able to figure it out. |
||||
|
||||
Below is a list of already-used definitions (that should not be repeated in the |
||||
future), and the corresponding version numbers that used them: |
||||
|
||||
- 1.0 'g' stands for 'gRPC' |
||||
- 1.1 'g' stands for 'good' |
@ -1,8 +1,7 @@ |
||||
{ |
||||
"name": "grpc/grpc-demo", |
||||
"description": "gRPC example for PHP", |
||||
"minimum-stability": "dev", |
||||
"require": { |
||||
"grpc/grpc": "v0.15.2" |
||||
"grpc/grpc": "v1.0.0" |
||||
} |
||||
} |
||||
|
@ -1,135 +0,0 @@ |
||||
<?php |
||||
/* |
||||
* |
||||
* 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. |
||||
* |
||||
*/ |
||||
|
||||
class CallCredentials3Test extends PHPUnit_Framework_TestCase |
||||
{ |
||||
public function setUp() |
||||
{ |
||||
$this->credentials = Grpc\ChannelCredentials::createSsl( |
||||
file_get_contents(dirname(__FILE__).'/../data/ca.pem')); |
||||
$server_credentials = Grpc\ServerCredentials::createSsl( |
||||
null, |
||||
file_get_contents(dirname(__FILE__).'/../data/server1.key'), |
||||
file_get_contents(dirname(__FILE__).'/../data/server1.pem')); |
||||
$this->server = new Grpc\Server(); |
||||
$this->port = $this->server->addSecureHttp2Port('0.0.0.0:0', |
||||
$server_credentials); |
||||
$this->server->start(); |
||||
$this->host_override = 'foo.test.google.fr'; |
||||
$this->channel = new Grpc\Channel( |
||||
'localhost:'.$this->port, |
||||
[ |
||||
'grpc.ssl_target_name_override' => $this->host_override, |
||||
'grpc.default_authority' => $this->host_override, |
||||
'credentials' => $this->credentials, |
||||
] |
||||
); |
||||
} |
||||
|
||||
public function tearDown() |
||||
{ |
||||
unset($this->channel); |
||||
unset($this->server); |
||||
} |
||||
|
||||
public function callbackFunc($context) |
||||
{ |
||||
$this->assertTrue(is_string($context->service_url)); |
||||
$this->assertTrue(is_string($context->method_name)); |
||||
|
||||
return ['k1' => ['v1'], 'k2' => ['v2']]; |
||||
} |
||||
|
||||
public function testCreateFromPlugin() |
||||
{ |
||||
$deadline = Grpc\Timeval::infFuture(); |
||||
$status_text = 'xyz'; |
||||
$call = new Grpc\Call($this->channel, |
||||
'/abc/dummy_method', |
||||
$deadline, |
||||
$this->host_override); |
||||
|
||||
$call_credentials = Grpc\CallCredentials::createFromPlugin( |
||||
[$this, 'callbackFunc']); |
||||
$call->setCredentials($call_credentials); |
||||
|
||||
$event = $call->startBatch([ |
||||
Grpc\OP_SEND_INITIAL_METADATA => [], |
||||
Grpc\OP_SEND_CLOSE_FROM_CLIENT => true, |
||||
]); |
||||
|
||||
$this->assertTrue($event->send_metadata); |
||||
$this->assertTrue($event->send_close); |
||||
|
||||
$event = $this->server->requestCall(); |
||||
|
||||
$this->assertTrue(is_array($event->metadata)); |
||||
$metadata = $event->metadata; |
||||
$this->assertTrue(array_key_exists('k1', $metadata)); |
||||
$this->assertTrue(array_key_exists('k2', $metadata)); |
||||
$this->assertSame($metadata['k1'], ['v1']); |
||||
$this->assertSame($metadata['k2'], ['v2']); |
||||
|
||||
$this->assertSame('/abc/dummy_method', $event->method); |
||||
$server_call = $event->call; |
||||
|
||||
$event = $server_call->startBatch([ |
||||
Grpc\OP_SEND_INITIAL_METADATA => [], |
||||
Grpc\OP_SEND_STATUS_FROM_SERVER => [ |
||||
'metadata' => [], |
||||
'code' => Grpc\STATUS_OK, |
||||
'details' => $status_text, |
||||
], |
||||
Grpc\OP_RECV_CLOSE_ON_SERVER => true, |
||||
]); |
||||
|
||||
$this->assertTrue($event->send_metadata); |
||||
$this->assertTrue($event->send_status); |
||||
$this->assertFalse($event->cancelled); |
||||
|
||||
$event = $call->startBatch([ |
||||
Grpc\OP_RECV_INITIAL_METADATA => true, |
||||
Grpc\OP_RECV_STATUS_ON_CLIENT => true, |
||||
]); |
||||
|
||||
$this->assertSame([], $event->metadata); |
||||
$status = $event->status; |
||||
$this->assertSame([], $status->metadata); |
||||
$this->assertSame(Grpc\STATUS_OK, $status->code); |
||||
$this->assertSame($status_text, $status->details); |
||||
|
||||
unset($call); |
||||
unset($server_call); |
||||
} |
||||
} |
@ -0,0 +1,65 @@ |
||||
Project Overview |
||||
================ |
||||
The project, titled 'GRPC Python compatibility support', involved |
||||
collaborating with the GRPC team to improve the library compatibility |
||||
for the GRPC Python library. |
||||
|
||||
Python is, originally, a specification for a programming language. This |
||||
specification has been implemented differently in different |
||||
implementations of the [language specification](https://docs.python.org/3/reference/). |
||||
|
||||
A small, and by no means exhaustive, list of some major python implementations |
||||
is: |
||||
|
||||
- [CPython](https://www.python.org/): The reference implementation |
||||
- [Jython](http://www.jython.org/): Python implemented in Java |
||||
- [Python for .NET](http://pythonnet.sourceforge.net/): CPython implementation that enables .NET library usage |
||||
- [IronPython](http://ironpython.net/): Python implemented in .NET |
||||
- [PyPy](http://pypy.org/): Python implemented completely in Python |
||||
- [Stackless](https://bitbucket.org/stackless-dev/stackless/wiki/Home): Replaces the dependency for the C call stack with it's own stack |
||||
|
||||
The development in this project revolved around |
||||
introducing changes to the codebase that enable support for latest |
||||
stable as well as development releases of the reference implementation |
||||
(CPython) of the Python programming language namely `Python 3.4`, |
||||
`Python 3.5`,and `Python 3.6` as well as the stable releases of the |
||||
PyPy implementation. Special changes were required to enable PyPy |
||||
support because PyPy has a non-deterministic garbage collector that does |
||||
not rely on reference counting unlike the CPython garbage collector. |
||||
|
||||
The changes to the codebase involved changes to the library code as well |
||||
as changes to the tests and scripts in the test infrastructure which |
||||
resulted in both the library as well as the testing infrastructure being |
||||
Python 3.x and PyPy compatible. |
||||
|
||||
The list of merged commits, as of 22.08.2016 23:59 CEST, is summarized |
||||
here for the perusal of those interested: |
||||
|
||||
- [Enable py35 and py36 testing](https://github.com/grpc/grpc/commit/c478214e475e103c5cdf477f0adc18bba2c03903) |
||||
- [Make testing toolchain python 3.x compliant](https://github.com/grpc/grpc/commit/0589e533cd65a2ca9e0e610cc1b284d016986572) |
||||
- [Add .idea folder to .gitignore](https://github.com/grpc/grpc/commit/365ef40947e22b5438a63f123679ae9a5474c47c) |
||||
- [Fix the ThreadPoolExecutor: max_workers can't be 0](https://github.com/grpc/grpc/commit/de84d566b8fad6808e5263a25a17fa231cb5713c) |
||||
- [Add PyPy to testing toolchain](https://github.com/grpc/grpc/commit/2135a1b557f8b992186d5317cb767ac4dbcdfe5c) |
||||
- [Switch init/shutdown: lib-wide -> per-object](https://github.com/grpc/grpc/commit/9eedb4ffd74aed8d246a07f8007960b2bc167f55) |
||||
- [Skip test run if running with pypy](https://github.com/grpc/grpc/commit/f0f58e68738abbc317f7f449c5104f7fbbff26bd) |
||||
|
||||
The list of unmerged pull requests is as follows: |
||||
|
||||
- [Add PyPy 5.3.1 to dockerfile and template](https://github.com/grpc/grpc/pull/7763) |
||||
- [remove skipIf from TypeSmokeTest (issue 7672)](https://github.com/grpc/grpc/pull/7831) |
||||
|
||||
The list of tasks that have pending unsubmitted pull requests is as follows: |
||||
|
||||
- Modify run_tests.py to enable testing of new languages without |
||||
affecting old branches. |
||||
|
||||
|
||||
Project Details |
||||
=============== |
||||
- Title: GRPC Python compatibility support |
||||
- Student: [Siddharth Shukla](https://github.com/thunderboltsid) |
||||
- Mentors: [Nathaniel Manista](https://github.com/nathanielmanistaatgoogle), [Masood Malekghassemi](https://github.com/soltanmm) |
||||
- Duration: May 23 - August 23 |
||||
- Hat tip: [Ken Payson](https://github.com/kpayson64), [Jan Tattermusch](https://github.com/jtattermusch), [Nicolas Noble](https://github.com/nicolasnoble) |
||||
|
||||
|
@ -0,0 +1,23 @@ |
||||
%YAML 1.2 |
||||
--- | |
||||
{ |
||||
"name": "grpc/grpc", |
||||
"type": "library", |
||||
"description": "gRPC library for PHP", |
||||
"keywords": ["rpc"], |
||||
"homepage": "http://grpc.io", |
||||
"license": "BSD-3-Clause", |
||||
"version": "${settings.php_version.php_composer()}", |
||||
"require": { |
||||
"php": ">=5.5.0", |
||||
"stanley-cheung/protobuf-php": "v0.6" |
||||
}, |
||||
"require-dev": { |
||||
"google/auth": "v0.9" |
||||
}, |
||||
"autoload": { |
||||
"psr-4": { |
||||
"Grpc\\": "lib/Grpc/" |
||||
} |
||||
} |
||||
} |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue