Guillaume Nodet created CAMEL-23880:
---------------------------------------
Summary: camel-pulsar - Fix flaky integration tests caused by
topic name collisions and resource leaks
Key: CAMEL-23880
URL: https://issues.apache.org/jira/browse/CAMEL-23880
Project: Camel
Issue Type: Improvement
Components: camel-pulsar
Reporter: Guillaume Nodet
Several camel-pulsar integration tests are flaky, causing spurious CI failures
on unrelated PRs.
The primary root causes are:
1. *Topic name collisions*: PulsarConsumerNoAcknowledgementIT and
PulsarConsumerReadCompactedIT share the same topic URI
(persistent://public/default/camel-topic) with the same subscription name.
Since all integration tests share a singleton Pulsar container, messages and
subscription state leak between tests, causing non-deterministic message counts.
2. *Cross-method contamination*: PulsarConsumerNoAcknowledgementIT has two test
methods sharing the same @EndpointInject endpoint (same topic and
subscription). Unacknowledged messages from the first test method leak into the
second.
3. *Resource leaks*: PulsarClient instances created with givenPulsarClient()
are never closed, leaking threads and network resources.
4. *Exact message count assertions*: Tests use expectedMessageCount(N) instead
of expectedMinimumMessageCount(N) for redelivery-based tests where the exact
count is timing-dependent.
5. *Guava sleep in ReadCompactedIT*: Uninterruptibles.sleepUninterruptibly used
instead of Awaitility for waiting on compaction status.
The fix:
- Give each test class and test method a unique topic name to prevent
cross-contamination
- Replace @EndpointInject for consumer endpoints with programmatic endpoint
creation in @BeforeEach
- Add proper @AfterEach cleanup to close endpoints, producers, and routes
- Change expectedMessageCount to expectedMinimumMessageCount for
timing-dependent assertions
- Replace Guava Uninterruptibles.sleepUninterruptibly with Awaitility
--
This message was sent by Atlassian Jira
(v8.20.10#820010)