Home | History | Annotate | Download | only in unit_tests
      1 <?php
      2 /*
      3  *
      4  * Copyright 2015 gRPC authors.
      5  *
      6  * Licensed under the Apache License, Version 2.0 (the "License");
      7  * you may not use this file except in compliance with the License.
      8  * You may obtain a copy of the License at
      9  *
     10  *     http://www.apache.org/licenses/LICENSE-2.0
     11  *
     12  * Unless required by applicable law or agreed to in writing, software
     13  * distributed under the License is distributed on an "AS IS" BASIS,
     14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     15  * See the License for the specific language governing permissions and
     16  * limitations under the License.
     17  *
     18  */
     19 
     20 class ServerTest extends PHPUnit_Framework_TestCase
     21 {
     22     public function setUp()
     23     {
     24         $this->server = null;
     25     }
     26 
     27     public function tearDown()
     28     {
     29         unset($this->server);
     30     }
     31 
     32     public function testConstructorWithNull()
     33     {
     34         $this->server = new Grpc\Server();
     35         $this->assertNotNull($this->server);
     36     }
     37 
     38     public function testConstructorWithNullArray()
     39     {
     40         $this->server = new Grpc\Server([]);
     41         $this->assertNotNull($this->server);
     42     }
     43 
     44     public function testConstructorWithArray()
     45     {
     46         // key of array must be string
     47          $this->server = new Grpc\Server(['ip' => '127.0.0.1',
     48                                           'port' => '8080', ]);
     49         $this->assertNotNull($this->server);
     50     }
     51 
     52     public function testRequestCall()
     53     {
     54         $this->server = new Grpc\Server();
     55         $port = $this->server->addHttp2Port('0.0.0.0:0');
     56         $this->server->start();
     57         $channel = new Grpc\Channel('localhost:'.$port,
     58              [
     59                  'force_new' => true,
     60                  'credentials' => Grpc\ChannelCredentials::createInsecure()
     61              ]);
     62 
     63         $deadline = Grpc\Timeval::infFuture();
     64         $call = new Grpc\Call($channel, 'dummy_method', $deadline);
     65 
     66         $event = $call->startBatch([Grpc\OP_SEND_INITIAL_METADATA => [],
     67                                     Grpc\OP_SEND_CLOSE_FROM_CLIENT => true,
     68                                     ]);
     69 
     70         $c = $this->server->requestCall();
     71         $this->assertObjectHasAttribute('call', $c);
     72         $this->assertObjectHasAttribute('method', $c);
     73         $this->assertSame('dummy_method', $c->method);
     74         $this->assertObjectHasAttribute('host', $c);
     75         $this->assertTrue(is_string($c->host));
     76         $this->assertObjectHasAttribute('absolute_deadline', $c);
     77         $this->assertObjectHasAttribute('metadata', $c);
     78 
     79         unset($call);
     80         unset($channel);
     81     }
     82 
     83     private function createSslObj()
     84     {
     85         $server_credentials = Grpc\ServerCredentials::createSsl(
     86              null,
     87              file_get_contents(dirname(__FILE__).'/../data/server1.key'),
     88              file_get_contents(dirname(__FILE__).'/../data/server1.pem'));
     89 
     90         return $server_credentials;
     91     }
     92 
     93     /**
     94      * @expectedException InvalidArgumentException
     95      */
     96     public function testInvalidConstructor()
     97     {
     98         $this->server = new Grpc\Server('invalid_host');
     99         $this->assertNull($this->server);
    100     }
    101 
    102     /**
    103      * @expectedException InvalidArgumentException
    104      */
    105     public function testInvalidConstructorWithNumKeyOfArray()
    106     {
    107         $this->server = new Grpc\Server([10 => '127.0.0.1',
    108                                          20 => '8080', ]);
    109         $this->assertNull($this->server);
    110     }
    111 
    112     /**
    113      * @expectedException InvalidArgumentException
    114      */
    115     public function testInvalidConstructorWithList()
    116     {
    117         $this->server = new Grpc\Server(['127.0.0.1', '8080']);
    118         $this->assertNull($this->server);
    119     }
    120     /**
    121      * @expectedException InvalidArgumentException
    122      */
    123     public function testInvalidAddHttp2Port()
    124     {
    125         $this->server = new Grpc\Server([]);
    126         $port = $this->server->addHttp2Port(['0.0.0.0:0']);
    127     }
    128 
    129     /**
    130      * @expectedException InvalidArgumentException
    131      */
    132     public function testInvalidAddSecureHttp2Port()
    133     {
    134         $this->server = new Grpc\Server([]);
    135         $port = $this->server->addSecureHttp2Port(['0.0.0.0:0']);
    136     }
    137 
    138     /**
    139      * @expectedException InvalidArgumentException
    140      */
    141     public function testInvalidAddSecureHttp2Port2()
    142     {
    143         $this->server = new Grpc\Server();
    144         $port = $this->server->addSecureHttp2Port('0.0.0.0:0');
    145     }
    146 
    147     /**
    148      * @expectedException InvalidArgumentException
    149      */
    150     public function testInvalidAddSecureHttp2Port3()
    151     {
    152         $this->server = new Grpc\Server();
    153         $port = $this->server->addSecureHttp2Port('0.0.0.0:0', 'invalid');
    154     }
    155 }
    156