cyw43: add perf HIL test.

This commit is contained in:
Dario Nieuwenhuis
2023-06-06 02:28:00 +02:00
parent 79b982c941
commit 6701606e4c
7 changed files with 398 additions and 2 deletions

View File

@ -0,0 +1,8 @@
[package]
name = "perf-server"
version = "0.1.0"
edition = "2021"
[dependencies]
log = "0.4.17"
pretty_env_logger = "0.4.0"

11
tests/perf-server/deploy.sh Executable file
View File

@ -0,0 +1,11 @@
#!/bin/bash
set -euxo pipefail
HOST=root@192.168.1.3
cargo build --release
ssh $HOST -- systemctl stop perf-server
scp target/release/perf-server $HOST:/root
scp perf-server.service $HOST:/etc/systemd/system/
ssh $HOST -- 'systemctl daemon-reload; systemctl restart perf-server'

View File

@ -0,0 +1,16 @@
[Unit]
Description=perf-server
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=root
ExecStart=/root/perf-server
Environment=RUST_BACKTRACE=1
Environment=RUST_LOG=info
[Install]
WantedBy=multi-user.target

View File

@ -0,0 +1,90 @@
use std::io::{Read, Write};
use std::net::{TcpListener, TcpStream};
use std::thread::spawn;
use std::time::Duration;
use log::info;
fn main() {
pretty_env_logger::init();
spawn(|| rx_listen());
spawn(|| rxtx_listen());
tx_listen();
}
fn tx_listen() {
info!("tx: listening on 0.0.0.0:4321");
let listener = TcpListener::bind("0.0.0.0:4321").unwrap();
loop {
let (socket, addr) = listener.accept().unwrap();
info!("tx: received connection from: {}", addr);
spawn(|| tx_conn(socket));
}
}
fn tx_conn(mut socket: TcpStream) {
socket.set_read_timeout(Some(Duration::from_secs(30))).unwrap();
socket.set_write_timeout(Some(Duration::from_secs(30))).unwrap();
let buf = [0; 1024];
loop {
if let Err(e) = socket.write_all(&buf) {
info!("tx: failed to write to socket; err = {:?}", e);
return;
}
}
}
fn rx_listen() {
info!("rx: listening on 0.0.0.0:4322");
let listener = TcpListener::bind("0.0.0.0:4322").unwrap();
loop {
let (socket, addr) = listener.accept().unwrap();
info!("rx: received connection from: {}", addr);
spawn(|| rx_conn(socket));
}
}
fn rx_conn(mut socket: TcpStream) {
socket.set_read_timeout(Some(Duration::from_secs(30))).unwrap();
socket.set_write_timeout(Some(Duration::from_secs(30))).unwrap();
let mut buf = [0; 1024];
loop {
if let Err(e) = socket.read_exact(&mut buf) {
info!("rx: failed to read from socket; err = {:?}", e);
return;
}
}
}
fn rxtx_listen() {
info!("rxtx: listening on 0.0.0.0:4323");
let listener = TcpListener::bind("0.0.0.0:4323").unwrap();
loop {
let (socket, addr) = listener.accept().unwrap();
info!("rxtx: received connection from: {}", addr);
spawn(|| rxtx_conn(socket));
}
}
fn rxtx_conn(mut socket: TcpStream) {
socket.set_read_timeout(Some(Duration::from_secs(30))).unwrap();
socket.set_write_timeout(Some(Duration::from_secs(30))).unwrap();
let mut buf = [0; 1024];
loop {
match socket.read(&mut buf) {
Ok(n) => {
if let Err(e) = socket.write_all(&buf[..n]) {
info!("rxtx: failed to write to socket; err = {:?}", e);
return;
}
}
Err(e) => {
info!("rxtx: failed to read from socket; err = {:?}", e);
return;
}
}
}
}