update: add endless data source for debugging
							parent
							
								
									f53973ddad
								
							
						
					
					
						commit
						09464c548a
					
				| 
						 | 
				
			
			@ -1717,6 +1717,7 @@ dependencies = [
 | 
			
		|||
 "hyper",
 | 
			
		||||
 "itertools",
 | 
			
		||||
 "ptth_core",
 | 
			
		||||
 "rand 0.6.5",
 | 
			
		||||
 "rmp-serde",
 | 
			
		||||
 "serde",
 | 
			
		||||
 "serde_json",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,7 @@ handlebars = "3.5.1"
 | 
			
		|||
http = "0.2.1"
 | 
			
		||||
hyper = "0.13.8"
 | 
			
		||||
itertools = "0.9.0"
 | 
			
		||||
rand = "0.6.5"
 | 
			
		||||
rmp-serde = "0.14.4"
 | 
			
		||||
serde = {version = "1.0.117", features = ["derive"]}
 | 
			
		||||
serde_json = "1.0.60"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,6 +16,7 @@
 | 
			
		|||
 | 
			
		||||
use std::{
 | 
			
		||||
	borrow::Cow,
 | 
			
		||||
	convert::Infallible,
 | 
			
		||||
	net::SocketAddr,
 | 
			
		||||
	path::{Path, PathBuf},
 | 
			
		||||
	sync::Arc,
 | 
			
		||||
| 
						 | 
				
			
			@ -302,6 +303,24 @@ async fn handle_server_list (
 | 
			
		|||
	Ok (ok_reply (s)?)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async fn handle_endless_source (gib: usize) -> Result <Response <Body>, http::Error> {
 | 
			
		||||
	use futures::stream::StreamExt;
 | 
			
		||||
	
 | 
			
		||||
	let random_block = {
 | 
			
		||||
		use rand::RngCore;
 | 
			
		||||
		
 | 
			
		||||
		let mut rng = rand::thread_rng ();
 | 
			
		||||
		let mut block = vec! [0u8; 64 * 1024];
 | 
			
		||||
		rng.fill_bytes (&mut block);
 | 
			
		||||
		block
 | 
			
		||||
	};
 | 
			
		||||
	
 | 
			
		||||
	Response::builder ()
 | 
			
		||||
	.status (StatusCode::OK)
 | 
			
		||||
	.header ("content-type", "application/octet-stream")
 | 
			
		||||
	.body (Body::wrap_stream (futures::stream::repeat (Ok::<_, Infallible> (random_block)).take (gib * 1024 * 1024 / 64)))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[instrument (level = "trace", skip (req, state, handlebars))]
 | 
			
		||||
async fn handle_all (
 | 
			
		||||
	req: Request <Body>, 
 | 
			
		||||
| 
						 | 
				
			
			@ -355,9 +374,17 @@ async fn handle_all (
 | 
			
		|||
		}
 | 
			
		||||
	}
 | 
			
		||||
	else if let Some (rest) = prefix_match ("/frontend/debug/", &path) {
 | 
			
		||||
		if rest == "" {
 | 
			
		||||
			let s = handlebars.render ("debug", &())?;
 | 
			
		||||
			Ok (ok_reply (s)?)
 | 
			
		||||
		}
 | 
			
		||||
		else if rest == "endless_source" {
 | 
			
		||||
			Ok (handle_endless_source (1).await?)
 | 
			
		||||
		}
 | 
			
		||||
		else {
 | 
			
		||||
			Ok (error_reply (StatusCode::OK, "Can't route URL")?)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	else if path == "/" {
 | 
			
		||||
		let s = handlebars.render ("root", &())?;
 | 
			
		||||
		Ok (ok_reply (s)?)
 | 
			
		||||
| 
						 | 
				
			
			@ -372,7 +399,7 @@ async fn handle_all (
 | 
			
		|||
		scraper_api::handle (req, state, rest).await
 | 
			
		||||
	}
 | 
			
		||||
	else {
 | 
			
		||||
		Ok (error_reply (StatusCode::OK, "Hi")?)
 | 
			
		||||
		Ok (error_reply (StatusCode::OK, "Can't route URL")?)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -385,8 +412,9 @@ pub fn load_templates (asset_root: &Path)
 | 
			
		|||
	let asset_root = asset_root.join ("handlebars/relay");
 | 
			
		||||
	
 | 
			
		||||
	for (k, v) in &[
 | 
			
		||||
		("server_list", "server_list.hbs"),
 | 
			
		||||
		("debug", "debug.hbs"),
 | 
			
		||||
		("root", "root.hbs"),
 | 
			
		||||
		("server_list", "server_list.hbs"),
 | 
			
		||||
	] {
 | 
			
		||||
		handlebars.register_template_file (k, &asset_root.join (v))?;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -439,8 +467,6 @@ pub async fn run_relay (
 | 
			
		|||
	}
 | 
			
		||||
	
 | 
			
		||||
	let make_svc = make_service_fn (|_conn| {
 | 
			
		||||
		use std::convert::Infallible;
 | 
			
		||||
		
 | 
			
		||||
		let state = state.clone ();
 | 
			
		||||
		let handlebars = handlebars.clone ();
 | 
			
		||||
		
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,11 +34,19 @@ AIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAA" rel="icon" type="image/x-icon" />
 | 
			
		|||
		background-color: #ddd;
 | 
			
		||||
	}
 | 
			
		||||
</style>
 | 
			
		||||
<title>ptth_relay debugging tools</title>
 | 
			
		||||
<title>Debugging tools (relay)</title>
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<h1>ptth_relay debugging tools</h1>
 | 
			
		||||
<h1>Debugging tools (relay)</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
 | 
			
		||||
Lorem ipsum dolor set amet
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
 | 
			
		||||
<a href="endless_source">1 GiB random garbage data source</a>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue