Cover traced ticket reattach recovery
ci / test (push) Has been cancelled
ci / fuzz-smoke (push) Has been cancelled
ci / windows-client (push) Has been cancelled
ci / package-release (linux-x86_64, ubuntu-latest) (push) Has been cancelled
ci / package-release (macos-aarch64, macos-14) (push) Has been cancelled
ci / package-release (macos-x86_64, macos-13) (push) Has been cancelled
ci / package-release (windows-x86_64, windows-latest) (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
ci / test (push) Has been cancelled
ci / fuzz-smoke (push) Has been cancelled
ci / windows-client (push) Has been cancelled
ci / package-release (linux-x86_64, ubuntu-latest) (push) Has been cancelled
ci / package-release (macos-aarch64, macos-14) (push) Has been cancelled
ci / package-release (macos-x86_64, macos-13) (push) Has been cancelled
ci / package-release (windows-x86_64, windows-latest) (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
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 {
|
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 server = env!("CARGO_BIN_EXE_dosh-server");
|
||||||
let child = Command::new(server)
|
let mut command = Command::new(server);
|
||||||
|
command
|
||||||
.arg("serve")
|
.arg("serve")
|
||||||
.arg("--config")
|
.arg("--config")
|
||||||
.arg(config)
|
.arg(config)
|
||||||
.env("HOME", dir.path())
|
.env("HOME", dir.path())
|
||||||
.stdout(Stdio::null())
|
.stdout(Stdio::null())
|
||||||
.stderr(Stdio::null())
|
.stderr(Stdio::null());
|
||||||
.spawn()
|
if let Some(trace) = trace {
|
||||||
.unwrap();
|
command.env("DOSH_TRACE", trace);
|
||||||
|
}
|
||||||
|
let child = command.spawn().unwrap();
|
||||||
thread::sleep(Duration::from_millis(500));
|
thread::sleep(Duration::from_millis(500));
|
||||||
child
|
child
|
||||||
}
|
}
|
||||||
|
|
||||||
fn attach_once(dir: &tempfile::TempDir, port: u16, cache: bool) -> std::process::Output {
|
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 client = env!("CARGO_BIN_EXE_dosh-client");
|
||||||
let mut cmd = Command::new(client);
|
let mut cmd = Command::new(client);
|
||||||
cmd.arg("--local-auth")
|
cmd.arg("--local-auth")
|
||||||
@@ -181,6 +201,9 @@ fn attach_once(dir: &tempfile::TempDir, port: u16, cache: bool) -> std::process:
|
|||||||
if !cache {
|
if !cache {
|
||||||
cmd.arg("--no-cache");
|
cmd.arg("--no-cache");
|
||||||
}
|
}
|
||||||
|
if let Some(trace) = trace {
|
||||||
|
cmd.env("DOSH_TRACE", trace);
|
||||||
|
}
|
||||||
cmd.output().unwrap()
|
cmd.output().unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1564,7 +1587,9 @@ fn ticket_attach_after_server_restart_smoke() {
|
|||||||
let dir = tempfile::tempdir().unwrap();
|
let dir = tempfile::tempdir().unwrap();
|
||||||
let port = free_udp_port();
|
let port = free_udp_port();
|
||||||
let config = write_server_config(&dir, 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 first = attach_once(&dir, port, true);
|
||||||
let _ = server.kill();
|
let _ = server.kill();
|
||||||
let _ = server.wait();
|
let _ = server.wait();
|
||||||
@@ -1574,8 +1599,8 @@ fn ticket_attach_after_server_restart_smoke() {
|
|||||||
String::from_utf8_lossy(&first.stderr)
|
String::from_utf8_lossy(&first.stderr)
|
||||||
);
|
);
|
||||||
|
|
||||||
let mut server = start_server(&dir, &config);
|
let mut server = start_server_with_trace(&dir, &config, Some(&server_trace));
|
||||||
let second = attach_once(&dir, port, true);
|
let second = attach_once_with_trace(&dir, port, true, Some(&client_trace));
|
||||||
let _ = server.kill();
|
let _ = server.kill();
|
||||||
let _ = server.wait();
|
let _ = server.wait();
|
||||||
let stderr = String::from_utf8_lossy(&second.stderr);
|
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.contains("udp_ticket_attach_ready"),
|
||||||
"stderr={stderr}"
|
"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]
|
#[test]
|
||||||
|
|||||||
Reference in New Issue
Block a user