| Index: third_party/grpc/src/php/tests/generated_code/AbstractGeneratedCodeTest.php
|
| diff --git a/third_party/grpc/src/php/tests/generated_code/AbstractGeneratedCodeTest.php b/third_party/grpc/src/php/tests/generated_code/AbstractGeneratedCodeTest.php
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f70525ef1585ad3fe2a8357760cb921253cd2dd0
|
| --- /dev/null
|
| +++ b/third_party/grpc/src/php/tests/generated_code/AbstractGeneratedCodeTest.php
|
| @@ -0,0 +1,288 @@
|
| +<?php
|
| +/*
|
| + *
|
| + * Copyright 2015-2016, 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.
|
| + *
|
| + */
|
| +require_once realpath(dirname(__FILE__).'/../../vendor/autoload.php');
|
| +require_once dirname(__FILE__).'/math.php';
|
| +
|
| +abstract class AbstractGeneratedCodeTest extends PHPUnit_Framework_TestCase
|
| +{
|
| + /**
|
| + * These tests require that a server exporting the math service must be
|
| + * running on $GRPC_TEST_HOST.
|
| + */
|
| + protected static $client;
|
| +
|
| + public function testWaitForNotReady()
|
| + {
|
| + $this->assertFalse(self::$client->waitForReady(1));
|
| + }
|
| +
|
| + public function testWaitForReady()
|
| + {
|
| + $this->assertTrue(self::$client->waitForReady(250000));
|
| + }
|
| +
|
| + public function testAlreadyReady()
|
| + {
|
| + $this->assertTrue(self::$client->waitForReady(250000));
|
| + $this->assertTrue(self::$client->waitForReady(100));
|
| + }
|
| +
|
| + public function testGetTarget()
|
| + {
|
| + $this->assertTrue(is_string(self::$client->getTarget()));
|
| + }
|
| +
|
| + /**
|
| + * @expectedException InvalidArgumentException
|
| + */
|
| + public function testClose()
|
| + {
|
| + self::$client->close();
|
| + $div_arg = new math\DivArgs();
|
| + $call = self::$client->Div($div_arg);
|
| + }
|
| +
|
| + /**
|
| + * @expectedException InvalidArgumentException
|
| + */
|
| + public function testInvalidMetadata()
|
| + {
|
| + $div_arg = new math\DivArgs();
|
| + $call = self::$client->Div($div_arg, [' ' => 'abc123']);
|
| + }
|
| +
|
| + public function testGetCallMetadata()
|
| + {
|
| + $div_arg = new math\DivArgs();
|
| + $call = self::$client->Div($div_arg);
|
| + $this->assertTrue(is_array($call->getMetadata()));
|
| + }
|
| +
|
| + public function testTimeout()
|
| + {
|
| + $div_arg = new math\DivArgs();
|
| + $call = self::$client->Div($div_arg, [], ['timeout' => 100]);
|
| + list($response, $status) = $call->wait();
|
| + $this->assertSame(\Grpc\STATUS_DEADLINE_EXCEEDED, $status->code);
|
| + }
|
| +
|
| + public function testCancel()
|
| + {
|
| + $div_arg = new math\DivArgs();
|
| + $call = self::$client->Div($div_arg);
|
| + $call->cancel();
|
| + list($response, $status) = $call->wait();
|
| + $this->assertSame(\Grpc\STATUS_CANCELLED, $status->code);
|
| + }
|
| +
|
| + public function testCallCredentialsCallback()
|
| + {
|
| + $div_arg = new math\DivArgs();
|
| + $call = self::$client->Div($div_arg, array(), array(
|
| + 'call_credentials_callback' => function ($context) {
|
| + return array();
|
| + },
|
| + ));
|
| + $call->cancel();
|
| + list($response, $status) = $call->wait();
|
| + $this->assertSame(\Grpc\STATUS_CANCELLED, $status->code);
|
| + }
|
| +
|
| + public function testCallCredentialsCallback2()
|
| + {
|
| + $div_arg = new math\DivArgs();
|
| + $call = self::$client->Div($div_arg);
|
| + $call_credentials = Grpc\CallCredentials::createFromPlugin(
|
| + function ($context) {
|
| + return array();
|
| + }
|
| + );
|
| + $call->setCallCredentials($call_credentials);
|
| + $call->cancel();
|
| + list($response, $status) = $call->wait();
|
| + $this->assertSame(\Grpc\STATUS_CANCELLED, $status->code);
|
| + }
|
| +
|
| + /**
|
| + * @expectedException InvalidArgumentException
|
| + */
|
| + public function testInvalidMethodName()
|
| + {
|
| + $invalid_client = new DummyInvalidClient('host', [
|
| + 'credentials' => Grpc\ChannelCredentials::createInsecure(),
|
| + ]);
|
| + $div_arg = new math\DivArgs();
|
| + $invalid_client->InvalidUnaryCall($div_arg);
|
| + }
|
| +
|
| + /**
|
| + * @expectedException Exception
|
| + */
|
| + public function testMissingCredentials()
|
| + {
|
| + $invalid_client = new DummyInvalidClient('host', [
|
| + ]);
|
| + }
|
| +
|
| + public function testPrimaryUserAgentString()
|
| + {
|
| + $invalid_client = new DummyInvalidClient('host', [
|
| + 'credentials' => Grpc\ChannelCredentials::createInsecure(),
|
| + 'grpc.primary_user_agent' => 'testUserAgent',
|
| + ]);
|
| + }
|
| +
|
| + public function testWriteFlags()
|
| + {
|
| + $div_arg = new math\DivArgs();
|
| + $div_arg->setDividend(7);
|
| + $div_arg->setDivisor(4);
|
| + $call = self::$client->Div($div_arg, [],
|
| + ['flags' => Grpc\WRITE_NO_COMPRESS]);
|
| + $this->assertTrue(is_string($call->getPeer()));
|
| + list($response, $status) = $call->wait();
|
| + $this->assertSame(1, $response->getQuotient());
|
| + $this->assertSame(3, $response->getRemainder());
|
| + $this->assertSame(\Grpc\STATUS_OK, $status->code);
|
| + }
|
| +
|
| + public function testWriteFlagsServerStreaming()
|
| + {
|
| + $fib_arg = new math\FibArgs();
|
| + $fib_arg->setLimit(7);
|
| + $call = self::$client->Fib($fib_arg, [],
|
| + ['flags' => Grpc\WRITE_NO_COMPRESS]);
|
| + $result_array = iterator_to_array($call->responses());
|
| + $status = $call->getStatus();
|
| + $this->assertSame(\Grpc\STATUS_OK, $status->code);
|
| + }
|
| +
|
| + public function testWriteFlagsClientStreaming()
|
| + {
|
| + $call = self::$client->Sum();
|
| + $num = new math\Num();
|
| + $num->setNum(1);
|
| + $call->write($num, ['flags' => Grpc\WRITE_NO_COMPRESS]);
|
| + list($response, $status) = $call->wait();
|
| + $this->assertSame(\Grpc\STATUS_OK, $status->code);
|
| + }
|
| +
|
| + public function testWriteFlagsBidiStreaming()
|
| + {
|
| + $call = self::$client->DivMany();
|
| + $div_arg = new math\DivArgs();
|
| + $div_arg->setDividend(7);
|
| + $div_arg->setDivisor(4);
|
| + $call->write($div_arg, ['flags' => Grpc\WRITE_NO_COMPRESS]);
|
| + $response = $call->read();
|
| + $call->writesDone();
|
| + $status = $call->getStatus();
|
| + $this->assertSame(\Grpc\STATUS_OK, $status->code);
|
| + }
|
| +
|
| + public function testSimpleRequest()
|
| + {
|
| + $div_arg = new math\DivArgs();
|
| + $div_arg->setDividend(7);
|
| + $div_arg->setDivisor(4);
|
| + $call = self::$client->Div($div_arg);
|
| + $this->assertTrue(is_string($call->getPeer()));
|
| + list($response, $status) = $call->wait();
|
| + $this->assertSame(1, $response->getQuotient());
|
| + $this->assertSame(3, $response->getRemainder());
|
| + $this->assertSame(\Grpc\STATUS_OK, $status->code);
|
| + }
|
| +
|
| + public function testServerStreaming()
|
| + {
|
| + $fib_arg = new math\FibArgs();
|
| + $fib_arg->setLimit(7);
|
| + $call = self::$client->Fib($fib_arg);
|
| + $this->assertTrue(is_string($call->getPeer()));
|
| + $result_array = iterator_to_array($call->responses());
|
| + $extract_num = function ($num) {
|
| + return $num->getNum();
|
| + };
|
| + $values = array_map($extract_num, $result_array);
|
| + $this->assertSame([1, 1, 2, 3, 5, 8, 13], $values);
|
| + $status = $call->getStatus();
|
| + $this->assertSame(\Grpc\STATUS_OK, $status->code);
|
| + }
|
| +
|
| + public function testClientStreaming()
|
| + {
|
| + $call = self::$client->Sum();
|
| + $this->assertTrue(is_string($call->getPeer()));
|
| + for ($i = 0; $i < 7; ++$i) {
|
| + $num = new math\Num();
|
| + $num->setNum($i);
|
| + $call->write($num);
|
| + }
|
| + list($response, $status) = $call->wait();
|
| + $this->assertSame(21, $response->getNum());
|
| + $this->assertSame(\Grpc\STATUS_OK, $status->code);
|
| + }
|
| +
|
| + public function testBidiStreaming()
|
| + {
|
| + $call = self::$client->DivMany();
|
| + $this->assertTrue(is_string($call->getPeer()));
|
| + for ($i = 0; $i < 7; ++$i) {
|
| + $div_arg = new math\DivArgs();
|
| + $div_arg->setDividend(2 * $i + 1);
|
| + $div_arg->setDivisor(2);
|
| + $call->write($div_arg);
|
| + $response = $call->read();
|
| + $this->assertSame($i, $response->getQuotient());
|
| + $this->assertSame(1, $response->getRemainder());
|
| + }
|
| + $call->writesDone();
|
| + $status = $call->getStatus();
|
| + $this->assertSame(\Grpc\STATUS_OK, $status->code);
|
| + }
|
| +}
|
| +
|
| +class DummyInvalidClient extends \Grpc\BaseStub
|
| +{
|
| + public function InvalidUnaryCall(\math\DivArgs $argument,
|
| + $metadata = [],
|
| + $options = [])
|
| + {
|
| + return $this->_simpleRequest('invalidMethodName',
|
| + $argument,
|
| + function () {},
|
| + $metadata,
|
| + $options);
|
| + }
|
| +}
|
|
|