assertSame($call, $stream->getClientStreamingCall()); $this->assertSame($response, $stream->readResponse()); $this->assertSame([], $call->popReceivedCalls()); } /** * @expectedException \Google\GAX\ApiException * @expectedExceptionMessage no writes failure */ public function testNoWritesFailure() { $response = 'response'; $call = new MockClientStreamingCall( $response, null, new MockStatus(Grpc\STATUS_INTERNAL, 'no writes failure') ); $stream = new ClientStream($call); $this->assertSame($call, $stream->getClientStreamingCall()); $this->assertSame([], $call->popReceivedCalls()); $stream->readResponse(); } public function testManualWritesSuccess() { $requests = [ ClientStreamTest::createStatus(Grpc\STATUS_OK, 'request1'), ClientStreamTest::createStatus(Grpc\STATUS_OK, 'request2') ]; $response = ClientStreamTest::createStatus(Grpc\STATUS_OK, 'response'); $call = new MockClientStreamingCall($response->serialize(), '\google\rpc\Status::deserialize'); $stream = new ClientStream($call); foreach ($requests as $request) { $stream->write($request); } $this->assertSame($call, $stream->getClientStreamingCall()); $this->assertEquals($response, $stream->readResponse()); $this->assertEquals($requests, $call->popReceivedCalls()); } /** * @expectedException \Google\GAX\ApiException * @expectedExceptionMessage manual writes failure */ public function testManualWritesFailure() { $requests = [ ClientStreamTest::createStatus(Grpc\STATUS_OK, 'request1'), ClientStreamTest::createStatus(Grpc\STATUS_OK, 'request2') ]; $response = ClientStreamTest::createStatus(Grpc\STATUS_OK, 'response'); $call = new MockClientStreamingCall( $response->serialize(), '\google\rpc\Status::deserialize', new MockStatus(Grpc\STATUS_INTERNAL, 'manual writes failure') ); $stream = new ClientStream($call); foreach ($requests as $request) { $stream->write($request); } $this->assertSame($call, $stream->getClientStreamingCall()); $this->assertEquals($requests, $call->popReceivedCalls()); $stream->readResponse(); } public function testWriteAllSuccess() { $requests = [ ClientStreamTest::createStatus(Grpc\STATUS_OK, 'request1'), ClientStreamTest::createStatus(Grpc\STATUS_OK, 'request2') ]; $response = ClientStreamTest::createStatus(Grpc\STATUS_OK, 'response'); $call = new MockClientStreamingCall($response->serialize(), '\google\rpc\Status::deserialize'); $stream = new ClientStream($call); $actualResponse = $stream->writeAllAndReadResponse($requests); $this->assertSame($call, $stream->getClientStreamingCall()); $this->assertEquals($response, $actualResponse); $this->assertEquals($requests, $call->popReceivedCalls()); } /** * @expectedException \Google\GAX\ApiException * @expectedExceptionMessage write all failure */ public function testWriteAllFailure() { $requests = [ ClientStreamTest::createStatus(Grpc\STATUS_OK, 'request1'), ClientStreamTest::createStatus(Grpc\STATUS_OK, 'request2') ]; $response = ClientStreamTest::createStatus(Grpc\STATUS_OK, 'response'); $call = new MockClientStreamingCall( $response->serialize(), '\google\rpc\Status::deserialize', new MockStatus(Grpc\STATUS_INTERNAL, 'write all failure') ); $stream = new ClientStream($call); try { $stream->writeAllAndReadResponse($requests); } finally { $this->assertSame($call, $stream->getClientStreamingCall()); $this->assertEquals($requests, $call->popReceivedCalls()); } } private static function createStatus($code, $message) { $status = new Status(); $status->setCode($code)->setMessage($message); return $status; } }