Skip to content

Add a test suite#47

Merged
arybczak merged 1 commit into
masterfrom
tests
Jul 8, 2026
Merged

Add a test suite#47
arybczak merged 1 commit into
masterfrom
tests

Conversation

@arybczak

@arybczak arybczak commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Cover the public API of Data.Pool and Data.Pool.Introspection with a tasty based test suite:

  • Config validation: newPool rejects invalid TTL, maximum number of resources and stripe counts.

  • Basic operation: reuse of idle resources, tryTakeResource and tryWithResource on an exhausted pool, destruction of the resource when the action throws, destroyResource, destroyAllResources, distribution of resources across stripes and collection of idle resources after the TTL.

  • Concurrency: the number of created resources never exceeds the maximum, a blocked thread is woken up by putResource, and a regression test for the fix in 0.5.0.1 where a thread waiting for a resource has to be woken up when resource creation fails in another thread.

  • Introspection: resource metadata (label, stripe number, creation time) and Immediate/Delayed acquisition.

  • Stress: concurrent clients with periodic failures on 1 and 4 stripe pools, checking via Data.Pool.Internal that all permits are available, all live resources sit in stripe caches and no thread is queued once the pool is idle again.

Synchronization-sensitive tests poll the stripe state through Data.Pool.Internal instead of relying on fixed delays.

Cover the public API of Data.Pool and Data.Pool.Introspection with a tasty based
test suite:

* Config validation: newPool rejects invalid TTL, maximum number of resources
  and stripe counts.

* Basic operation: reuse of idle resources, tryTakeResource and tryWithResource
  on an exhausted pool, destruction of the resource when the action throws,
  destroyResource, destroyAllResources, distribution of resources across stripes
  and collection of idle resources after the TTL.

* Concurrency: the number of created resources never exceeds the maximum, a
  blocked thread is woken up by putResource, and a regression test for the fix
  in 0.5.0.1 where a thread waiting for a resource has to be woken up when
  resource creation fails in another thread.

* Introspection: resource metadata (label, stripe number, creation time) and
  Immediate/Delayed acquisition.

* Stress: concurrent clients with periodic failures on 1 and 4 stripe pools,
  checking via Data.Pool.Internal that all permits are available, all live
  resources sit in stripe caches and no thread is queued once the pool is idle
  again.

Synchronization-sensitive tests poll the stripe state through Data.Pool.Internal
instead of relying on fixed delays.
@arybczak arybczak merged commit afc6978 into master Jul 8, 2026
10 checks passed
@arybczak arybczak deleted the tests branch July 8, 2026 15:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant