46 Commits

Author SHA1 Message Date
589e5217f5 feat(runner,common): add protocol-aware benchmark execution 2026-03-09 18:39:35 +02:00
7a3a5bc3ae feat(runner): add protocol mode to CLI and benchmark config 2026-03-09 16:52:58 +02:00
2cfe85ad82 test(server): add http1 request and path parsing coverage 2026-02-27 13:44:24 +02:00
4b2324d131 feat(server): implement http1 /bytes/{n} endpoint over TLS 2026-02-26 17:20:35 +02:00
6198e3ab2e feat(common,server): add ProtocolMode and route server through protocol dispatch 2026-02-26 14:50:49 +02:00
0ea39e7663 refactor(common): add prelude module 2026-02-26 14:20:47 +02:00
8f0d2a6efc refactor(server): separate into smaller modules 2026-02-25 18:39:33 +02:00
99f2e0bb72 refactor(runner): separate into smaller modules 2026-02-25 17:23:20 +02:00
31f5fc5b44 refactor(runner): bound memory usage with FuturesUnordered worker pool 2026-02-25 17:13:36 +02:00
b519c4f059 refactor(runner): remove unused variables 2026-02-25 16:52:14 +02:00
082add6be0 refactor(runner): remove test connection 2026-02-25 16:40:37 +02:00
c0886a454d feat(runner): separate TLS and TCP handshake latency 2026-02-25 16:37:36 +02:00
a5e166e0b0 feat(runner): disable certificate caching 2026-02-25 16:26:28 +02:00
ea2a07d5aa feat(runner): use per-benchmark TLS mode instead of global mode 2026-02-25 16:18:20 +02:00
07cae6df55 refactor(runner): replace miette! with into_diagnostic and contex 2026-02-25 13:16:33 +02:00
b16b591580 test: add payload protocol tests and refactor write_results 2026-02-24 14:00:32 +02:00
48c8911962 test(server): add unit tests for args parsing and TLS config 2026-02-13 22:57:34 +02:00
439eaa46c0 test: add unit tests for config, errors, and records 2026-02-13 22:57:12 +02:00
81a7935540 ci: add CI and release workflows
ci: fix release workflow with absolute paths

ci: simplify release workflow

ci: fix release workflow with GITHUB_TOKEN
2026-02-12 16:26:43 +02:00
8cbe65fc7d docs: update runbook with cargo run commands and matrix config 2026-02-12 15:09:06 +02:00
f836bdf6c4 refactor(runner): reorganize config module 2026-02-11 17:53:42 +02:00
cfdcd983e0 feat(runner): add detailed TOML config validation with miette errors
- Use miette's NamedSource and SourceSpan for precise error locations
    - Implement field-level validation (mode, payload, iters, concurrency)
    - Show exact line and field causing validation errors in CLI output
2026-02-11 17:47:09 +02:00
18e01204d9 chore: add benchmark entry to justfile 2026-02-11 17:45:18 +02:00
818cfd5598 refactor(server,common): introduce custom error types with thiserror and miette 2026-02-11 16:29:59 +02:00
cda6024062 refactor(runner): use custom error types with thiserror and miette 2026-02-11 15:53:38 +02:00
cf8c1d9f84 feat(runner): add TOML matrix benchmark config support 2026-02-11 15:29:28 +02:00
1c6625a04c feat(runner): add TOML config file support for matrix benchmarks
- Add toml and serde dependencies
- Create config module with Config and BenchmarkConfig structs
- Add --config CLI option for matrix benchmarks
- Refactor `run_benchmark()` to accept BenchmarkConfig
2026-02-06 17:43:46 +02:00
e2dda3ee83 feat(runner): log negotiated cipher once before benchmark 2026-02-05 15:03:22 +02:00
a5f0253cc4 refactor(server): use base64 crate instead of custom implementation 2026-02-05 13:32:20 +02:00
d235a5d2c7 feat(server): log negotiated cipher suite after handshake 2026-02-05 13:09:56 +02:00
46bc7960c1 feat(server): add structured logging with tracing 2026-02-04 15:53:20 +02:00
2972163055 feat(runner): add structured logging with tracing
- Add tracing, tracing-subscriber, uuid dependencies
- Replace eprintln! with info! for structured logs
- Add run_id, rust_version, os, arch to benchmark start log
2026-02-04 11:53:40 +02:00
0da83f231b feat(runner): implement concurrent benchmark execution
- Add tokio::Semaphore for bounded parallelism
- Split benchmark into sequential warmup and parallel measured phases
- Refactor to spawn_benchmark_tasks() and spawn_single_iteration()
- Add write_results() to aggregate and output records
- Use u32 for CLI arguments (iters, warmup, concurrency, payload_bytes)
2026-02-04 10:27:37 +02:00
2cd2edc61d docs: mark completed tasks 2026-02-03 14:03:21 +02:00
27e1cbe98b feat: add hybrid PQ key exchange support (X25519MLKEM768)
- Update server and runner to use X25519MLKEM768 kx group from aws_lc_rs
- Both --mode x25519 and --mode x25519mlkem768 now work
- Integration tested end-to-end with both modes
2026-02-03 14:00:53 +02:00
b03cc2a386 feat(runner): add TLS 1.3 client with X25519
- Configure rustls client with aws_lc_rs, X25519-only key exchange
- Skip certificate verification for benchmarking (NoVerifier)
- Measure TLS handshake latency (TCP + TLS combined)
- TLS 1.3 protocol enforced
2026-01-28 18:30:40 +02:00
e7c97070ca chore: add justfile 2026-01-27 13:24:45 +02:00
77b611b0fa ci: add cargo-husky pre-commit hooks 2026-01-26 16:48:51 +02:00
6154a99fa6 ci: add actions workflow 2026-01-26 16:28:51 +02:00
e07d16644e chore: add LICENSE
Create LICENSE-APACHE

Create LICENSE-MIT
2026-01-26 16:23:31 +02:00
d128816956 refactor: rename crates 2026-01-26 16:17:04 +02:00
5accec5da4 feat(bench-server): add TLS 1.3 with X25519 key exchange
- Generate self-signed certificates on startup using rcgen
- Configure rustls with aws_lc_rs crypto provider
- Filter key exchange groups to X25519-only for mode=x25519
- Print CA certificate for client trust configuration
- TLS 1.3 protocol enforced
2026-01-26 16:09:27 +02:00
76109356c0 feat: implement raw TCP benchmark protocol
- protocol: 8-byte LE u64 request -> N-byte deterministic response
- bench-server: TCP server with per-connection handlers
- bench-runner: benchmark loop with warmup, NDJSON output
- Integration tested: server and client communicate correctly
2026-01-25 16:37:05 +02:00
09fb7821bb feat(bench-common): add certificate generation utilities
- CaCertificate: self-signed CA that can sign server certificates
- ServerCertificate: DER-encoded cert chain and private key
- generate_test_certs(): convenience helper for local testing
- Uses rcgen 0.14 for X.509 certificate generation
2026-01-25 16:29:33 +02:00
4cec80f30e feat: scaffold workspace with bench-common, bench-server, bench-runner
- bench-common: KeyExchangeMode enum, BenchRecord NDJSON struct
- bench-server: CLI stub with --mode and --listen
- bench-runner: CLI stub with --mode, --server, --payload-bytes, --iters, --warmup, --concurrency, --out
2026-01-25 16:23:19 +02:00
bb0a195e73 Initial commit 2026-01-25 15:57:47 +02:00