Cover traced ticket reattach recovery
ci / test (push) Waiting to run
ci / fuzz-smoke (push) Waiting to run
ci / windows-client (push) Waiting to run
ci / package-release (linux-x86_64, ubuntu-latest) (push) Waiting to run
ci / package-release (macos-aarch64, macos-14) (push) Waiting to run
ci / package-release (macos-x86_64, macos-13) (push) Waiting to run
ci / package-release (windows-x86_64, windows-latest) (push) Waiting to run
ci / remote-bench (push) Waiting to run

This commit is contained in:
DuProcess
2026-07-12 12:18:09 -04:00
parent 3d5bb126c5
commit 4b9d05a185
+50 -7
View File
@@ -152,21 +152,41 @@ fn write_server_config_with_retransmit_window(
}
fn start_server(dir: &tempfile::TempDir, config: &std::path::Path) -> Child {
start_server_with_trace(dir, config, None)
}
fn start_server_with_trace(
dir: &tempfile::TempDir,
config: &std::path::Path,
trace: Option<&Path>,
) -> Child {
let server = env!("CARGO_BIN_EXE_dosh-server");
let child = Command::new(server)
let mut command = Command::new(server);
command
.arg("serve")
.arg("--config")
.arg(config)
.env("HOME", dir.path())
.stdout(Stdio::null())
.stderr(Stdio::null())
.spawn()
.unwrap();
.stderr(Stdio::null());
if let Some(trace) = trace {
command.env("DOSH_TRACE", trace);
}
let child = command.spawn().unwrap();
thread::sleep(Duration::from_millis(500));
child
}
fn attach_once(dir: &tempfile::TempDir, port: u16, cache: bool) -> std::process::Output {
attach_once_with_trace(dir, port, cache, None)
}
fn attach_once_with_trace(
dir: &tempfile::TempDir,
port: u16,
cache: bool,
trace: Option<&Path>,
) -> std::process::Output {
let client = env!("CARGO_BIN_EXE_dosh-client");
let mut cmd = Command::new(client);
cmd.arg("--local-auth")
@@ -181,6 +201,9 @@ fn attach_once(dir: &tempfile::TempDir, port: u16, cache: bool) -> std::process:
if !cache {
cmd.arg("--no-cache");
}
if let Some(trace) = trace {
cmd.env("DOSH_TRACE", trace);
}
cmd.output().unwrap()
}
@@ -1564,7 +1587,9 @@ fn ticket_attach_after_server_restart_smoke() {
let dir = tempfile::tempdir().unwrap();
let port = free_udp_port();
let config = write_server_config(&dir, port);
let mut server = start_server(&dir, &config);
let server_trace = dir.path().join("server-trace.log");
let client_trace = dir.path().join("client-trace.log");
let mut server = start_server_with_trace(&dir, &config, Some(&server_trace));
let first = attach_once(&dir, port, true);
let _ = server.kill();
let _ = server.wait();
@@ -1574,8 +1599,8 @@ fn ticket_attach_after_server_restart_smoke() {
String::from_utf8_lossy(&first.stderr)
);
let mut server = start_server(&dir, &config);
let second = attach_once(&dir, port, true);
let mut server = start_server_with_trace(&dir, &config, Some(&server_trace));
let second = attach_once_with_trace(&dir, port, true, Some(&client_trace));
let _ = server.kill();
let _ = server.wait();
let stderr = String::from_utf8_lossy(&second.stderr);
@@ -1584,6 +1609,24 @@ fn ticket_attach_after_server_restart_smoke() {
stderr.contains("udp_ticket_attach_ready"),
"stderr={stderr}"
);
let server_trace = fs::read_to_string(&server_trace).unwrap();
let client_trace = fs::read_to_string(&client_trace).unwrap();
assert!(
server_trace.contains("event=server.ticket_attach_start"),
"server trace={server_trace}"
);
assert!(
server_trace.contains("event=server.ticket_attach_ok"),
"server trace={server_trace}"
);
assert!(
client_trace.contains("event=client.ticket_attach_start"),
"client trace={client_trace}"
);
assert!(
client_trace.contains("event=client.ticket_attach_ok"),
"client trace={client_trace}"
);
}
#[test]