From 306d169c91aa4ab69a623431fd46fe3ed26ea8bb Mon Sep 17 00:00:00 2001 From: Lucio Franco Date: Wed, 11 Sep 2019 22:44:59 -0400 Subject: [PATCH] Add unimplemented interop test --- tonic-interop/src/server.rs | 2 +- tonic-interop/test.sh | 4 ++-- tonic/src/status.rs | 9 +++++++++ tonic/src/transport/server.rs | 14 ++++++++------ tonic/src/transport/tls/mod.rs | 2 +- 5 files changed, 21 insertions(+), 10 deletions(-) diff --git a/tonic-interop/src/server.rs b/tonic-interop/src/server.rs index 70c15fa..647190d 100644 --- a/tonic-interop/src/server.rs +++ b/tonic-interop/src/server.rs @@ -152,6 +152,6 @@ impl pb::server::TestService for TestService { } async fn unimplemented_call(&self, _: Request) -> Result { - unimplemented!() + Err(Status::unimplemented("")) } } diff --git a/tonic-interop/test.sh b/tonic-interop/test.sh index e88a925..b1cee0f 100755 --- a/tonic-interop/test.sh +++ b/tonic-interop/test.sh @@ -45,6 +45,6 @@ trap 'echo ":; killing test server"; kill ${SERVER_PID};' EXIT ./target/debug/client \ --test_case=empty_unary,large_unary,client_streaming,server_streaming,ping_pong,\ -empty_stream,status_code_and_message,special_status_message $ARG -# unimplemented_method,unimplemented_service,custom_metadata +empty_stream,status_code_and_message,special_status_message,unimplemented_method $ARG +# ,unimplemented_service,custom_metadata diff --git a/tonic/src/status.rs b/tonic/src/status.rs index e31ebfe..1e0da90 100644 --- a/tonic/src/status.rs +++ b/tonic/src/status.rs @@ -62,6 +62,15 @@ impl Status { } } + /// Create a new `Unimplemented` status with the associated message. + pub fn unimplemented(message: impl Into) -> Status { + Status { + code: Code::Unimplemented, + message: message.into(), + details: Bytes::new(), + } + } + // TODO: This should probably be made public eventually. Need to decide on // the exact argument type. #[cfg_attr(not(feature = "h2"), allow(dead_code))] diff --git a/tonic/src/transport/server.rs b/tonic/src/transport/server.rs index 43e40e6..6f50e37 100644 --- a/tonic/src/transport/server.rs +++ b/tonic/src/transport/server.rs @@ -4,11 +4,15 @@ use super::{ }; use crate::BoxBody; use futures_core::Stream; -use futures_util::{try_future::MapOk, TryFutureExt, TryStreamExt, ready}; +use futures_util::{ready, try_future::MapOk, TryFutureExt, TryStreamExt}; use http::{Request, Response}; -use hyper::server::{conn, accept::Accept}; +use hyper::server::{accept::Accept, conn}; use hyper::Body; -use std::{net::SocketAddr, task::{Context, Poll}, pin::Pin}; +use std::{ + net::SocketAddr, + pin::Pin, + task::{Context, Poll}, +}; use tower_make::MakeService; use tower_service::Service; @@ -101,9 +105,7 @@ impl TcpIncoming { fn bind(addr: SocketAddr) -> Result { let inner = conn::AddrIncoming::bind(&addr).map_err(Box::new)?; - Ok(Self { - inner, - }) + Ok(Self { inner }) } } diff --git a/tonic/src/transport/tls/mod.rs b/tonic/src/transport/tls/mod.rs index 2de644c..5904d15 100644 --- a/tonic/src/transport/tls/mod.rs +++ b/tonic/src/transport/tls/mod.rs @@ -9,8 +9,8 @@ #[path = "openssl.rs"] mod imp; -use tokio::net::TcpStream; use std::fmt; +use tokio::net::TcpStream; #[derive(Debug, Clone)] pub(crate) struct Cert {