1
1
#![ cfg( feature = "runtime" ) ]
2
2
extern crate pretty_env_logger;
3
3
4
- use std:: thread;
5
- use std:: time:: Duration ;
6
-
7
4
use futures:: Async ;
8
5
use futures:: future:: poll_fn;
9
- use tokio:: executor :: thread_pool :: { Builder as ThreadPoolBuilder } ;
6
+ use tokio:: runtime :: current_thread :: Runtime ;
10
7
11
8
use mock:: MockConnector ;
12
9
use super :: * ;
@@ -15,14 +12,13 @@ use super::*;
15
12
fn retryable_request ( ) {
16
13
let _ = pretty_env_logger:: try_init ( ) ;
17
14
18
- let executor = ThreadPoolBuilder :: new ( ) . pool_size ( 1 ) . build ( ) ;
15
+ let mut rt = Runtime :: new ( ) . expect ( "new rt" ) ;
19
16
let mut connector = MockConnector :: new ( ) ;
20
17
21
18
let sock1 = connector. mock ( "http://mock.local" ) ;
22
19
let sock2 = connector. mock ( "http://mock.local" ) ;
23
20
24
21
let client = Client :: builder ( )
25
- . executor ( executor. sender ( ) . clone ( ) )
26
22
. build :: < _ , :: Body > ( connector) ;
27
23
28
24
client. pool . no_timer ( ) ;
@@ -39,7 +35,7 @@ fn retryable_request() {
39
35
try_ready ! ( sock1. write( b"HTTP/1.1 200 OK\r \n Content-Length: 0\r \n \r \n " ) ) ;
40
36
Ok ( Async :: Ready ( ( ) ) )
41
37
} ) . map_err ( |e : :: std:: io:: Error | panic ! ( "srv1 poll_fn error: {}" , e) ) ;
42
- res1. join ( srv1) . wait ( ) . expect ( "res1" ) ;
38
+ rt . block_on ( res1. join ( srv1) ) . expect ( "res1" ) ;
43
39
}
44
40
drop ( sock1) ;
45
41
@@ -57,20 +53,19 @@ fn retryable_request() {
57
53
Ok ( Async :: Ready ( ( ) ) )
58
54
} ) . map_err ( |e : :: std:: io:: Error | panic ! ( "srv2 poll_fn error: {}" , e) ) ;
59
55
60
- res2. join ( srv2) . wait ( ) . expect ( "res2" ) ;
56
+ rt . block_on ( res2. join ( srv2) ) . expect ( "res2" ) ;
61
57
}
62
58
63
59
#[ test]
64
60
fn conn_reset_after_write ( ) {
65
61
let _ = pretty_env_logger:: try_init ( ) ;
66
62
67
- let executor = ThreadPoolBuilder :: new ( ) . pool_size ( 1 ) . build ( ) ;
63
+ let mut rt = Runtime :: new ( ) . expect ( "new rt" ) ;
68
64
let mut connector = MockConnector :: new ( ) ;
69
65
70
66
let sock1 = connector. mock ( "http://mock.local" ) ;
71
67
72
68
let client = Client :: builder ( )
73
- . executor ( executor. sender ( ) . clone ( ) )
74
69
. build :: < _ , :: Body > ( connector) ;
75
70
76
71
client. pool . no_timer ( ) ;
@@ -88,12 +83,9 @@ fn conn_reset_after_write() {
88
83
try_ready ! ( sock1. write( b"HTTP/1.1 200 OK\r \n Content-Length: 0\r \n \r \n " ) ) ;
89
84
Ok ( Async :: Ready ( ( ) ) )
90
85
} ) . map_err ( |e : :: std:: io:: Error | panic ! ( "srv1 poll_fn error: {}" , e) ) ;
91
- res1. join ( srv1) . wait ( ) . expect ( "res1" ) ;
86
+ rt . block_on ( res1. join ( srv1) ) . expect ( "res1" ) ;
92
87
}
93
88
94
- // sleep to allow some time for the connection to return to the pool
95
- thread:: sleep ( Duration :: from_millis ( 10 ) ) ;
96
-
97
89
let req = Request :: builder ( )
98
90
. uri ( "http://mock.local/a" )
99
91
. body ( Default :: default ( ) )
@@ -111,9 +103,10 @@ fn conn_reset_after_write() {
111
103
sock1. take ( ) ;
112
104
Ok ( Async :: Ready ( ( ) ) )
113
105
} ) . map_err ( |e : :: std:: io:: Error | panic ! ( "srv2 poll_fn error: {}" , e) ) ;
114
- let err = res2. join ( srv2) . wait ( ) . expect_err ( "res2" ) ;
106
+ let err = rt . block_on ( res2. join ( srv2) ) . expect_err ( "res2" ) ;
115
107
match err. kind ( ) {
116
108
& :: error:: Kind :: Incomplete => ( ) ,
117
109
other => panic ! ( "expected Incomplete, found {:?}" , other)
118
110
}
119
111
}
112
+
0 commit comments