1*b315a0a8SYosh use anyhow::Context;
2*b315a0a8SYosh use std::io::{self, Read};
3*b315a0a8SYosh use test_programs::wasi::http::types::{Method, Scheme};
4*b315a0a8SYosh 
main()5*b315a0a8SYosh fn main() {
6*b315a0a8SYosh     // Make sure the final body is larger than 1024*1024, but we cannot allocate
7*b315a0a8SYosh     // so much memory directly in the wasm program, so we use the `repeat`
8*b315a0a8SYosh     // method to increase the body size.
9*b315a0a8SYosh     const LEN: usize = 1024;
10*b315a0a8SYosh     const REPEAT: usize = 1025;
11*b315a0a8SYosh     let mut buffer = [0; LEN];
12*b315a0a8SYosh     let addr = std::env::var("HTTP_SERVER").unwrap();
13*b315a0a8SYosh     io::repeat(0b001).read_exact(&mut buffer).unwrap();
14*b315a0a8SYosh     let res = test_programs::http::request(
15*b315a0a8SYosh         Method::Post,
16*b315a0a8SYosh         Scheme::Http,
17*b315a0a8SYosh         &addr,
18*b315a0a8SYosh         "/post",
19*b315a0a8SYosh         Some(&buffer.repeat(REPEAT)),
20*b315a0a8SYosh         None,
21*b315a0a8SYosh         None,
22*b315a0a8SYosh         None,
23*b315a0a8SYosh         None,
24*b315a0a8SYosh     )
25*b315a0a8SYosh     .context("/post large")
26*b315a0a8SYosh     .unwrap();
27*b315a0a8SYosh 
28*b315a0a8SYosh     println!("/post large: {}", res.status);
29*b315a0a8SYosh     assert_eq!(res.status, 200);
30*b315a0a8SYosh     let method = res.header("x-wasmtime-test-method").unwrap();
31*b315a0a8SYosh     assert_eq!(std::str::from_utf8(method).unwrap(), "POST");
32*b315a0a8SYosh     assert_eq!(res.body.len(), LEN * REPEAT);
33*b315a0a8SYosh }
34