Skip to content

Replace Thread.sleep() with proper synchronization in tests#1773

Merged
angelozerr merged 1 commit into
eclipse-lemminx:mainfrom
fbricon:speedup-tests
Apr 20, 2026
Merged

Replace Thread.sleep() with proper synchronization in tests#1773
angelozerr merged 1 commit into
eclipse-lemminx:mainfrom
fbricon:speedup-tests

Conversation

@fbricon

@fbricon fbricon commented Mar 11, 2026

Copy link
Copy Markdown
Contributor

Tests were using Thread.sleep() (up to 5 seconds each) to wait for
async operations like resource downloads and validation triggers,
making the test suite unnecessarily slow (~71s test time).

Key changes:

  • BaseFileTempTest: replace sleep(1050) with Files.setLastModifiedTime()
    to ensure filesystem change detection without waiting
  • XMLLanguageService: return download futures from publishDiagnostics()
    so tests can await them directly
  • XMLAssert: add awaitDownloads() helper, remove retrigger callback
  • MockXMLLanguageClient: add waitForDiagnosticCount() polling helper
  • Replace all 5-second HACK sleeps with awaitDownloads()
  • Replace async validation sleeps with waitForDiagnosticCount()
  • DocumentLifecycleParticipantTest: poll for lifecycle callback completion
  • CacheResourcesManagerTest: reduce cache TTL from 1s to 100ms

Build time reduced from ~1m17s to ~15s (5x faster).

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

Tests were using Thread.sleep() (up to 5 seconds each) to wait for
async operations like resource downloads and validation triggers,
making the test suite unnecessarily slow (~71s test time).

Key changes:
- BaseFileTempTest: replace sleep(1050) with Files.setLastModifiedTime()
  to ensure filesystem change detection without waiting
- XMLLanguageService: return download futures from publishDiagnostics()
  so tests can await them directly
- XMLAssert: add awaitDownloads() helper, remove retrigger callback
- MockXMLLanguageClient: add waitForDiagnosticCount() polling helper
- Replace all 5-second HACK sleeps with awaitDownloads()
- Replace async validation sleeps with waitForDiagnosticCount()
- DocumentLifecycleParticipantTest: poll for lifecycle callback completion
- CacheResourcesManagerTest: reduce cache TTL from 1s to 100ms

Build time reduced from ~1m17s to ~15s (5x faster).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@fbricon
fbricon requested a review from angelozerr March 11, 2026 11:18
@angelozerr

Copy link
Copy Markdown
Contributor

@fbricon this PR looks very good!

@angelozerr

Copy link
Copy Markdown
Contributor

Let's merge this PR since it seems fix random test failures.

@angelozerr angelozerr added the enhancement New feature or request label Apr 20, 2026
@angelozerr angelozerr added this to the 0.31.1 milestone Apr 20, 2026
@angelozerr
angelozerr merged commit 865f7d0 into eclipse-lemminx:main Apr 20, 2026
10 of 12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants