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