diff options
author | Asher Gomez <ashersaupingomez@gmail.com> | 2024-02-20 00:34:24 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-19 06:34:24 -0700 |
commit | 2b279ad630651e973d5a31586f58809f005bc925 (patch) | |
tree | 3e3cbeb4126643c75381dd5422e8603a7488bb8a /test_util/src/servers/grpc.rs | |
parent | eb542bc185c6c4ce1847417a2dfdf04862cd86db (diff) |
chore: move `test_util` to `tests/util/server` (#22444)
As discussed with @mmastrac.
---------
Signed-off-by: Asher Gomez <ashersaupingomez@gmail.com>
Co-authored-by: Matt Mastracci <matthew@mastracci.com>
Diffstat (limited to 'test_util/src/servers/grpc.rs')
-rw-r--r-- | test_util/src/servers/grpc.rs | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/test_util/src/servers/grpc.rs b/test_util/src/servers/grpc.rs deleted file mode 100644 index 144afc06a..000000000 --- a/test_util/src/servers/grpc.rs +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. - -use futures::StreamExt; -use h2; -use hyper::header::HeaderName; -use hyper::header::HeaderValue; -use rustls_tokio_stream::TlsStream; -use tokio::net::TcpStream; -use tokio::task::LocalSet; - -use super::get_tcp_listener_stream; -use super::get_tls_listener_stream; -use super::SupportedHttpVersions; - -pub async fn h2_grpc_server(h2_grpc_port: u16, h2s_grpc_port: u16) { - let mut tcp = get_tcp_listener_stream("grpc", h2_grpc_port).await; - let mut tls = get_tls_listener_stream( - "grpc (tls)", - h2s_grpc_port, - SupportedHttpVersions::Http2Only, - ) - .await; - - async fn serve(socket: TcpStream) -> Result<(), anyhow::Error> { - let mut connection = h2::server::handshake(socket).await?; - - while let Some(result) = connection.accept().await { - let (request, respond) = result?; - tokio::spawn(async move { - let _ = handle_request(request, respond).await; - }); - } - - Ok(()) - } - - async fn serve_tls(socket: TlsStream) -> Result<(), anyhow::Error> { - let mut connection = h2::server::handshake(socket).await?; - - while let Some(result) = connection.accept().await { - let (request, respond) = result?; - tokio::spawn(async move { - let _ = handle_request(request, respond).await; - }); - } - - Ok(()) - } - - async fn handle_request( - mut request: hyper::Request<h2::RecvStream>, - mut respond: h2::server::SendResponse<bytes::Bytes>, - ) -> Result<(), anyhow::Error> { - let body = request.body_mut(); - while let Some(data) = body.data().await { - let data = data?; - let _ = body.flow_control().release_capacity(data.len()); - } - - let maybe_recv_trailers = body.trailers().await?; - - let response = hyper::Response::new(()); - let mut send = respond.send_response(response, false)?; - send.send_data(bytes::Bytes::from_static(b"hello "), false)?; - send.send_data(bytes::Bytes::from_static(b"world\n"), false)?; - let mut trailers = hyper::HeaderMap::new(); - trailers.insert( - HeaderName::from_static("abc"), - HeaderValue::from_static("def"), - ); - trailers.insert( - HeaderName::from_static("opr"), - HeaderValue::from_static("stv"), - ); - if let Some(recv_trailers) = maybe_recv_trailers { - for (key, value) in recv_trailers { - trailers.insert(key.unwrap(), value); - } - } - send.send_trailers(trailers)?; - - Ok(()) - } - - let local_set = LocalSet::new(); - local_set.spawn_local(async move { - while let Some(Ok(tcp)) = tcp.next().await { - tokio::spawn(async move { - let _ = serve(tcp).await; - }); - } - }); - - local_set.spawn_local(async move { - while let Some(Ok(tls)) = tls.next().await { - tokio::spawn(async move { - let _ = serve_tls(tls).await; - }); - } - }); - - local_set.await; -} |