apupier opened a new pull request, #28731:
URL: https://github.com/apache/camel/pull/28731
Several tests in camel-opentelemetry-metrics were observed to fail
intermittently on CI, specifically those that check timing-sensitive histogram
values and gauge timestamps:
- OpenTelemetryRoutePolicyTest#testMetricsRoutePolicy
- OpenTelemetryContextPolicyTest#testMetricsRoutePolicy
- OpenTelemetryContextOnlyPolicyTest#testMetricsRoutePolicy
- OpenTelemetryContextOnlyPolicyTest#testLongTaskDuration
- OpenTelemetryExchangeEventNotifierTest#testSentTimerEvents
- OpenTelemetryExchangeEventNotifierTest#testLastTimeInstrument
Two structural fixes:
1. Make lastExchangeTimestampHolder an instance field instead of static. The
static AtomicLong in OpenTelemetryExchangeEventNotifier was shared
across all test instances in the same JVM. Concurrent or sequential tests
could overwrite the timestamp and cause testLastTimeInstrument to see a value
from a different test's exchange.
2. Call clearMetrics() in CamelOpenTelemetryExtension.beforeEach.
InMemoryMetricReader uses CUMULATIVE aggregation, so histogram data accumulates
across @Test methods within the same test class unless explicitly reset. This
could corrupt count and min assertions when a second test method ran after a
first one.
Tolerance and assertion message improvements:
- Increased TOLERANCE from 20-100ms to 200ms in all affected tests. The old
values were too tight for CI environments under CPU load, where
JVM scheduling jitter or GC pauses can inflate wall-clock measurements
beyond the configured route delay by more than the original tolerance.
- Replaced Thread.sleep + diff pattern in testLastTimeInstrument with a
bracketed assertion: record timestamps before/after the synchronous sendBody
call and assert the gauge falls within that window (+TOLERANCE).
This avoids the sleep anti-pattern and is robust to scheduler jitter.
- Enriched all assertTrue messages related to timing thresholds to include
the actual recorded value, e.g.: 'max value: expected < 250 but was 312'
so that when a failure does occur on CI the log immediately shows the magnitude
of the overshoot without requiring a debugger.
Co-authored-by: IBM Bob 2.2.1
# Description
<!--
- Write a pull request description that is detailed enough to understand
what the pull request does, how, and why.
-->
# Target
- [ ] I checked that the commit is targeting the correct branch (Camel 4
uses the `main` branch)
# Tracking
- [ ] If this is a large change, bug fix, or code improvement, I checked
there is a [JIRA issue](https://issues.apache.org/jira/browse/CAMEL) filed for
the change (usually before you start working on it).
<!--
# *Note*: trivial changes like, typos, minor documentation fixes and other
small items do not require a JIRA issue. In this case your pull request should
address just this issue, without pulling in other changes.
-->
# Apache Camel coding standards and style
- [ ] I checked that each commit in the pull request has a meaningful
subject line and body.
<!--
If you're unsure, you can format the pull request title like `[CAMEL-XXX]
Fixes bug in camel-file component`, where you replace `CAMEL-XXX` with the
appropriate JIRA issue.
-->
- [ ] I have run `mvn clean install -DskipTests` locally from root folder
and I have committed all auto-generated changes.
<!--
You can run the aforementioned command in your module so that the build
auto-formats your code. This will also be verified as part of the checks and
your PR may be rejected if if there are uncommited changes after running `mvn
clean install -DskipTests`.
You can learn more about the contribution guidelines at
https://github.com/apache/camel/blob/main/CONTRIBUTING.md
-->
# AI-assisted contributions
- [ ] If this PR includes AI-generated code, commits have proper
co-authorship attribution (e.g., `Co-authored-by` trailers) and the PR
description identifies the AI tool used.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]