Skip to content

Commit 846c16a

Browse files
committed
logs for tests
1 parent 994897a commit 846c16a

File tree

5 files changed

+43
-4
lines changed

5 files changed

+43
-4
lines changed

.github/workflows/CI.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ on:
77

88
env:
99
RUST_BACKTRACE: 1
10+
RUST_LOG: hyper=trace,tokio=trace,mio=trace,h2=trace
1011

1112
jobs:
1213
style:
@@ -72,7 +73,7 @@ jobs:
7273
uses: actions-rs/cargo@v1
7374
with:
7475
command: test
75-
args: ${{ matrix.features }}
76+
args: ${{ matrix.features }} --test server upgrades_ignored
7677

7778
- name: Test all benches
7879
if: matrix.benches

src/proto/h1/conn.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ where
276276

277277
pub fn poll_read_keep_alive(&mut self, cx: &mut task::Context<'_>) -> Poll<crate::Result<()>> {
278278
debug_assert!(!self.can_read_head() && !self.can_read_body());
279+
trace!("poll_read_keep_alive");
279280

280281
if self.is_read_closed() {
281282
Poll::Pending
@@ -334,7 +335,13 @@ where
334335
debug_assert!(!self.can_read_head() && !self.can_read_body() && !self.is_read_closed());
335336
debug_assert!(self.is_mid_message());
336337

338+
trace!("mid_message_detect_eof >");
337339
if self.state.allow_half_close || !self.io.read_buf().is_empty() {
340+
trace!(
341+
"allow_half_close: {}, read buf is empty: {}",
342+
self.state.allow_half_close,
343+
!self.io.read_buf().is_empty()
344+
);
338345
return Poll::Pending;
339346
}
340347

@@ -345,14 +352,18 @@ where
345352
self.state.close_read();
346353
Poll::Ready(Err(crate::Error::new_incomplete()))
347354
} else {
355+
trace!("mid_message_detect_eof < read {} bytes", num_read);
348356
Poll::Ready(Ok(()))
349357
}
350358
}
351359

352360
fn force_io_read(&mut self, cx: &mut task::Context<'_>) -> Poll<io::Result<usize>> {
353361
debug_assert!(!self.state.is_read_closed());
354362

363+
trace!("force_io_read >");
355364
let result = ready!(self.io.poll_read_from_io(cx));
365+
366+
trace!("force_io_read < {:?}", result);
356367
Poll::Ready(result.map_err(|e| {
357368
trace!("force_io_read; io error = {:?}", e);
358369
self.state.close();

src/proto/h1/dispatch.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,15 @@ where
148148
//
149149
// 16 was chosen arbitrarily, as that is number of pipelined requests
150150
// benchmarks often use. Perhaps it should be a config option instead.
151+
trace!("poll_loop");
151152
for _ in 0..16 {
152-
let _ = self.poll_read(cx)?;
153+
trace!("poll_read >");
154+
let ret = self.poll_read(cx);
155+
trace!("poll_read < {:?}", ret);
156+
let _ = ret?;
157+
trace!("poll_write >");
153158
let _ = self.poll_write(cx)?;
159+
trace!("poll_write <");
154160
let _ = self.poll_flush(cx)?;
155161

156162
// This could happen if reading paused before blocking on IO,
@@ -163,6 +169,7 @@ where
163169
// the Conn is noticeably faster in pipelined benchmarks.
164170
if !self.conn.wants_read_again() {
165171
//break;
172+
trace!("! wants_read_again()");
166173
return Poll::Ready(Ok(()));
167174
}
168175
}
@@ -173,7 +180,9 @@ where
173180
}
174181

175182
fn poll_read(&mut self, cx: &mut task::Context<'_>) -> Poll<crate::Result<()>> {
183+
trace!("poll_read >>");
176184
loop {
185+
trace!("poll_read; loop");
177186
if self.is_closing {
178187
return Poll::Ready(Ok(()));
179188
} else if self.conn.can_read_head() {
@@ -276,6 +285,7 @@ where
276285
}
277286

278287
fn poll_write(&mut self, cx: &mut task::Context<'_>) -> Poll<crate::Result<()>> {
288+
trace!("poll_write");
279289
loop {
280290
if self.is_closing {
281291
return Poll::Ready(Ok(()));
@@ -475,8 +485,11 @@ where
475485
cx: &mut task::Context<'_>,
476486
) -> Poll<Option<Result<(Self::PollItem, Self::PollBody), Self::PollError>>> {
477487
let mut this = self.as_mut();
488+
trace!("Server::poll_msg ->");
478489
let ret = if let Some(ref mut fut) = this.in_flight.as_mut().as_pin_mut() {
490+
trace!("Server::poll_msg -> polling fut");
479491
let resp = ready!(fut.as_mut().poll(cx)?);
492+
trace!("Server::poll_msg -> response!");
480493
let (parts, body) = resp.into_parts();
481494
let head = MessageHead {
482495
version: parts.version,
@@ -495,12 +508,14 @@ where
495508

496509
fn recv_msg(&mut self, msg: crate::Result<(Self::RecvItem, Body)>) -> crate::Result<()> {
497510
let (msg, body) = msg?;
511+
trace!("recv_msg; req!");
498512
let mut req = Request::new(body);
499513
*req.method_mut() = msg.subject.0;
500514
*req.uri_mut() = msg.subject.1;
501515
*req.headers_mut() = msg.headers;
502516
*req.version_mut() = msg.version;
503517
let fut = self.service.call(req);
518+
trace!("recv_msg; service called");
504519
self.in_flight.set(Some(fut));
505520
Ok(())
506521
}

src/proto/h1/io.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ where
183183
}
184184

185185
pub fn poll_read_from_io(&mut self, cx: &mut task::Context<'_>) -> Poll<io::Result<usize>> {
186+
trace!("poll_read_from_io >");
186187
self.read_blocked = false;
187188
let next = self.read_buf_strategy.next();
188189
if self.read_buf_remaining_mut() < next {
@@ -192,6 +193,7 @@ where
192193
match Pin::new(&mut self.io).poll_read(cx, &mut buf) {
193194
Poll::Ready(Ok(_)) => {
194195
let n = buf.filled().len();
196+
trace!("poll_read_from_io < {} bytes", n);
195197
unsafe {
196198
// Safety: we just read that many bytes into the
197199
// uninitialized part of the buffer, so this is okay.
@@ -202,6 +204,7 @@ where
202204
Poll::Ready(Ok(n))
203205
}
204206
Poll::Pending => {
207+
trace!("poll_read_from_io < blocked");
205208
self.read_blocked = true;
206209
Poll::Pending
207210
}

tests/server.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1141,6 +1141,7 @@ async fn disconnect_after_reading_request_before_responding() {
11411141

11421142
#[tokio::test]
11431143
async fn returning_1xx_response_is_error() {
1144+
let _ = pretty_env_logger::try_init();
11441145
let listener = tcp_bind(&"127.0.0.1:0".parse().unwrap()).unwrap();
11451146
let addr = listener.local_addr().unwrap();
11461147

@@ -1155,7 +1156,7 @@ async fn returning_1xx_response_is_error() {
11551156
});
11561157

11571158
let (socket, _) = listener.accept().await.unwrap();
1158-
Http::new()
1159+
let err = Http::new()
11591160
.serve_connection(
11601161
socket,
11611162
service_fn(|_| async move {
@@ -1169,6 +1170,7 @@ async fn returning_1xx_response_is_error() {
11691170
)
11701171
.await
11711172
.expect_err("1xx status code should error");
1173+
assert!(err.is_user(), "should be a user error: {}", err);
11721174
}
11731175

11741176
#[test]
@@ -1379,9 +1381,10 @@ async fn upgrades_ignored() {
13791381
let listener = tcp_bind(&"127.0.0.1:0".parse().unwrap()).unwrap();
13801382
let addr = listener.local_addr().unwrap();
13811383

1382-
tokio::spawn(async move {
1384+
let t1 = tokio::spawn(async move {
13831385
let svc = service_fn(move |req: Request<Body>| {
13841386
assert_eq!(req.headers()["upgrade"], "yolo");
1387+
println!("server got request");
13851388
future::ok::<_, hyper::Error>(Response::new(hyper::Body::empty()))
13861389
});
13871390

@@ -1411,6 +1414,11 @@ async fn upgrades_ignored() {
14111414

14121415
let res2 = client.request(make_req()).await.expect("req 2");
14131416
assert_eq!(res2.status(), 200);
1417+
drop(res2);
1418+
1419+
drop(client);
1420+
1421+
t1.await.unwrap();
14141422
}
14151423

14161424
#[tokio::test]
@@ -2348,6 +2356,7 @@ fn has_header(msg: &str, name: &str) -> bool {
23482356

23492357
fn tcp_bind(addr: &SocketAddr) -> ::tokio::io::Result<TcpListener> {
23502358
let std_listener = StdTcpListener::bind(addr).unwrap();
2359+
std_listener.set_nonblocking(true).unwrap();
23512360
TcpListener::from_std(std_listener)
23522361
}
23532362

0 commit comments

Comments
 (0)