tests: fast host suites
The timing rules are in two tests (upgrade_and_discovery_deadlines, stop_deadlines). All other tests use a grace period of 0 or core.stop, poll with deadlines instead of sleeping, and use the persistent cache in CARGO_TARGET_TMPDIR. The 128-cycle singleton test is an ignored stress test that nix flake check runs; the normal run has a 4-cycle sample. Warm, the activation suite takes 12 s (was 47 s), and cargo test --workspace takes 65 s.
This commit is contained in:
@@ -11,8 +11,9 @@ fn deferred(request: &Value, plugin: &str, lines: &mut impl Iterator<Item = io::
|
||||
send(
|
||||
json!({"jsonrpc":"2.0","id":request["id"],"result":std::env::var("SAUSAGE_PID").unwrap()}),
|
||||
);
|
||||
let before = std::time::Instant::now();
|
||||
while !std::path::Path::new(&format!("/state/{plugin}/release-call")).exists() {
|
||||
std::thread::sleep(std::time::Duration::from_millis(1));
|
||||
assert!(before.elapsed() < std::time::Duration::from_secs(30));
|
||||
}
|
||||
send(json!({"jsonrpc":"2.0","id":"deferred","method":"notes.legacy","params":{}}));
|
||||
for line in lines {
|
||||
@@ -57,10 +58,15 @@ fn main() {
|
||||
return;
|
||||
}
|
||||
"rpc.discover" => {
|
||||
if document["x-test-no-answer"] == true {
|
||||
for _ in &mut lines {}
|
||||
return;
|
||||
}
|
||||
if document["x-test-wait"] == true {
|
||||
std::fs::write(format!("/state/{plugin}/discover-started"), "ready").unwrap();
|
||||
let before = std::time::Instant::now();
|
||||
while !std::path::Path::new(&format!("/state/{plugin}/discover-release")).exists() {
|
||||
std::thread::sleep(std::time::Duration::from_millis(1));
|
||||
assert!(before.elapsed() < std::time::Duration::from_secs(30));
|
||||
}
|
||||
}
|
||||
document
|
||||
@@ -105,8 +111,9 @@ fn main() {
|
||||
send(json!({"jsonrpc":"2.0","id":request["id"],"result":result}));
|
||||
if request["method"] == "rpc.discover" && result["x-test-linger"] == true {
|
||||
if result["x-test-stubborn"] == true {
|
||||
let before = std::time::Instant::now();
|
||||
while !std::path::Path::new(&format!("/state/{plugin}/discovery-exit")).exists() {
|
||||
std::thread::sleep(std::time::Duration::from_millis(1));
|
||||
assert!(before.elapsed() < std::time::Duration::from_secs(30));
|
||||
}
|
||||
} else {
|
||||
for _ in lines {}
|
||||
|
||||
Reference in New Issue
Block a user