use serde::{Deserialize, Serialize};
#[derive(clap::ValueEnum, Clone, Debug, PartialEq, Eq)]
#[clap(rename_all = "lowercase")]
pub enum ClientMode {
TCP,
UDP,
QUIC,
HTTP1,
H2C,
HTTP2,
HTTP3,
}
#[derive(Debug, Clone, Copy, Default, Serialize, Deserialize, clap::ValueEnum)]
#[serde(rename_all = "kebab-case")]
#[clap(rename_all = "kebab-case")]
pub enum TestType {
Download,
Upload,
#[default]
Bidirectional,
Simultaneous,
FullDuplex,
#[clap(alias = "latency")]
LatencyOnly,
#[clap(alias = "latency-load", alias = "wifi")]
LatencyUnderLoad,
}
use std::fmt;
impl fmt::Display for TestType {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
TestType::Download => write!(f, "download"),
TestType::Upload => write!(f, "upload"),
TestType::Bidirectional => write!(f, "bidirectional"),
TestType::Simultaneous => write!(f, "simultaneous"),
TestType::FullDuplex => write!(f, "full-duplex"),
TestType::LatencyOnly => write!(f, "latency-only"),
TestType::LatencyUnderLoad => write!(f, "latency-under-load"),
}
}
}