Repository navigation
Backend: metric schema and probes (#6001), focused test slices (#6002) - #6114
shai-almog wants to merge 2 commits into
Conversation
Metrics: a published, stable schema (MetricSchema, GET /manage/schema) with Micrometer names; a figure a runtime cannot measure is absent, never zero; pool pending/timeout gauges; liveness and readiness probes; a portable Grafana dashboard. A native test (BackendOperationsTest) holds the packaged ParparVM server to the same contract. Tests: @WebMvcTest and @DataJpaTest slices that fail at build time on a missing dependency, per-test rollback, opt-in management/telemetry/MCP via @backendtest(features), and the ManagementContract and OtlpTestCollector fixtures, all running on the JVM and compiled. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Developer Guide build artifacts are available for download from this workflow run:
Developer Guide quality checks: |
Cloudflare Preview
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Flutter vs Codename OneSame application, built both ways: Flutter's AOT compile of the gallery, and the identical Dart source transpiled to Java on Codename One. Lower is better for every metric, so a ratio above 1.00x means Codename One is ahead by that factor. android9 interleaved rounds; host load 0.37, 1.53, 1.34
Compute -- the VM workloads (
Gate: within tolerance against
ios9 interleaved rounds; host load 14.14, 24.45, 24.0
Compute -- the VM workloads ( Not measured: iOS compute is not measured: a device build needs signed hardware, and on the simulator Flutter runs its JIT debug engine rather than AOT code. The macOS row runs the same ParparVM and Dart AOT compilers on the same Apple silicon. Gate: within tolerance against
javascript9 interleaved rounds; host load 2.37, 1.48, 0.66
Compute -- the VM workloads (
Gate: within tolerance against
linux9 interleaved rounds; host load 0.29, 2.88, 2.43
Compute -- the VM workloads (
Gate: within tolerance against
macos9 interleaved rounds; host load 6.19, 21.35, 25.11
Compute -- the VM workloads (
Gate: within tolerance against
windows9 interleaved rounds
Compute -- the VM workloads (
Gate: within tolerance against
Codename One wins 26 of 26 measured metrics across 6 platform(s). |
|
Compared 206 screenshots: 206 matched. Benchmark ResultsDetailed Performance Metrics
|
|
Compared 191 screenshots: 191 matched. Native Android coverage
✅ Native Android screenshot tests passed. Native Android coverage
Benchmark ResultsDetailed Performance Metrics
|
|
Compared 227 screenshots: 227 matched. |
✅ Continuous Quality ReportTest & Coverage
Static Analysis
Generated automatically by the PR CI workflow. |
|
Compared 206 screenshots: 206 matched. Benchmark ResultsDetailed Performance Metrics
ParparVM vs HotSpot (JDK 25): Windows x64Runner CPU: AMD64 Family 25 Model 1 Stepping 1, AuthenticAMD (baseline Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
Result: no regression |
|
Compared 206 screenshots: 206 matched. ParparVM vs HotSpot (JDK 25): Linux x64Runner CPU: AMD EPYC 7763 64-Core Processor (baseline 1 improvement past the baseline (not a failure; rebaseline to lock it in):
Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
A change that moves performance ON PURPOSE records the new baseline in Result: no regression (improved past the baseline: consider rebaselining) |
|
Compared 206 screenshots: 206 matched. ParparVM vs HotSpot (JDK 25): Linux arm64Runner CPU: Neoverse-N2 (baseline Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
Result: no regression |
✅ ByteCodeTranslator Quality ReportTest & Coverage
Benchmark Results
Static Analysis
Generated automatically by the PR CI workflow. |
|
Compared 206 screenshots: 206 matched. Benchmark ResultsDetailed Performance Metrics
ParparVM vs HotSpot (JDK 25): Windows arm64Runner CPU: ARMv8 (64-bit) Family 8 Model D49 Revision 0, MICROSOFT CORPORATION (baseline Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 20% (time) / 25% (RAM) above its baseline in
Result: no regression |
Closes #6001. Closes #6002.
Metrics (#6001)
MetricSchema, served atGET /manage/schema: each metric's name, unit, attributes, temporality, availability (always / database / JVM) and Micrometer equivalent, plus the Micrometer meters neither runtime reports, each with its reason.available: falseand gives the reason.db.client.connection.max,.pending_requestsand.timeouts. Pool reference counts are kept per server./manage/health/liveness(200 while starting and draining) and/manage/health/readiness(503 while starting or draining). Neither needs a token.vm/backend/dashboards/backend-overview.json, a Grafana dashboard that uses only metrics every runtime measures.MetricSchemaTestcovers the JVM.BackendOperationsTest(vm/tests) builds a native server and checks the probes, the auth, that the schema reportsnative, that no JVM-only series appears, that every metric the dashboard uses is in the scrape, and that the exporter sends its last export on SIGTERM.Test slices (#6002)
@WebMvcTestwires only the controllers it names plusincludes. A missing dependency fails the build, and the error gives the three ways to supply it.@DataJpaTestruns on its own database and rolls back each test, on the JVM and compiled.@BackendTest(features = MANAGEMENT | TELEMETRY | MCP | AS_PACKAGED): production features are off in tests unless a test asks for them.ManagementContract(ready-made@Testdefault methods) andOtlpTestCollector.@Testdefault methods on interfaces that come from library jars.There is no GraalVM or native-image job. Native validation goes through the existing ParparVM build.
🤖 Generated with Claude Code