1 use anyhow::Context;
2 use std::net::SocketAddr;
3 use std::time::Duration;
4 use test_programs::wasi::http::types::{ErrorCode, Method, Scheme};
5
main()6 fn main() {
7 // This address inside the TEST-NET-3 address block is expected to time out.
8 let addr = SocketAddr::from(([203, 0, 113, 12], 80)).to_string();
9 let timeout = Duration::from_millis(200);
10 let connect_timeout: Option<u64> = Some(timeout.as_nanos() as u64);
11 let res = test_programs::http::request(
12 Method::Get,
13 Scheme::Http,
14 &addr,
15 "/get?some=arg&goes=here",
16 None,
17 None,
18 connect_timeout,
19 None,
20 None,
21 )
22 .context("/get");
23
24 assert!(res.is_err());
25 let err = res.unwrap_err();
26 assert!(
27 matches!(
28 err.downcast_ref::<ErrorCode>(),
29 Some(ErrorCode::ConnectionTimeout | ErrorCode::ConnectionRefused)
30 ),
31 "expected connection timeout: {err:?}"
32 );
33 }
34