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
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:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user