use futures::{stream::FuturesUnordered, StreamExt}; use rspc_dev_utilities::test_data::{ dur_to_str, make_test_data, TestData, TestDataClient, TestDataServer, CALLS_PER_THREAD, DATASIZE, THREADS, }; use rspc::transport; #[tokio::main] async fn main() -> Result<(), Box> { let (c, s) = transport::channel::new_sync(); let data: TestData = make_test_data(DATASIZE); let srv_thread = tokio::spawn(async move { let mut server = TestDataServer::from(data); server.listen(s).await }); let client = TestDataClient::new(c); let now = std::time::Instant::now(); { let set = FuturesUnordered::new(); for _ in 0..THREADS { set.push(async { for _ in 0..CALLS_PER_THREAD { client.heavy_calc().await.unwrap(); } }); } let _: Vec<_> = set.collect().await; } println!("time: {}", dur_to_str(now.elapsed())); client.stop().await.unwrap(); srv_thread.await.unwrap().unwrap(); Ok(()) }