cyw43: add perf HIL test.
This commit is contained in:
8
tests/perf-server/Cargo.toml
Normal file
8
tests/perf-server/Cargo.toml
Normal 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
11
tests/perf-server/deploy.sh
Executable 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'
|
16
tests/perf-server/perf-server.service
Normal file
16
tests/perf-server/perf-server.service
Normal 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
|
90
tests/perf-server/src/main.rs
Normal file
90
tests/perf-server/src/main.rs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user