All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
91 lines
2.6 KiB
Rust
91 lines
2.6 KiB
Rust
use std::process;
|
|
|
|
use crate::text;
|
|
|
|
// ping a host
|
|
pub fn latency_test(address: &str, count: &u16, interval: &u16) {
|
|
println!("Pinging host {}, {} times.", address, count);
|
|
|
|
// if we're on Windows we need to use the -n flag for ping counts
|
|
let mut count_arg = "-c";
|
|
if cfg!(windows) {
|
|
count_arg = "-n";
|
|
}
|
|
|
|
// convert the ping interval to seconds
|
|
let interval_secs = *interval as f64 / 1000 as f64;
|
|
|
|
// run the ping command
|
|
let output = process::Command::new("ping")
|
|
.arg(address)
|
|
.arg(count_arg)
|
|
.arg(format!("{}", count))
|
|
.arg("-i")
|
|
.arg(format!("{}", interval_secs))
|
|
.output()
|
|
.expect("Failed to execute command");
|
|
|
|
// check that the command succeeded
|
|
assert!(output.status.success());
|
|
|
|
// grab the ping results from stdout
|
|
let results_raw = &String::from_utf8_lossy(&output.stdout);
|
|
let results = text::format::trim_output(results_raw, 4);
|
|
for line in results {
|
|
println!("{}", line);
|
|
}
|
|
}
|
|
|
|
// network jitter test
|
|
pub fn jitter_test(address: &str, count: &u16, interval: &u16) {
|
|
println!("Pinging host {}, {} times to determine network jitter.", address, count);
|
|
|
|
// if we're on Windows we need to use the -n flag for ping counts
|
|
let mut count_arg = "-c";
|
|
if cfg!(windows) {
|
|
count_arg = "-n";
|
|
}
|
|
|
|
// convert the ping interval to seconds
|
|
let interval_secs = *interval as f64 / 1000 as f64;
|
|
|
|
// run the ping command
|
|
let output = process::Command::new("ping")
|
|
.arg(address)
|
|
.arg(count_arg)
|
|
.arg(format!("{}", count))
|
|
.arg("-i")
|
|
.arg(format!("{}", interval_secs))
|
|
.output()
|
|
.expect("Failed to execute command");
|
|
|
|
// check that the command succeeded
|
|
assert!(output.status.success());
|
|
|
|
// grab the ping results from stdout
|
|
let results_raw = &String::from_utf8_lossy(&output.stdout);
|
|
let results = text::format::trim_output(results_raw, 4);
|
|
for line in results {
|
|
println!("{}", line);
|
|
}
|
|
}
|
|
|
|
// timed file copy test to guage bandwidth speeds
|
|
pub fn bandwidth_test(host: &str) {
|
|
println!("Testing network bandwidth using iperf; connecting to {}.", host);
|
|
println!("{}", host);
|
|
|
|
let output = process::Command::new("iperf3")
|
|
.arg("-c")
|
|
.arg(host)
|
|
.output()
|
|
.expect("Failed to execute command");
|
|
|
|
// check that the command succeeded
|
|
assert!(output.status.success());
|
|
|
|
// grab and print the command's results
|
|
let results_raw = &String::from_utf8_lossy(&output.stdout);
|
|
println!("{}", results_raw);
|
|
}
|