in src/server/pingserver/benches/benchmark.rs [22:58]
fn ping_benchmark(c: &mut Criterion) {
let config = PingserverConfig::default();
// launch the server
let server = Pingserver::new(config).expect("failed to launch pingserver");
// wait for server to startup. duration is chosen to be longer than we'd
// expect startup to take in a slow ci environment.
std::thread::sleep(Duration::from_secs(10));
// connect and initialize an empty buffer
let mut stream = TcpStream::connect("127.0.0.1:12321").expect("failed to connect");
let mut buffer = vec![0; 1024 * 1024];
// define a benchmarking group
let mut group = c.benchmark_group("request");
group.throughput(Throughput::Elements(1));
let msg = b"ping\r\n";
let bench_name = "ping";
group.bench_function(bench_name, |b| {
b.iter(|| {
assert!(stream.write_all(msg).is_ok());
if let Ok(bytes) = stream.read(&mut buffer) {
if &buffer[0..bytes] != b"PONG\r\n" {
panic!("invalid response");
}
} else {
panic!("read error");
}
})
});
// shutdown the server
server.shutdown();
}