pub(crate) const DOCKER_PROGRAM: &str = "docker";
pub(crate) const CARGO_PROGRAM: &str = "cargo";
pub(crate) const DOCKERFILE_PATH: &str = "docker/Dockerfile.perf";
pub(crate) const LIBRARY_MANIFEST: &str = "Cargo.toml";
pub(crate) const HARNESS_DIR: &str = "performance";
pub(crate) const RAW_FILE_NAME: &str = "raw.jsonl";
pub(crate) const READY_MARKER: &str = "ready on";
pub(crate) const INSTRUMENT_TAG: &str = "1.0";
pub(crate) const SERVER_IMAGE: &str = "server";
pub(crate) const LOADGEN_IMAGE: &str = "loadgen";
pub(crate) const CONTROL_IMAGE: &str = "control";
pub(crate) const SERVER_RUNTIME: &str = "server-runtime";
pub(crate) const LOADGEN_RUNTIME: &str = "loadgen-runtime";
pub(crate) const CONTROL_RUNTIME: &str = "control-runtime";
pub(crate) const CONTROL_VARIANT: &str = "control";
pub(crate) const SHORT_MODE: &str = "short";
pub(crate) const H1_PROTOCOL: &str = "h1";
pub(crate) const H1_TLS_PROTOCOL: &str = "h1-tls";
pub(crate) const H2C_PROTOCOL: &str = "h2c";
pub(crate) const H2_TLS_PROTOCOL: &str = "h2-tls";
pub(crate) const H3_PROTOCOL: &str = "h3";
pub(crate) const SERVER_H1_PROTOCOL: &str = "http1";
pub(crate) const SERVER_H1_TLS_PROTOCOL: &str = "http1-tls";
pub(crate) const SERVER_H2_PROTOCOL: &str = "http2";
pub(crate) const SERVER_H2_TLS_PROTOCOL: &str = "http2-tls";
pub(crate) const SERVER_H3_PROTOCOL: &str = "http3";
pub(crate) const INSTRUMENT_COMMAND: &str = "instrument";
pub(crate) const BUILD_COMMAND: &str = "build";
pub(crate) const BENCH_COMMAND: &str = "bench";
pub(crate) const REPORT_COMMAND: &str = "report";
pub(crate) const CERTIFICATES_COMMAND: &str = "certificates";
pub(crate) const USAGE: &str =
"usage: hyperlane-performance <instrument|build|bench|report|certificates> ...";
pub(crate) const DOCKER_BUILD: &str = "build";
pub(crate) const DOCKER_RUN: &str = "run";
pub(crate) const DOCKER_REMOVE: &str = "rm";
pub(crate) const DOCKER_LOGS: &str = "logs";
pub(crate) const DOCKER_INSPECT: &str = "inspect";
pub(crate) const DOCKER_NETWORK: &str = "network";
pub(crate) const DOCKER_CREATE: &str = "create";
pub(crate) const DOCKER_IMAGE: &str = "image";
pub(crate) const DOCKER_PS: &str = "ps";
pub(crate) const TARGET_FLAG: &str = "--target";
pub(crate) const NAME_FLAG: &str = "--name";
pub(crate) const NETWORK_FLAG: &str = "--network";
pub(crate) const CPUS_FLAG: &str = "--cpus";
pub(crate) const MEMORY_FLAG: &str = "--memory";
pub(crate) const REMOVE_AFTER_RUN_FLAG: &str = "--rm";
pub(crate) const FORMAT_FLAG: &str = "--format";
pub(crate) const IMAGE_ID_FORMAT: &str = "{{.Id}}";
pub(crate) const FILTER_FLAG: &str = "--filter";
pub(crate) const PERF_NAME_FILTER: &str = "name=perf-";
pub(crate) const PS_ALL_QUIET_FLAG: &str = "-aq";
pub(crate) const CARGO_UPDATE: &str = "update";
pub(crate) const WORKSPACE_FLAG: &str = "--workspace";
pub(crate) const OFFLINE_FLAG: &str = "--offline";
pub(crate) const MANIFEST_PATH_FLAG: &str = "--manifest-path";
pub(crate) const SERVER_ADDRESS_ENV: &str = "BENCH_ADDR=0.0.0.0:8080";
pub(crate) const SERVER_PROTOCOL_ENV: &str = "BENCH_PROTOCOL=";
pub(crate) const SERVER_CERT_ENV: &str = "BENCH_TLS_CERT=/certs/leaf.pem";
pub(crate) const SERVER_KEY_ENV: &str = "BENCH_TLS_KEY=/certs/leaf.key";
pub(crate) const CONTAINER_CA_PATH: &str = "/certs/ca.pem";
pub(crate) const ADDR_FLAG: &str = "--addr";
pub(crate) const CONNECTIONS_FLAG: &str = "--connections";
pub(crate) const DURATION_FLAG: &str = "--duration";
pub(crate) const WARMUP_FLAG: &str = "--warmup";
pub(crate) const PROTOCOL_FLAG: &str = "--protocol";
pub(crate) const MODE_FLAG: &str = "--mode";
pub(crate) const CA_FLAG: &str = "--ca";
pub(crate) const RATE_FLAG: &str = "--rate";
pub(crate) const SERVER_CONTAINER_PREFIX: &str = "perf-server-";
pub(crate) const LOADGEN_CONTAINER_PREFIX: &str = "perf-loadgen-";
pub(crate) const FIRST_OUTPUT_PREFIX: &str = "first-";
pub(crate) const SECOND_OUTPUT_PREFIX: &str = "second-";
pub(crate) const READY_ATTEMPTS: u32 = 300;
pub(crate) const READY_DELAY_MS: u64 = 200;
pub(crate) const CONTAINER_PORT: u32 = 8080;