Skip to content

test: run JMX Exporter quick test configuration - #2178

Merged
zeitlinger merged 4 commits into
mainfrom
jmx-quick-test
Jun 3, 2026
Merged

test: run JMX Exporter quick test configuration#2178
zeitlinger merged 4 commits into
mainfrom
jmx-quick-test

Conversation

@zeitlinger

@zeitlinger zeitlinger commented Jun 2, 2026

Copy link
Copy Markdown
Member

Follow-up to #2167 (review 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 (Add stable Metrics class to decouple consumers from protobuf version #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 Pin JMX Exporter compatibility test to a release once one ships the stable Metrics class #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 chore(deps): update dependency java to v25 - autoclosed #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).

The compatibility job previously ran only the unit tests of three modules
(common, javaagent, standalone) and never built the integration_test_suite,
so the docker-based integration tests never ran.

Switch to jmx_exporter's quick test configuration: build the full reactor
(including integration_test_suite) against a single Java and Prometheus
distribution. The distributions are read from the checked-out jmx_exporter's
run-quick-test.sh so they stay aligned with upstream instead of drifting from
a hardcoded copy.
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
The integration_test_suite only compiles against current client_java when
jmx_exporter imports the stable expositionformats.generated.Metrics class.
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. Test main until a release ships the fix (tracked in #2179).
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
The jmx-exporter and micrometer compat env files pin an LTS JDK that the
upstream release supports; a major bump to the primary JDK (e.g. 25) breaks
those builds, as in #2173.
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
@zeitlinger
zeitlinger marked this pull request as ready for review June 2, 2026 17:38
@zeitlinger
zeitlinger merged commit 82d3c46 into main Jun 3, 2026
13 of 14 checks passed
@zeitlinger
zeitlinger deleted the jmx-quick-test branch June 3, 2026 10:30
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>
zeitlinger added a commit that referenced this pull request Jun 8, 2026
## Summary

- v1.6.0 of jmx_exporter ships the stable
`io.prometheus.metrics.expositionformats.generated.Metrics` class
(verified in
`integration_test_suite/integration_tests/src/main/java/io/prometheus/jmx/test/support/metrics/MetricsParser.java`
on the v1.6.0 tag).
- Restore `DEFAULT_JMX_EXPORTER_VERSION` (currently `v1.6.0`,
renovate-tracked) as the default ref so the compatibility job pins to a
release again. `workflow_dispatch`'s `JMX_EXPORTER_REF` still overrides.
- Drops the stale comment in `mise.toml` that explained why we tracked
`main`.

Closes #2179. Follow-up to #2178.

## Test plan

- [ ] CI `JMX Exporter Compatibility` job runs against `v1.6.0` and
passes.

Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

3 participants