[ 
https://issues.apache.org/jira/browse/CAMEL-26610?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen updated CAMEL-26610:
--------------------------------
    Fix Version/s:     (was: 4.24.0)

> camel-test-dst - more fake worlds for the consumers of other components 
> (kafka, jms, file/ftp, cloud queues, reconnecting consumers)
> ------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-26610
>                 URL: https://issues.apache.org/jira/browse/CAMEL-26610
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-test
>            Reporter: Claus Ibsen
>            Priority: Major
>
> camel-test-dst (CAMEL-25738) runs the real consumer of a component under a 
> seeded virtual-time scheduler against a fake of the external system. Five 
> components have a fake world today, listed in the catalog ({{dstWorlds}}, 
> CAMEL-26438): aws2-sqs, azure-eventhubs, kafka-share, pulsar and slack. They 
> found real bugs, for example CAMEL-25737 (the SQS visibility extender is 
> always late with visibilityTimeout=1).
> This ticket is for more worlds, for the consumers where timing bugs happen: 
> checkpoint, commit, acknowledge, visibility or lock renewal, reconnect, 
> suspend and resume, stop while a poll is running. Each world gets its own 
> JIRA (one per component) when work starts, linked here.
> h3. Rules for each world
> * Follow "Writing a fake world" in 
> {{components/camel-test/camel-test-dst/src/main/docs/test-dst.adoc}}; the SQS 
> world is the worked example.
> * The fake follows the documentation of the external system, cited in the 
> code, not what the Camel consumer expects.
> * *Self-check against an old fix:* the world must reproduce at least one of 
> the fixed bugs listed below on the code from before its fix, and pass on 
> main. That shows the world can find that class of bug.
> * Mark it with {{@DstWorld}} so the catalog and the docs list it.
> * Do not report a failing seed as a bug before the triage step of the guide.
> h3. Suggested order
> The order weighs how many users the component has, how much timing logic its 
> consumer has, the timing bugs fixed in it this year, and how easy it is to 
> fake the client.
> *Tier 1: widely used, complex consumer timing*
> # *camel-kafka*: commit strategies (sync, async, manual), breakOnFirstError, 
> pause and resume, rebalance, batching. Fixed: CAMEL-25756 (a failed poll 
> dropped the records of an incomplete batch), CAMEL-25753 (stop waited for the 
> current poll), CAMEL-25313 (a pause or resume request was lost while 
> suspended). Seam: kafka-clients ships {{MockConsumer}}, which may serve as 
> the base of the fake; the kafka-share world shows the approach.
> # *camel-jms / camel-sjms*: the InOut reply manager (request timeout against 
> a late reply against a failed send), transacted and CLIENT_ACKNOWLEDGE 
> consumers, stop and start of the listener. Fixed: CAMEL-25095 and CAMEL-25122 
> (an InOut exchange completed twice), CAMEL-26536 (asyncStopListener lost the 
> listener container). Harder seam (the Spring listener container has its own 
> threads), but the double completion bugs make it worth it.
> # *camel-file / camel-ftp / camel-sftp*: read locks, the in-progress and 
> idempotent repositories, moveFailed, done files, reconnect after a failed 
> poll. Fixed: CAMEL-25856 (the lock of a file name released while in use), 
> CAMEL-25728 (done files), CAMEL-25915 and CAMEL-25896 (ftp reconnect and 
> noop). Seam: {{GenericFileOperations}} / {{RemoteFileOperations}}.
> *Tier 2: cloud queues with ack deadlines and lock renewal (the same family as 
> the SQS world)*
> # *camel-azure-servicebus*: message lock renewal. Fixed: CAMEL-25701 (the 
> renewal came too late, the same class as CAMEL-25737).
> # *camel-google-pubsub*: ack deadline extension, nack at max delivery 
> attempts, stop. Fixed: CAMEL-25712, CAMEL-25790.
> # *camel-aws2-kinesis* and the *camel-aws2-s3* consumer: shard checkpoints 
> and resume, the in-progress repository. Fixed: CAMEL-25942, CAMEL-25558, 
> CAMEL-25521.
> *Tier 3: connection and subscription consumers (reconnect, resubscribe)*
> # *camel-milo*: the most timing fixes this year, about reconnects and 
> subscriptions. Fixed: CAMEL-25691, CAMEL-25812, CAMEL-25873, CAMEL-26570.
> # *camel-paho / camel-paho-mqtt5 / camel-hivemq*: reconnect, resubscribe, 
> manual acks. Fixed: CAMEL-24523, CAMEL-25944, CAMEL-25793.
> # *camel-nats* (JetStream) and *camel-rabbitmq / camel-spring-rabbitmq*: 
> acks, stop while subscribing. Fixed: CAMEL-26462, CAMEL-25847.
> # *camel-netty* client mode and *camel-vertx-websocket*: reconnect without 
> blocking the event loop, consumers of a shared host. Fixed: CAMEL-26574, 
> CAMEL-26573.
> *Tier 4: leader election and change streams*
> # *camel-zookeeper-master* and the cluster services: leadership lost while 
> the consumer starts, retry of a failed start. Fixed: CAMEL-26540, 
> CAMEL-25315; open: CAMEL-26577 (RebalancingCamelClusterService).
> # *camel-mongodb* change streams and *camel-mongodb-gridfs*: the consumer 
> goes on after its collection is dropped or a poll fails. Fixed: CAMEL-25946, 
> CAMEL-25711, CAMEL-25607.
> camel-seda (11 timing fixes this year) has no external system, so it needs 
> deterministic tests in camel-core rather than a fake world.
> The order is a suggestion; a contributor who knows one of these systems well 
> can pick it first.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to