use assert_cmd::Command;
use std::time::Instant;
#[test]
fn test_all_flag_performance() {
let start = Instant::now();
let mut cmd = Command::cargo_bin("domain-check").unwrap();
cmd.args(["testdomain12345", "--all", "--batch"])
.timeout(std::time::Duration::from_secs(45));
cmd.assert().success();
let duration = start.elapsed();
assert!(
duration.as_secs() < 45,
"All TLD check took too long: {:?}",
duration
);
}
#[test]
fn test_preset_performance() {
let start = Instant::now();
let mut cmd = Command::cargo_bin("domain-check").unwrap();
cmd.args(["testdomain12345", "--preset", "startup", "--batch"])
.timeout(std::time::Duration::from_secs(15));
cmd.assert().success();
let duration = start.elapsed();
assert!(
duration.as_secs() < 15,
"Preset check took too long: {:?}",
duration
);
}
#[test]
fn test_concurrent_processing_efficiency() {
let start = Instant::now();
let mut cmd = Command::cargo_bin("domain-check").unwrap();
cmd.args([
"test1",
"test2",
"test3",
"--preset",
"enterprise", "--concurrency",
"5",
"--batch",
])
.timeout(std::time::Duration::from_secs(20));
cmd.assert().success();
let duration = start.elapsed();
assert!(
duration.as_secs() < 20,
"Concurrent processing took too long: {:?}",
duration
);
}
#[test]
fn test_moderate_domain_list_performance() {
use std::fs;
use tempfile::NamedTempFile;
let file = NamedTempFile::new().unwrap();
let domains: Vec<String> = (0..5).map(|i| format!("testdomain{}", i)).collect();
fs::write(file.path(), domains.join("\n")).unwrap();
let start = Instant::now();
let mut cmd = Command::cargo_bin("domain-check").unwrap();
cmd.args([
"--file",
file.path().to_str().unwrap(),
"--preset",
"enterprise", "--batch",
])
.timeout(std::time::Duration::from_secs(25));
cmd.assert().success();
let duration = start.elapsed();
assert!(
duration.as_secs() < 25,
"Moderate domain list took too long: {:?}",
duration
);
}
#[test]
fn test_single_domain_default_performance() {
let start = Instant::now();
let mut cmd = Command::cargo_bin("domain-check").unwrap();
cmd.args(["testdomain12345"]) .timeout(std::time::Duration::from_secs(5));
cmd.assert().success();
let duration = start.elapsed();
assert!(
duration.as_secs() < 5,
"Single domain check took too long: {:?}",
duration
);
}