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

Claus Ibsen resolved CAMEL-25821.
---------------------------------
    Resolution: Fixed

> camel-test-dst - more pitfalls for agents writing worlds in the guide
> ---------------------------------------------------------------------
>
>                 Key: CAMEL-25821
>                 URL: https://issues.apache.org/jira/browse/CAMEL-25821
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-test
>            Reporter: shashank
>            Assignee: shashank
>            Priority: Minor
>             Fix For: 4.24.0
>
>
> The guide "Writing a fake world" of camel-test-dst (CAMEL-25738, 
> {{test-dst.adoc}}) lists the pitfalls seen when agents wrote the first nine 
> worlds. Writing worlds for IMAP, JMS, NATS JetStream and Azure Service Bus 
> with the merged harness ran into more of them. Each one cost a round of false 
> failures or a run that never ended, and each fits in one or two sentences of 
> the guide.
> *Change* (docs only, the module page and its catalog copy):
> * "No end to the run" says what to do with a consumer task that never returns 
> (a pull loop): it sits above the test thread on the one stack, so 
> {{dst.runFor}} / {{dst.runUntil}} in the test body cannot return while it 
> loops. The phases of the run become scheduled tasks, and the run ends by 
> having the fake close the subscription, then {{runUntil(closed)}}.
> * New pitfalls: a fake that answers at once with nothing makes a tight loop 
> in which virtual time does not move (give it a round-trip latency); a 
> {{java.lang.reflect.Proxy}} fake turns an undeclared checked exception into 
> {{UndeclaredThrowableException}} (do what the library does); the fake must 
> model what the client library does with objects of an earlier connection, not 
> only the server; each kind of operator stop needs its own excuse record; a 
> synchronous consumer over {{DstCamel.asyncStep}} needs 
> {{DefaultAsyncProcessorAwaitManager}} in {{alsoRewrite}}, and the 
> asynchronous exchanges in flight must finish before {{dropPending()}}.
> * Running the tests: a component whose tests depend on a 
> {{camel-test-infra-*}} module needs it in {{-pl}} when it is not in the local 
> repository.
> * Limits: a world in a module with parallel tests (camel-sjms, camel-jms) can 
> be run alone with {{-Dcamel.surefire.parallel=false}} but cannot be committed 
> there (the harness refuses to start under parallel JUnit, as before); locks 
> do not exclude on the one stack, so races between two lock-holding code paths 
> cannot be explored.
> Each statement was checked against the harness on main ({{Dst}}, 
> {{DstExtension}}, {{DstInstrumentation}}, {{DstCamel}}).
> _Filed with Claude Code on behalf of allthingssecurity._



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to