FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

test: validate JMX Exporter compatibility by zeitlinger · Pull Request #2167 · prometheus/client_java · GitHub

test: validate JMX Exporter compatibility - #2167

Merged
zeitlinger merged 7 commits into
prometheus:mainfrom
zeitlinger:validation/jmx-exporter-compatibility
Jun 2, 2026
Merged

test: validate JMX Exporter compatibility#2167
zeitlinger merged 7 commits into
prometheus:mainfrom
zeitlinger:validation/jmx-exporter-compatibility

Conversation

zeitlinger commented Jun 1, 2026
edited
Loading

Copy link
Copy Markdown
Member

Draft validation PR for the unmodified JMX Exporter compatibility story.

This intentionally does not depend on #2114. Vanilla JMX Exporter does not
use the typed descriptor API, so this PR validates the patch-compatible path
independently of typed descriptors.

This validates upstream prometheus/jmx_exporter@main against current
client_java by installing local io.prometheus artifacts and running the JMX
Exporter collector/common/javaagent/standalone Maven tests against them.

Local validation:

  • mise run jmx-exporter:test
  • mise run lint:fix
  • mise run lint
  • actionlint .github/workflows/jmx-exporter-compatibility.yml

zeitlinger force-pushed the validation/jmx-exporter-compatibility branch 2 times, most recently from 359cb66 to dc50259 Compare June 1, 2026 14:36
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
zeitlinger force-pushed the validation/jmx-exporter-compatibility branch from dc50259 to 7a0431f Compare June 1, 2026 14:41
zeitlinger marked this pull request as ready for review June 1, 2026 14:46

dhoard commented Jun 1, 2026

Copy link
Copy Markdown
Collaborator

@zeitlinger are you wanting to run JMX Exporter smoke test configuration or a quick test configuration?

Smoke test configuration (all integration tests, 6 Java distributions, 2 Prometheus distributions)

Quick test configuration (all integration tests, but 1 Java distribution and 1 Prometheus distribution)

dhoard left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

All in all looks good based on my understand of mise. We need to determine which level we want to run tests. smoke test configuration or quick test configuration

jaydeluca left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

one comment but it is non-blocking, we can do a followup

Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
The pinned JMX Exporter and Micrometer releases do not build on the
primary JDK (Java 25): JMX Exporter's spotless google-java-format and
Micrometer's bundled Kotlin compiler both predate JDK 25 support.

Add per-environment mise configs (mirroring .mise/envs/native) that
override the java tool to Temurin 21 LTS and run the existing
compatibility drivers, and point the workflows at those envs.

Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
The compatibility builds run under an LTS JDK (Java 21), but our test
sources target release 25 (test.java.version). -DskipTests still compiles
test sources, so installing the local artifacts failed with 'release
version 25 not supported'. Use -Dmaven.test.skip=true: downstream
compatibility tests need only our main artifacts.

Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
zeitlinger merged commit 62ce9dc into prometheus:main Jun 2, 2026
13 of 14 checks passed
zeitlinger deleted the validation/jmx-exporter-compatibility branch June 2, 2026 10:41

Copy link
Copy Markdown
Member Author

All in all looks good based on my understand of mise. We need to determine which level we want to run tests. smoke test configuration or quick test configuration

sorry I missed the comment before merging - what tests should we run in your opinion?

Copy link
Copy Markdown
Member Author

All in all looks good based on my understand of mise. We need to determine which level we want to run tests. smoke test configuration or quick test configuration

sorry I missed the comment before merging - what tests should we run in your opinion?

I think I'll start with quick

dhoard commented Jun 2, 2026

Copy link
Copy Markdown
Collaborator

All in all looks good based on my understand of mise. We need to determine which level we want to run tests. smoke test configuration or quick test configuration

sorry I missed the comment before merging - what tests should we run in your opinion?

I think I'll start with quick

quick configuration. This should be enough to sanity-check things.

Copy link
Copy Markdown
Member Author

quick configuration. This should be enough to sanity-check things.

#2178

zeitlinger added a commit that referenced this pull request Jun 3, 2026
Follow-up to #2167 ([review
comment](#2167 (comment))):
switches the JMX Exporter compatibility job to the **quick test**
configuration and fixes the gaps that surfaced.

**Changes**

- **Quick test config** (`jmx_exporter_compat.py`): build the full
reactor (`clean install`) so `integration_test_suite` actually runs,
pinned to a single Java + Prometheus distribution. The pins are read
from the checked-out jmx_exporter's `run-quick-test.sh` so they stay
aligned with upstream; `-Dparamixel.parallelism` set to CPU count.
- **Test `main`, not the release**: the integration suite only compiles
against current `client_java` when jmx_exporter imports the stable
`expositionformats.generated.Metrics` class (#1873). Release 1.5.0
imports the version-stamped `com_google_protobuf_4_32_0` package
directly, which breaks on protobuf bumps (now 4.35.0); `main` uses the
stable class. Tracked by #2179 — switch the ref back to a pinned release
once one ships the fix.
- **Renovate guard** (`renovate.json5`): block major JDK bumps for the
jmx-exporter and micrometer compat env files (they pin an LTS JDK the
upstream release supports). This supersedes #2173-style bumps.

**Local validation**: `mise run lint:fix`; image-pin regex verified
against `prometheus/jmx_exporter@main`. Full integration run is
validated by CI (needs Docker + JDK 21).

---------

Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
jaydeluca pushed a commit that referenced this pull request Jun 4, 2026
Draft validation PR for the unmodified JMX Exporter compatibility story.

This intentionally does **not** depend on #2114. Vanilla JMX Exporter
does not
use the typed descriptor API, so this PR validates the patch-compatible
path
independently of typed descriptors.

This validates upstream `prometheus/jmx_exporter@main` against current
`client_java` by installing local `io.prometheus` artifacts and running
the JMX
Exporter collector/common/javaagent/standalone Maven tests against them.

Local validation:

- `mise run jmx-exporter:test`
- `mise run lint:fix`
- `mise run lint`
- `actionlint .github/workflows/jmx-exporter-compatibility.yml`

---------

Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
Co-authored-by: Doug Hoard <dhoard@users.noreply.github.com>
Signed-off-by: Jay DeLuca <jaydeluca4@gmail.com>
jaydeluca pushed a commit that referenced this pull request Jun 4, 2026
Follow-up to #2167 ([review
comment](#2167 (comment))):
switches the JMX Exporter compatibility job to the **quick test**
configuration and fixes the gaps that surfaced.

**Changes**

- **Quick test config** (`jmx_exporter_compat.py`): build the full
reactor (`clean install`) so `integration_test_suite` actually runs,
pinned to a single Java + Prometheus distribution. The pins are read
from the checked-out jmx_exporter's `run-quick-test.sh` so they stay
aligned with upstream; `-Dparamixel.parallelism` set to CPU count.
- **Test `main`, not the release**: the integration suite only compiles
against current `client_java` when jmx_exporter imports the stable
`expositionformats.generated.Metrics` class (#1873). Release 1.5.0
imports the version-stamped `com_google_protobuf_4_32_0` package
directly, which breaks on protobuf bumps (now 4.35.0); `main` uses the
stable class. Tracked by #2179 — switch the ref back to a pinned release
once one ships the fix.
- **Renovate guard** (`renovate.json5`): block major JDK bumps for the
jmx-exporter and micrometer compat env files (they pin an LTS JDK the
upstream release supports). This supersedes #2173-style bumps.

**Local validation**: `mise run lint:fix`; image-pin regex verified
against `prometheus/jmx_exporter@main`. Full integration run is
validated by CI (needs Docker + JDK 21).

---------

Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
Signed-off-by: Jay DeLuca <jaydeluca4@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
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.

3 participants


Back | FazBrowse Home | New Git URL