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]

Reply via email to