Skip to content

Add specification tests for jitter#2830

Merged
martincostello merged 1 commit intomainfrom
add-specification-tests
Nov 24, 2025
Merged

Add specification tests for jitter#2830
martincostello merged 1 commit intomainfrom
add-specification-tests

Conversation

@martincostello
Copy link
Member

Add some specification tests for the application of jitter in retries using FsCheck.

Add some specification tests for the application of jitter in retries using FsCheck.
@martincostello martincostello added enhancement dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code labels Nov 24, 2025
@codecov
Copy link

codecov bot commented Nov 24, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 96.15%. Comparing base (c707b24) to head (f5c2868).
⚠️ Report is 1 commits behind head on main.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #2830   +/-   ##
=======================================
  Coverage   96.15%   96.15%           
=======================================
  Files         309      309           
  Lines        7123     7123           
  Branches     1005     1005           
=======================================
  Hits         6849     6849           
  Misses        221      221           
  Partials       53       53           
Flag Coverage Δ
linux 96.15% <100.00%> (ø)
macos 96.15% <100.00%> (ø)
windows 96.14% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@martincostello martincostello marked this pull request as ready for review November 24, 2025 16:01
Copilot AI review requested due to automatic review settings November 24, 2025 16:01
@martincostello martincostello merged commit 156a9bb into main Nov 24, 2025
36 of 37 checks passed
@martincostello martincostello deleted the add-specification-tests branch November 24, 2025 16:02
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds property-based specification tests for retry jitter functionality using the FsCheck framework. The changes enable comprehensive testing of jitter algorithms by generating and validating thousands of random test cases.

Key changes:

  • Added two FsCheck property-based tests to verify ApplyJitter and DecorrelatedJitterBackoffV2 behavior
  • Made two retry helper methods internal to enable direct testing
  • Added FsCheck.Xunit package dependency (version 3.3.2)

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 7 comments.

File Description
test/Polly.Core.Tests/Retry/RetryHelperTests.cs Added property-based tests with custom arbitraries for generating test data, and changed helper method visibility
src/Polly.Core/Retry/RetryHelper.cs Changed two methods from private to internal to enable testing, and reorganized code (moved methods)
test/Polly.Core.Tests/Polly.Core.Tests.csproj Added FsCheck.Xunit package reference for property-based testing
Directory.Packages.props Added FsCheck.Xunit version specification (3.3.2)

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

martincostello added a commit that referenced this pull request Nov 24, 2025
Apply recommendations/fixes suggested by Copilot in #2830.
martincostello added a commit that referenced this pull request Nov 24, 2025
Apply recommendations/fixes suggested by Copilot in #2830.
github-merge-queue bot pushed a commit to DFE-Digital/teaching-record-system that referenced this pull request Mar 9, 2026
Updated [Polly.Core](https://github.com/App-vNext/Polly) from 8.6.5 to
8.6.6.

<details>
<summary>Release notes</summary>

_Sourced from [Polly.Core's
releases](https://github.com/App-vNext/Polly/releases)._

## 8.6.6

## Highlights

* Fix `ScheduledTaskExecutor` deadlock when `TrySetResult` runs
continuations inline by @​crnhrv in
App-vNext/Polly#2953

## What's Changed

* Add specification tests for jitter by @​martincostello in
App-vNext/Polly#2830
* Refactor property-based tests by @​martincostello in
App-vNext/Polly#2831
* .NET 10 preparation by @​martincostello in
App-vNext/Polly#2842
* Fix CS7035 warning in dependabot jobs by @​martincostello in
App-vNext/Polly#2849
* Remove codecov/test-results-action by @​martincostello in
App-vNext/Polly#2872
* Update to .NET 10 SDK by @​martincostello in
App-vNext/Polly#2531
* Bump zizmor to v1.19.0 by @​martincostello in
App-vNext/Polly#2882
* Fix typo by @​martincostello in
App-vNext/Polly#2886
* Add RateLimitHeaders library to community resources by @​alexis- in
App-vNext/Polly#2887
* Bump zizmor to 1.21.0 by @​martincostello in
App-vNext/Polly#2905
* .NET 11 preparation by @​martincostello in
App-vNext/Polly#2932
* Remove Stryker workaround by @​martincostello in
App-vNext/Polly#2933
* Group .NET dependency updates by @​martincostello in
App-vNext/Polly#2944
* Migrate to actions/attest by @​martincostello in
App-vNext/Polly#2952

## New Contributors

* @​alexis- made their first contribution in
App-vNext/Polly#2887
* @​crnhrv made their first contribution in
App-vNext/Polly#2953

**Full Changelog**:
App-vNext/Polly@8.6.5...8.6.6


Commits viewable in [compare
view](App-vNext/Polly@8.6.5...8.6.6).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Polly.Core&package-manager=nuget&previous-version=8.6.5&new-version=8.6.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: James Gunn <james@gunn.io>
PhilipWoulfe pushed a commit to PhilipWoulfe/F1Competition that referenced this pull request Mar 10, 2026
Updated [Polly](https://github.com/App-vNext/Polly) from 8.6.5 to 8.6.6.

<details>
<summary>Release notes</summary>

_Sourced from [Polly's
releases](https://github.com/App-vNext/Polly/releases)._

## 8.6.6

## Highlights

* Fix `ScheduledTaskExecutor` deadlock when `TrySetResult` runs
continuations inline by @​crnhrv in
App-vNext/Polly#2953

## What's Changed

* Add specification tests for jitter by @​martincostello in
App-vNext/Polly#2830
* Refactor property-based tests by @​martincostello in
App-vNext/Polly#2831
* .NET 10 preparation by @​martincostello in
App-vNext/Polly#2842
* Fix CS7035 warning in dependabot jobs by @​martincostello in
App-vNext/Polly#2849
* Remove codecov/test-results-action by @​martincostello in
App-vNext/Polly#2872
* Update to .NET 10 SDK by @​martincostello in
App-vNext/Polly#2531
* Bump zizmor to v1.19.0 by @​martincostello in
App-vNext/Polly#2882
* Fix typo by @​martincostello in
App-vNext/Polly#2886
* Add RateLimitHeaders library to community resources by @​alexis- in
App-vNext/Polly#2887
* Bump zizmor to 1.21.0 by @​martincostello in
App-vNext/Polly#2905
* .NET 11 preparation by @​martincostello in
App-vNext/Polly#2932
* Remove Stryker workaround by @​martincostello in
App-vNext/Polly#2933
* Group .NET dependency updates by @​martincostello in
App-vNext/Polly#2944
* Migrate to actions/attest by @​martincostello in
App-vNext/Polly#2952

## New Contributors

* @​alexis- made their first contribution in
App-vNext/Polly#2887
* @​crnhrv made their first contribution in
App-vNext/Polly#2953

**Full Changelog**:
App-vNext/Polly@8.6.5...8.6.6


Commits viewable in [compare
view](App-vNext/Polly@8.6.5...8.6.6).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Polly&package-manager=nuget&previous-version=8.6.5&new-version=8.6.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file enhancement .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants