aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/php/tests/unit_tests/SecureEndToEndTest.php
diff options
context:
space:
mode:
authorGravatar mlumish <mlumish@google.com>2014-12-09 16:28:23 -0800
committerGravatar Michael Lumish <mlumish@google.com>2014-12-09 17:50:41 -0800
commitb892a27e67e534eccf011ab8c68d455c5be77e6c (patch)
tree7d1475a645c6ac60ff0ee28f26425734048480cb /src/php/tests/unit_tests/SecureEndToEndTest.php
parent275b3ac04dbe5654a38de47e7f4ee6b9b7ca7b8e (diff)
Added PHP to the global gRPC moe config
Change on 2014/12/09 by mlumish <mlumish@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=81727766
Diffstat (limited to 'src/php/tests/unit_tests/SecureEndToEndTest.php')
-rwxr-xr-xsrc/php/tests/unit_tests/SecureEndToEndTest.php196
1 files changed, 196 insertions, 0 deletions
diff --git a/src/php/tests/unit_tests/SecureEndToEndTest.php b/src/php/tests/unit_tests/SecureEndToEndTest.php
new file mode 100755
index 0000000000..d645c03e4c
--- /dev/null
+++ b/src/php/tests/unit_tests/SecureEndToEndTest.php
@@ -0,0 +1,196 @@
+<?php
+class SecureEndToEndTest extends PHPUnit_Framework_TestCase{
+ public function setUp() {
+ $this->client_queue = new Grpc\CompletionQueue();
+ $this->server_queue = new Grpc\CompletionQueue();
+ $credentials = Grpc\Credentials::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->server_queue,
+ ['credentials' => $server_credentials]);
+ $this->server->add_secure_http2_port('localhost:9000');
+ $this->channel = new Grpc\Channel(
+ 'localhost:9000',
+ [
+ 'grpc.ssl_target_name_override' => 'foo.test.google.com',
+ 'credentials' => $credentials
+ ]);
+ }
+
+ public function tearDown() {
+ unset($this->channel);
+ unset($this->server);
+ unset($this->client_queue);
+ unset($this->server_queue);
+ }
+
+ public function testSimpleRequestBody() {
+ $this->server->start();
+ $deadline = Grpc\Timeval::inf_future();
+ $status_text = 'xyz';
+ $call = new Grpc\Call($this->channel,
+ 'dummy_method',
+ $deadline);
+ $tag = 1;
+ $this->assertEquals(Grpc\CALL_OK,
+ $call->start_invoke($this->client_queue,
+ $tag,
+ $tag,
+ $tag));
+ $server_tag = 2;
+
+ // the client invocation was accepted
+ $event = $this->client_queue->next($deadline);
+ $this->assertNotNull($event);
+ $this->assertEquals(Grpc\INVOKE_ACCEPTED, $event->get_type());
+
+ $this->assertEquals(Grpc\CALL_OK, $call->writes_done($tag));
+ $event = $this->client_queue->next($deadline);
+ $this->assertNotNull($event);
+ $this->assertEquals(Grpc\FINISH_ACCEPTED, $event->get_type());
+ $this->assertEquals(Grpc\OP_OK, $event->get_data());
+
+ // check that a server rpc new was received
+ $this->assertEquals(Grpc\CALL_OK, $this->server->request_call($server_tag));
+ $event = $this->server_queue->next($deadline);
+ $this->assertNotNull($event);
+ $this->assertEquals(Grpc\SERVER_RPC_NEW, $event->get_type());
+ $server_call = $event->get_call();
+ $this->assertNotNull($server_call);
+ $this->assertEquals(Grpc\CALL_OK,
+ $server_call->accept($this->server_queue, $server_tag));
+
+ // the server sends the status
+ $this->assertEquals(Grpc\CALL_OK,
+ $server_call->start_write_status(Grpc\STATUS_OK,
+ $status_text,
+ $server_tag));
+ $event = $this->server_queue->next($deadline);
+ $this->assertNotNull($event);
+ $this->assertEquals(Grpc\FINISH_ACCEPTED, $event->get_type());
+ $this->assertEquals(Grpc\OP_OK, $event->get_data());
+
+ // the client gets CLIENT_METADATA_READ
+ $event = $this->client_queue->next($deadline);
+ $this->assertNotNull($event);
+ $this->assertEquals(Grpc\CLIENT_METADATA_READ, $event->get_type());
+
+ // the client gets FINISHED
+ $event = $this->client_queue->next($deadline);
+ $this->assertNotNull($event);
+ $this->assertEquals(Grpc\FINISHED, $event->get_type());
+ $status = $event->get_data();
+ $this->assertEquals(Grpc\STATUS_OK, $status->code);
+ $this->assertEquals($status_text, $status->details);
+
+ // and the server gets FINISHED
+ $event = $this->server_queue->next($deadline);
+ $this->assertNotNull($event);
+ $this->assertEquals(Grpc\FINISHED, $event->get_type());
+ $status = $event->get_data();
+
+ unset($call);
+ unset($server_call);
+ }
+
+ public function testClientServerFullRequestResponse() {
+ $this->server->start();
+ $deadline = Grpc\Timeval::inf_future();
+ $req_text = 'client_server_full_request_response';
+ $reply_text = 'reply:client_server_full_request_response';
+ $status_text = 'status:client_server_full_response_text';
+
+ $call = new Grpc\Call($this->channel,
+ 'dummy_method',
+ $deadline);
+ $tag = 1;
+ $this->assertEquals(Grpc\CALL_OK,
+ $call->start_invoke($this->client_queue,
+ $tag,
+ $tag,
+ $tag));
+
+ $server_tag = 2;
+
+ // the client invocation was accepted
+ $event = $this->client_queue->next($deadline);
+ $this->assertNotNull($event);
+ $this->assertEquals(Grpc\INVOKE_ACCEPTED, $event->get_type());
+
+ // the client writes
+ $this->assertEquals(Grpc\CALL_OK, $call->start_write($req_text, $tag));
+ $event = $this->client_queue->next($deadline);
+ $this->assertNotNull($event);
+ $this->assertEquals(Grpc\WRITE_ACCEPTED, $event->get_type());
+
+ // check that a server rpc new was received
+ $this->assertEquals(Grpc\CALL_OK, $this->server->request_call($server_tag));
+ $event = $this->server_queue->next($deadline);
+ $this->assertNotNull($event);
+ $this->assertEquals(Grpc\SERVER_RPC_NEW, $event->get_type());
+ $server_call = $event->get_call();
+ $this->assertNotNull($server_call);
+ $this->assertEquals(Grpc\CALL_OK,
+ $server_call->accept($this->server_queue, $server_tag));
+
+ // start the server read
+ $this->assertEquals(Grpc\CALL_OK, $server_call->start_read($server_tag));
+ $event = $this->server_queue->next($deadline);
+ $this->assertNotNull($event);
+ $this->assertEquals(Grpc\READ, $event->get_type());
+ $this->assertEquals($req_text, $event->get_data());
+
+ // the server replies
+ $this->assertEquals(Grpc\CALL_OK,
+ $server_call->start_write($reply_text, $server_tag));
+ $event = $this->server_queue->next($deadline);
+ $this->assertNotNull($event);
+ $this->assertEquals(Grpc\WRITE_ACCEPTED, $event->get_type());
+
+ // the client reads the metadata
+ $event = $this->client_queue->next($deadline);
+ $this->assertNotNull($event);
+ $this->assertEquals(Grpc\CLIENT_METADATA_READ, $event->get_type());
+
+ // the client reads the reply
+ $this->assertEquals(Grpc\CALL_OK, $call->start_read($tag));
+ $event = $this->client_queue->next($deadline);
+ $this->assertNotNull($event);
+ $this->assertEquals(Grpc\READ, $event->get_type());
+ $this->assertEquals($reply_text, $event->get_data());
+
+ // the client sends writes done
+ $this->assertEquals(Grpc\CALL_OK, $call->writes_done($tag));
+ $event = $this->client_queue->next($deadline);
+ $this->assertEquals(Grpc\FINISH_ACCEPTED, $event->get_type());
+ $this->assertEquals(Grpc\OP_OK, $event->get_data());
+
+ // the server sends the status
+ $this->assertEquals(Grpc\CALL_OK,
+ $server_call->start_write_status(GRPC\STATUS_OK,
+ $status_text,
+ $server_tag));
+ $event = $this->server_queue->next($deadline);
+ $this->assertEquals(Grpc\FINISH_ACCEPTED, $event->get_type());
+ $this->assertEquals(Grpc\OP_OK, $event->get_data());
+
+ // the client gets FINISHED
+ $event = $this->client_queue->next($deadline);
+ $this->assertNotNull($event);
+ $this->assertEquals(Grpc\FINISHED, $event->get_type());
+ $status = $event->get_data();
+ $this->assertEquals(Grpc\STATUS_OK, $status->code);
+ $this->assertEquals($status_text, $status->details);
+
+ // and the server gets FINISHED
+ $event = $this->server_queue->next($deadline);
+ $this->assertNotNull($event);
+ $this->assertEquals(Grpc\FINISHED, $event->get_type());
+
+ unset($call);
+ unset($server_call);
+ }
+} \ No newline at end of file