Skip to content

Improve load test harness, automate execution and results#51

Open
robotdan wants to merge 17 commits intoFusionAuth:mainfrom
robotdan:degroff/load_tests
Open

Improve load test harness, automate execution and results#51
robotdan wants to merge 17 commits intoFusionAuth:mainfrom
robotdan:degroff/load_tests

Conversation

@robotdan
Copy link
Contributor

@robotdan robotdan commented Feb 19, 2026

Summary

  • Complete the load test harness with support for 5 Java HTTP server implementations (java-http, JDK HttpServer, Jetty, Netty, Tomcat)
  • Support both wrk and fusionauth-load-test benchmark runners
  • Add 7 load test scenarios (baseline, hello, high-concurrency, large-file, mixed, post-load, json-report)
  • Add scripts to run benchmarks and auto-update README with results
  • Add HTTP/1.1 compliance socket tests (RFC 9110/9112 assertions)
  • Configure ulimit for high-concurrency test support

Test plan

  • Run sb test to verify HTTP/1.1 socket tests pass
  • Run benchmarks from load-tests/ directory with ./run-benchmarks.sh
  • Verify README performance tables render correctly

🤖 Generated with Claude Code

Daniel DeGroff and others added 17 commits February 13, 2026 11:26
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Automated benchmark suite comparing java-http against JDK HttpServer,
Jetty, Netty, and Apache Tomcat. Includes wrk (C-based) and
fusionauth-load-tests (Java-based) as benchmark tools with structured
JSON output, README auto-updater, and GitHub Actions workflow.

Also adds HTTP/1.1 compliance smoke tests for RFC 9110/9112 coverage.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… tests

- update-readme.sh now prefers hello scenario, adds high-concurrency
  stress table, includes machine specs and reproducibility CLI
- Drop invocationCount=100 from 12 new compliance tests (default 1 is
  sufficient for protocol validation that closes the connection)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- update-readme.sh now adds a note about JDK HttpServer not being
  production-ready when high-concurrency results are present
- Disable compression in Tomcat server.xml for fair benchmarking
  (other servers don't enable compression)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Position java-http as an independent open-source project.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Shows a live-updating elapsed time counter during each benchmark run
so you can see how long the current test has been running.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Banner shows start time, final line shows total elapsed minutes/seconds.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Each test result line now ends with the wall-clock time it took to run.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Ensures wrk has sufficient file descriptors for high-concurrency
benchmarks. macOS defaults can be as low as 256, which causes
connection errors with -c1000.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
java-http always first, remaining servers sorted alphabetically.
Prevents row order from shifting between runs when RPS changes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix incorrect string repeat formula that produced wrong-sized blobs for
the /file endpoint across all five server implementations. Fix misleading
InputStream comments, correct cross-reference pointers, and restore
invocationCount on case_insensitive_header_matching test.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The run-benchmarks.sh script requires CLI args, so run it directly
from the load-tests directory instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ntary

Capture machine model (e.g. MacBook Air) and OS version (e.g. macOS 15.7.3)
in benchmark output and README footer. Add performance commentary to the
README and update-readme.sh template explaining project positioning.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… URL

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments