Gate client timing logs behind verbosity
This commit is contained in:
+31
-24
@@ -1,7 +1,7 @@
|
||||
use anyhow::{Context, Result, anyhow};
|
||||
use base64::Engine;
|
||||
use base64::engine::general_purpose::URL_SAFE_NO_PAD;
|
||||
use clap::Parser;
|
||||
use clap::{ArgAction, Parser};
|
||||
use crossterm::terminal::{disable_raw_mode, enable_raw_mode, size};
|
||||
use dosh::auth::{
|
||||
BootstrapResponse, build_bootstrap, decode_bootstrap, load_or_create_server_secret,
|
||||
@@ -53,6 +53,8 @@ struct Args {
|
||||
dosh_port: Option<u16>,
|
||||
#[arg(long)]
|
||||
dosh_host: Option<String>,
|
||||
#[arg(short, long, action = ArgAction::Count)]
|
||||
verbose: u8,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
@@ -116,16 +118,10 @@ async fn main() -> Result<()> {
|
||||
if let Some(mut cached) = credential.clone() {
|
||||
cached.udp_host = target_udp_host.clone();
|
||||
cached.udp_port = dosh_port;
|
||||
eprintln!(
|
||||
"dosh timing credential_lookup_end={}ms",
|
||||
started.elapsed().as_millis()
|
||||
);
|
||||
log_timing(args.verbose, "credential_lookup_end", started.elapsed());
|
||||
match try_resume(&socket, &cached, cols, rows).await {
|
||||
Ok((frame, cred)) => {
|
||||
eprintln!(
|
||||
"dosh timing udp_resume_ready={}ms",
|
||||
started.elapsed().as_millis()
|
||||
);
|
||||
log_timing(args.verbose, "udp_resume_ready", started.elapsed());
|
||||
if !args.no_cache {
|
||||
save_cache(&cache_path, &cred)?;
|
||||
}
|
||||
@@ -137,14 +133,15 @@ async fn main() -> Result<()> {
|
||||
return run_terminal(socket, cred, Some(frame)).await;
|
||||
}
|
||||
Err(err) => {
|
||||
eprintln!("dosh resume failed, trying ticket attach before SSH: {err:#}");
|
||||
log_debug(
|
||||
args.verbose,
|
||||
2,
|
||||
&format!("dosh resume failed, trying ticket attach before SSH: {err:#}"),
|
||||
);
|
||||
if config.cache_attach_tickets && !args.no_cache {
|
||||
match try_ticket_attach(&socket, &cached, cols, rows).await {
|
||||
Ok((frame, cred)) => {
|
||||
eprintln!(
|
||||
"dosh timing udp_ticket_attach_ready={}ms",
|
||||
started.elapsed().as_millis()
|
||||
);
|
||||
log_timing(args.verbose, "udp_ticket_attach_ready", started.elapsed());
|
||||
save_cache(&cache_path, &cred)?;
|
||||
if args.attach_only {
|
||||
render_frame(&frame)?;
|
||||
@@ -154,8 +151,12 @@ async fn main() -> Result<()> {
|
||||
return run_terminal(socket, cred, Some(frame)).await;
|
||||
}
|
||||
Err(err) => {
|
||||
eprintln!(
|
||||
"dosh ticket attach failed, falling back to SSH bootstrap: {err:#}"
|
||||
log_debug(
|
||||
args.verbose,
|
||||
2,
|
||||
&format!(
|
||||
"dosh ticket attach failed, falling back to SSH bootstrap: {err:#}"
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -184,20 +185,14 @@ async fn main() -> Result<()> {
|
||||
bootstrap.udp_port = dosh_port;
|
||||
bootstrap
|
||||
};
|
||||
eprintln!(
|
||||
"dosh timing ssh_bootstrap={}ms",
|
||||
bootstrap_start.elapsed().as_millis()
|
||||
);
|
||||
log_timing(args.verbose, "ssh_bootstrap", bootstrap_start.elapsed());
|
||||
|
||||
let (ok, mut cred) = bootstrap_attach(&socket, &server, &bootstrap, cols, rows).await?;
|
||||
cred.last_rendered_seq = ok.initial_seq;
|
||||
if !args.no_cache {
|
||||
save_cache(&cache_path, &cred)?;
|
||||
}
|
||||
eprintln!(
|
||||
"dosh timing terminal_ready={}ms",
|
||||
started.elapsed().as_millis()
|
||||
);
|
||||
log_timing(args.verbose, "terminal_ready", started.elapsed());
|
||||
let first = Frame {
|
||||
session: ok.session,
|
||||
output_seq: ok.initial_seq,
|
||||
@@ -238,6 +233,18 @@ fn local_bootstrap(
|
||||
)
|
||||
}
|
||||
|
||||
fn log_timing(verbose: u8, name: &str, elapsed: Duration) {
|
||||
if verbose >= 1 {
|
||||
eprintln!("dosh timing {name}={}ms", elapsed.as_millis());
|
||||
}
|
||||
}
|
||||
|
||||
fn log_debug(verbose: u8, level: u8, message: &str) {
|
||||
if verbose >= level {
|
||||
eprintln!("{message}");
|
||||
}
|
||||
}
|
||||
|
||||
fn select_session(requested: Option<&str>, force_new: bool, configured_default: &str) -> String {
|
||||
if let Some(session) = requested {
|
||||
return session.to_string();
|
||||
|
||||
Reference in New Issue
Block a user