Skip to content

feat(testing): add JMeter performance testing baseline#2580

Merged
crivetimihai merged 4 commits intomainfrom
feat/jmeter-performance-testing
Jan 30, 2026
Merged

feat(testing): add JMeter performance testing baseline#2580
crivetimihai merged 4 commits intomainfrom
feat/jmeter-performance-testing

Conversation

@crivetimihai
Copy link
Copy Markdown
Member

Summary

  • Add comprehensive JMeter test suite for industry-standard performance baseline measurements
  • Implement 10 JMeter test plans covering REST API, MCP JSON-RPC, load, stress, spike, soak, SSE, WebSocket, and Admin UI testing
  • Add 12 Makefile targets for running tests and generating reports
  • Include properties files for production and CI environments with optimized settings

Test Plans

Test Plan Description Duration Target
rest_api_baseline.jmx REST API endpoints baseline 10 min 1,000 RPS
mcp_jsonrpc_baseline.jmx MCP JSON-RPC protocol baseline 15 min 1,000 RPS
mcp_test_servers_baseline.jmx Direct MCP server testing 10 min 2,000 RPS
load_test.jmx Production load simulation 30 min 4,000 RPS
stress_test.jmx Progressive stress to breaking point 30 min 10,000 RPS
spike_test.jmx Traffic spike recovery test 10 min 1K→10K→1K
soak_test.jmx Memory leak detection 24 hrs 2,000 RPS
sse_streaming_baseline.jmx SSE connection stability 10 min 1,000 conn
websocket_baseline.jmx WebSocket performance 10 min 500 conn
admin_ui_baseline.jmx Admin UI user simulation 5 min 50 users

Files Added/Modified

  • tests/jmeter/ - Complete JMeter test suite (10 .jmx files, properties, data, README)
  • Makefile - 12 new JMeter targets
  • docs/docs/testing/performance.md - JMeter documentation section
  • tests/AGENTS.md - JMeter directory and commands reference
  • .gitignore - JMeter results patterns

Performance SLAs

Metric Baseline Load Stress
P50 Latency < 100ms < 150ms < 300ms
P95 Latency < 200ms < 300ms < 500ms
P99 Latency < 300ms < 500ms < 1000ms
Error Rate < 0.1% < 0.5% < 1%

Test plan

  • All JMX files validated as valid XML
  • Makefile targets appear in make help
  • JMeter version 5.6.3 (latest) referenced throughout
  • pytest ignores tests/jmeter/ (no Python files to collect)

Closes #2541

Add comprehensive JMeter test plans for industry-standard performance
baseline measurements and CI/CD integration.

Test Plans (10 .jmx files):
- rest_api_baseline: REST API endpoints (1,000 RPS, 10min)
- mcp_jsonrpc_baseline: MCP JSON-RPC protocol (1,000 RPS, 15min)
- mcp_test_servers_baseline: Direct MCP server testing (2,000 RPS)
- load_test: Production load simulation (4,000 RPS, 30min)
- stress_test: Progressive stress to breaking point (10,000 RPS)
- spike_test: Traffic spike recovery (1K→10K→1K)
- soak_test: 24-hour memory leak detection (2,000 RPS)
- sse_streaming_baseline: SSE connection stability (1,000 conn)
- websocket_baseline: WebSocket performance (500 conn)
- admin_ui_baseline: Admin UI user simulation (50 users)

Infrastructure:
- 12 Makefile targets for running tests and generating reports
- Properties files for production and CI environments
- CSV test data for parameterized testing
- Performance SLAs documentation (P50/P95/P99 latencies)

Closes #2541

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>
- Add jmeter-install target to download JMeter 5.6.3 locally
- Add jmeter-ui target to launch JMeter GUI
- Add jmeter-check to verify JMeter 5.x+ (required for -e -o flags)
- Add jmeter-clean target to clean results directory
- Fix jmeter-report to handle empty results gracefully
- Fix load_test.jmx JEXL3 thread count expressions
- Fix admin_ui_baseline.jmx HTMX endpoint paths
- Add HTTPS/TLS testing documentation and configuration
- Add .jmeter/ to .gitignore for local installation

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>
@crivetimihai crivetimihai force-pushed the feat/jmeter-performance-testing branch from 6a33eda to 5d8255d Compare January 30, 2026 09:18
- Fix JMETER_TOKEN generation: use python3 instead of python
- Add JMETER_JWT_SECRET with default value (my-test-key)
- Add encoding headers and fix import formatting from linter

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>
Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>
@crivetimihai crivetimihai merged commit b7516dd into main Jan 30, 2026
44 of 46 checks passed
@crivetimihai crivetimihai deleted the feat/jmeter-performance-testing branch January 30, 2026 10:10
@crivetimihai crivetimihai added this to the Release 1.0.0-RC1 milestone Jan 31, 2026
hughhennelly pushed a commit to hughhennelly/mcp-context-forge that referenced this pull request Feb 8, 2026
* feat(testing): add JMeter performance testing baseline

Add comprehensive JMeter test plans for industry-standard performance
baseline measurements and CI/CD integration.

Test Plans (10 .jmx files):
- rest_api_baseline: REST API endpoints (1,000 RPS, 10min)
- mcp_jsonrpc_baseline: MCP JSON-RPC protocol (1,000 RPS, 15min)
- mcp_test_servers_baseline: Direct MCP server testing (2,000 RPS)
- load_test: Production load simulation (4,000 RPS, 30min)
- stress_test: Progressive stress to breaking point (10,000 RPS)
- spike_test: Traffic spike recovery (1K→10K→1K)
- soak_test: 24-hour memory leak detection (2,000 RPS)
- sse_streaming_baseline: SSE connection stability (1,000 conn)
- websocket_baseline: WebSocket performance (500 conn)
- admin_ui_baseline: Admin UI user simulation (50 users)

Infrastructure:
- 12 Makefile targets for running tests and generating reports
- Properties files for production and CI environments
- CSV test data for parameterized testing
- Performance SLAs documentation (P50/P95/P99 latencies)

Closes IBM#2541

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* fix(testing): improve JMeter testing setup and fix test issues

- Add jmeter-install target to download JMeter 5.6.3 locally
- Add jmeter-ui target to launch JMeter GUI
- Add jmeter-check to verify JMeter 5.x+ (required for -e -o flags)
- Add jmeter-clean target to clean results directory
- Fix jmeter-report to handle empty results gracefully
- Fix load_test.jmx JEXL3 thread count expressions
- Fix admin_ui_baseline.jmx HTMX endpoint paths
- Add HTTPS/TLS testing documentation and configuration
- Add .jmeter/ to .gitignore for local installation

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* fix(testing): fix JMeter JWT auth and add linter fixes

- Fix JMETER_TOKEN generation: use python3 instead of python
- Add JMETER_JWT_SECRET with default value (my-test-key)
- Add encoding headers and fix import formatting from linter

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* feat(testing): add jmeter-quick target for fast test verification

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

---------

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>
Signed-off-by: hughhennnelly <hughhennelly06@gmail.com>
kcostell06 pushed a commit to kcostell06/mcp-context-forge that referenced this pull request Feb 24, 2026
* feat(testing): add JMeter performance testing baseline

Add comprehensive JMeter test plans for industry-standard performance
baseline measurements and CI/CD integration.

Test Plans (10 .jmx files):
- rest_api_baseline: REST API endpoints (1,000 RPS, 10min)
- mcp_jsonrpc_baseline: MCP JSON-RPC protocol (1,000 RPS, 15min)
- mcp_test_servers_baseline: Direct MCP server testing (2,000 RPS)
- load_test: Production load simulation (4,000 RPS, 30min)
- stress_test: Progressive stress to breaking point (10,000 RPS)
- spike_test: Traffic spike recovery (1K→10K→1K)
- soak_test: 24-hour memory leak detection (2,000 RPS)
- sse_streaming_baseline: SSE connection stability (1,000 conn)
- websocket_baseline: WebSocket performance (500 conn)
- admin_ui_baseline: Admin UI user simulation (50 users)

Infrastructure:
- 12 Makefile targets for running tests and generating reports
- Properties files for production and CI environments
- CSV test data for parameterized testing
- Performance SLAs documentation (P50/P95/P99 latencies)

Closes IBM#2541

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* fix(testing): improve JMeter testing setup and fix test issues

- Add jmeter-install target to download JMeter 5.6.3 locally
- Add jmeter-ui target to launch JMeter GUI
- Add jmeter-check to verify JMeter 5.x+ (required for -e -o flags)
- Add jmeter-clean target to clean results directory
- Fix jmeter-report to handle empty results gracefully
- Fix load_test.jmx JEXL3 thread count expressions
- Fix admin_ui_baseline.jmx HTMX endpoint paths
- Add HTTPS/TLS testing documentation and configuration
- Add .jmeter/ to .gitignore for local installation

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* fix(testing): fix JMeter JWT auth and add linter fixes

- Fix JMETER_TOKEN generation: use python3 instead of python
- Add JMETER_JWT_SECRET with default value (my-test-key)
- Add encoding headers and fix import formatting from linter

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

* feat(testing): add jmeter-quick target for fast test verification

Signed-off-by: Mihai Criveti <crivetimihai@gmail.com>

---------

Signed-off-by: Mihai Criveti <crivetimihai@gmail.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.

[TESTING][PERFORMANCE]: JMeter Performance Load Testing Baseline

1 participant