perf(tests): one Dirigible boot per class for 22 more multi-method ITs - #6708
Merged
Conversation
Batch 2 of the AFTER_CLASS conversion (#6703 was batch 1): override @DirtiesContext to AFTER_CLASS on the remaining multi-method IT classes whose methods are read-only or clean up after themselves - audited class-by-class for shared-database honesty. 60 test methods now cost 22 boots instead of 60, trimming both the api and ui CI shards. Converted as-is (18): MonitoringPerspectiveIT, IntentBuilderShellIT, MonitoringShellIT, DatabaseShellIT, ShellSwitcherIT, EnabledMultitenantModeIT, CsvProcessorIT, RepositoryExportIT, CsvimReimportIT, DocumentsApiIT, JavaBpmnIT, JavaCamelIT, PerspectiveGroupAggregationIT, JavaCompilationProblemsIT, PrintRenderIT, ArtefactStatusEndpointIT, BpmnModelApiIT, TenantConfigurationIT. Converted with a state-honesty fix (4): - RestTransactionsIT: new @AfterEach drops TESTTABLE and deletes the committed test user - two methods otherwise collide on both. - IntentCrossModelScheduleSourceIT: cleanup force-syncs so the DELETE branch unschedules the published 5-second cron job, and the unpublish cleanup asserts a strict 2xx. - SynchronizerCleanupRaceIT: the cleanup sync runs unconditionally - the publish-bypass test leaves a registered JavaFile whose source is gone, which otherwise makes every later rebuild defer. - MessagingFacadeIT: the queue tests drain the now-persistent broker store before each method (FIFO and receive-timeout assertions need an empty queue). Deliberately NOT converted, with cause: MultitenancyHarmoniaIT (the fixture asserts absolute row counts and empty CMIS listings), LocalNativeAppLifecycleIT (leaks live OS processes and duplicate default-package FQNs between methods), SchemaExportImportIT (whole- SystemDB export tuned to a pristine database). Verified: two consecutive full runs of all 22 classes, fresh state each, 62/62 green both times. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This was referenced Aug 13, 2026
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.
What
Batch 2 of the
@DirtiesContext(AFTER_CLASS)conversion (#6703 was batch 1): the remaining multi-method IT classes, audited class-by-class for shared-database honesty. 60 test methods now cost 22 Spring boots instead of 60, trimming both theapianduiCI shards (theuishard is the current wall-clock bottleneck).Scope
Converted as-is (18) — methods are read-only or already have honest per-method cleanup:
MonitoringPerspectiveIT,IntentBuilderShellIT,MonitoringShellIT,DatabaseShellIT,ShellSwitcherIT,EnabledMultitenantModeIT,CsvProcessorIT,RepositoryExportIT,CsvimReimportIT,DocumentsApiIT,JavaBpmnIT,JavaCamelIT,PerspectiveGroupAggregationIT,JavaCompilationProblemsIT,PrintRenderIT,ArtefactStatusEndpointIT,BpmnModelApiIT,TenantConfigurationIT.Converted with a state-honesty fix (4):
RestTransactionsIT— new@AfterEachdropsTESTTABLEand deletes the committed test user; two methods otherwise collide on both (one asserts the user exists after a commit, another asserts it's absent after a rollback).IntentCrossModelScheduleSourceIT— cleanup now force-syncs so theJobSynchronizerDELETE branch unschedules the published 5-second cron job (it otherwise keeps firing against unloaded gen classes for the rest of the class), and the unpublish cleanup asserts a strict 2xx instead of>=200.SynchronizerCleanupRaceIT— the cleanup sync runs unconditionally: the publish-bypass test unpublishes through the service without a sync, leaving a registeredJavaFilewhose source is gone, which makes every later client-Java rebuild defer.MessagingFacadeIT— the queue tests drain the broker (now persistent across methods, its JDBC store lives in SystemDB) before each method; the FIFO and receive-timeout assertions need an empty queue.Deliberately NOT converted, with cause:
MultitenancyHarmoniaIT(fixture asserts absolute row counts and empty CMIS listings — non-idempotent by construction),LocalNativeAppLifecycleIT(would leak live OS processes and duplicate default-packageServerFQNs between methods),SchemaExportImportIT(whole-SystemDB export with an exclusion list tuned to a pristine database).Verification
Two consecutive full runs of all 22 classes (fresh
target/dirigibleeach, isolated Maven repo): 62/62 green both times (the 1 skip is the pre-existing@Disabledrollback test).mvn formatter:validategreen.With #6703 this closes out the low-risk portion of the boot-per-method cleanup; what remains for the IT-speed effort is consolidating the duplicated journeys (the 14 sample-project clones, the BPMN editor trio,
CreateNewFileIT's 431s single test).🤖 Generated with Claude Code