Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add unit tests for LimitedConcurrencyLevelTaskScheduler, #1110 #1119

Merged
merged 2 commits into from
Jan 22, 2025

Conversation

paulirwin
Copy link
Contributor

  • You've read the Contributor Guide and Code of Conduct.
  • You've included unit or integration tests for your change, where applicable.
  • You've included inline docs for your change, where applicable.
  • There's an open issue for the PR that you are making. If you'd like to propose a change, please open an issue to discuss the change or find an existing issue.

Adds unit tests for LimitedConcurrencyLevelTaskScheduler.

Fixes #1110

Description

This adds some Apache Harmony tests for ThreadPoolExecutor and adapts them for testing LimitedConcurrencyLevelTaskScheduler (used in Lucene.NET in place of ThreadPoolExecutor).

This class, being a TaskScheduler, is only useful when used with i.e. a TaskFactory, so it does not have a very testable public API surface. So to exercise this class, some extension methods were added in the JSR166TestCase file to emulate a ThreadPoolExecutor's API surface. This keeps track of task state using a ConditionalWeakTable keyed on TaskScheduler, so that when the TaskScheduler is garbage collected, its state is cleaned up. The state is needed to track completed tasks, since LimitedConcurrencyLevelTaskScheduler removes/dequeues tasks when they are completed. This also implements the joinPool method in JSR166TestCase via waiting for all tracked tasks for the scheduler with a timeout.

This does not port all of the tests from Harmony, since most are irrelevant, but it ports enough to test executing tasks, concurrency level, the number of running/completed tasks, shutdown state, etc.

As noted in #1110, FEATURE_THREADPOOL_UNSAFEQUEUEWORKITEM was removed as all targets support this feature.

@paulirwin paulirwin added the notes:improvement An enhancement to an existing feature label Jan 22, 2025
@paulirwin paulirwin requested a review from NightOwl888 January 22, 2025 05:00
@NightOwl888 NightOwl888 self-requested a review January 22, 2025 19:57
@paulirwin paulirwin merged commit b1d309f into apache:master Jan 22, 2025
267 checks passed
@paulirwin paulirwin deleted the issue/1110 branch January 22, 2025 20:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
notes:improvement An enhancement to an existing feature
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add Support unit tests for LimitedConcurrencyLevelTaskScheduler
2 participants