AsyncAPI 3.x: the problem type - #1751
Draft
LautaroPetaccio wants to merge 1 commit into
Draft
Conversation
ProblemType.ASYNCAPI, experimental like the other recent types. Main infers it from SutInfoDto.asyncApiProblem, picks its algorithm key, and stops with a clear message where the module will go: the sampler and fitness that complete it are the next changes. The one decision here is EMConfig.usesDriver(). Every other type reaches the driver only in white-box mode, or in black-box experiments. An AsyncAPI service has no universal wire to point at, so the driver holds the broker connection even when the service is a black box. The places in Main and Statistics that asked "is there a driver" now ask the config, instead of each spelling the rule out.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Tenth in the AsyncAPI stack, on top of #1738. Draft: the next two PRs — the sampler, then the fitness with the Guice module — complete it. Until they land,
--problemType ASYNCAPIstops with a message saying exactly that, rather than a Guice stack trace.What is here
ProblemType.ASYNCAPI, experimental likeRPC,WEBFRONTENDandMCP, so nothing changes for anyone who does not ask for it.Main: the type is inferred fromSutInfoDto.asyncApiProblemwhen the driver declares one; the algorithm key is resolved overAsyncApiIndividual; the module branch throws the message above.docs/options.mdregenerated —ConfigToMarkdownTestkeeps it honest.The one decision:
EMConfig.usesDriver()Every other problem type reaches the EM Driver only in white-box mode, or in black-box experiments — and that rule was spelled out as
!config.blackBox || config.bbExperimentsin five places acrossMainandStatistics. AsyncAPI breaks it: there is no universal wire to a message-driven service, so the driver holds the broker connection even when the service itself is a black box (see #1738 for why).Rather than add a third clause to five copies, the rule now lives once, in
EMConfig.usesDriver(), and those five places ask it. Behaviour for every existing type is unchanged.Two sets of guards were deliberately left alone:
TestSuiteWriter, which decide whether the generated test instantiates a driver. That is a test-writer decision, and the AsyncAPI test writer is a later PR;Not here
No
@Cfgoptions yet — nothing so far has needed one. The reply timeout will arrive with the fitness,@Experimentallike the rest.Testing
EMConfigTestgains a test pinningusesDriver(): false for black-box REST, true for black-box AsyncAPI, true for white-box.EMConfigTest+ConfigToMarkdownTest: 111 tests, 0 failures.