|  | @@ -152,6 +152,7 @@ TEST_F(End2endTest, SimpleRpc) {
 | 
	
		
			
				|  |  |    EXPECT_TRUE(recv_status.IsOk());
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +// Two pings and a final pong.
 | 
	
		
			
				|  |  |  TEST_F(End2endTest, SimpleClientStreaming) {
 | 
	
		
			
				|  |  |    ResetStub();
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -205,6 +206,58 @@ TEST_F(End2endTest, SimpleClientStreaming) {
 | 
	
		
			
				|  |  |    EXPECT_TRUE(recv_status.IsOk());
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +// One ping, two pongs.
 | 
	
		
			
				|  |  | +TEST_F(End2endTest, SimpleServerStreaming) {
 | 
	
		
			
				|  |  | +  ResetStub();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  EchoRequest send_request;
 | 
	
		
			
				|  |  | +  EchoRequest recv_request;
 | 
	
		
			
				|  |  | +  EchoResponse send_response;
 | 
	
		
			
				|  |  | +  EchoResponse recv_response;
 | 
	
		
			
				|  |  | +  Status recv_status;
 | 
	
		
			
				|  |  | +  ClientContext cli_ctx;
 | 
	
		
			
				|  |  | +  ServerContext srv_ctx;
 | 
	
		
			
				|  |  | +  ServerAsyncWriter<EchoResponse> srv_stream(&srv_ctx);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  send_request.set_message("Hello");
 | 
	
		
			
				|  |  | +  ClientAsyncReader<EchoResponse>* cli_stream =
 | 
	
		
			
				|  |  | +      stub_->ResponseStream(&cli_ctx, send_request, &cli_cq_, tag(1));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  service_.RequestResponseStream(
 | 
	
		
			
				|  |  | +      &srv_ctx, &recv_request, &srv_stream, &srv_cq_, tag(2));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  server_ok(2);
 | 
	
		
			
				|  |  | +  client_ok(1);
 | 
	
		
			
				|  |  | +  EXPECT_EQ(send_request.message(), recv_request.message());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  send_response.set_message(recv_request.message());
 | 
	
		
			
				|  |  | +  srv_stream.Write(send_response, tag(3));
 | 
	
		
			
				|  |  | +  server_ok(3);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  cli_stream->Read(&recv_response, tag(4));
 | 
	
		
			
				|  |  | +  client_ok(4);
 | 
	
		
			
				|  |  | +  EXPECT_EQ(send_response.message(), recv_response.message());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  srv_stream.Write(send_response, tag(5));
 | 
	
		
			
				|  |  | +  server_ok(5);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  cli_stream->Read(&recv_response, tag(6));
 | 
	
		
			
				|  |  | +  client_ok(6);
 | 
	
		
			
				|  |  | +  EXPECT_EQ(send_response.message(), recv_response.message());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  srv_stream.Finish(Status::OK, tag(7));
 | 
	
		
			
				|  |  | +  server_ok(7);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  cli_stream->Read(&recv_response, tag(8));
 | 
	
		
			
				|  |  | +  client_fail(8);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  cli_stream->Finish(&recv_status, tag(9));
 | 
	
		
			
				|  |  | +  client_ok(9);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  EXPECT_TRUE(recv_status.IsOk());
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// One ping, one pong.
 | 
	
		
			
				|  |  |  TEST_F(End2endTest, SimpleBidiStreaming) {
 | 
	
		
			
				|  |  |    ResetStub();
 | 
	
		
			
				|  |  |  
 |