Skip to content

Draft - Don't Merge to Main: Enhance JMeter SSL support, dependency updates, and HTTP improvements#143

Draft
3dgiordano wants to merge 35 commits into
masterfrom
development
Draft

Draft - Don't Merge to Main: Enhance JMeter SSL support, dependency updates, and HTTP improvements#143
3dgiordano wants to merge 35 commits into
masterfrom
development

Conversation

@3dgiordano

@3dgiordano 3dgiordano commented Jul 20, 2026

Copy link
Copy Markdown
Collaborator

This pull request introduces several important improvements to the project's build process, dependency management, and plugin compatibility. The main highlights are the introduction of multi-version JMeter testing in CI, updates to dependencies for better compatibility and security, and the addition of migration scripts and a CLI environment for headless operation. There are also targeted fixes and refactoring in HTTP/2 fallback and error handling logic.

CI/CD and Compatibility Improvements:

  • The CI build workflow (.github/workflows/ci-build.yaml) now tests against both JMeter 5.5 (minimum supported) and 5.6.3 (latest), ensuring plugin compatibility across versions. Artifacts are named per JMeter version. [1] [2]
  • The JMeter compatibility workflow (.github/workflows/ci-jmeter-compatibility.yaml) now verifies the built plugin against all supported JMeter versions, not just the latest.

Dependency Updates and Conflict Resolution:

  • Updated core dependencies to newer versions in pom.xml: JMeter to 5.5, Jetty to 12.1.11, Brotli4j to 1.23.0, HttpCore to 4.4.15, Commons Lang3 to 3.18.0, AssertJ to 3.27.7, and Guava to 32.0.0-jre. [1] [2] [3] [4] [5]
  • Pinned byte-buddy and byte-buddy-agent to 1.14.18 in test scope to resolve a classpath conflict between Mockito and AssertJ.

Tooling and Scripts:

  • Added jmx-migrate.sh and jmx-migrate.cmd scripts to migrate JMeter HTTP Request samplers to the BlazeMeter HTTP sampler, making migration easier for users on both Unix and Windows. [1] [2]
  • Introduced JMeterCliEnvironment.java to bootstrap a headless JMeter environment for CLI tools, improving support for command-line utilities shipped with the plugin.

HTTP/2 Fallback and Error Handling Refactor:

  • Refactored HTTP2FutureResponseListener to centralize HTTP/1.1 fallback logic in HTTP2JettyClient, improved HPACK failure detection, and clarified protocol error handling to avoid unnecessary fallback attempts. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]

Documentation and Comments:

  • Improved class and method-level documentation, such as in DeflateContentDecoderFactory, to clarify implementation details and usage.

Security

CVE-2026-2332 - Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling') #119 and
CVE-2025-48924 - Apache Commons Lang is vulnerable to Uncontrolled Recursion when processing long inputs #104
CVE-2026-24400 - AssertJ has XML External Entity (XXE) vulnerability when parsing untrusted XML via isXmlEqualTo assertion #105
CVE-2023-2976 - Guava vulnerable to insecure use of temporary directory #52
CVE-2020-8908 - Information Disclosure in Guava #52

3dgiordano and others added 30 commits July 1, 2026 14:21
…support. (#112)

* Relative path support for SSL KeyStore/TrustStore

* Improve SSL Keystore and Truststore support

* Protection against failure when configuring TrustStore or KeyStore

* Alias ​​in the same JMeter thread
…115)

* Gracefully handle JMeter keystore load failures

* Reinitialize SSLManager and client for mTLS client cert test
* Catch HPACK errors and Set Dynamic Response Header Size
Bumps org.apache.commons:commons-lang3 from 3.12.0 to 3.18.0.

---
updated-dependencies:
- dependency-name: org.apache.commons:commons-lang3
  dependency-version: 3.18.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Bump org.assertj:assertj-core from 3.12.2 to 3.27.7

Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.12.2 to 3.27.7.
- [Release notes](https://github.com/assertj/assertj/releases)
- [Commits](assertj/assertj@assertj-core-3.12.2...assertj-build-3.27.7)

---
updated-dependencies:
- dependency-name: org.assertj:assertj-core
  dependency-version: 3.27.7
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: pin byte-buddy to 1.14.18 to resolve conflict between mockito-core 2.28.2 and assertj-core 3.27.7

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: David <dgiordano@perforce.com>
Bumps [guava](https://github.com/google/guava) from 29.0-jre to 32.0.0-jre.
- [Release notes](https://github.com/google/guava/releases)
- [Commits](https://github.com/google/guava/commits)

---
updated-dependencies:
- dependency-name: com.google.guava:guava
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: David <3dgiordano@gmail.com>
* Customize header validation for HPACK.

* Remove reflection and add shims to gain access

* Test CustomHpackDecoder
* Delegate cached-resource sample result to JMeter HTTPHC4Impl

* Fix flaky test
* Support file:// sampler URLs

* Support file://  on embedded resources
…eter HTTP (#139)

* Add headless CLI tool to migrate stock JMeter HTTP samplers to BlazeMeter HTTP

* Cross compatibility 5.5 and 5.6.3
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