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

ExpireAfter Testing Rework #821

Merged
merged 1 commit into from
Jan 31, 2024
Merged

ExpireAfter Testing Rework #821

merged 1 commit into from
Jan 31, 2024

Conversation

JakenVeina
Copy link
Collaborator

Reworked testing for all versions of the ExpireAfter operator, to improve functional coverage and cover various existing defects.

This will support the effort to fix #716.


// Covers https://github.com/reactivemarbles/DynamicData/issues/716
[Fact(Skip = "Existing defect, removals are skipped when scheduler invokes early")]
public void SchedulerIsInaccurate_RemovalsAreNotSkipped()
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

This is the test that leverages the new TestScheduler class.

@JakenVeina
Copy link
Collaborator Author

Also, benchmarks, for comparison later:

ExpireAfter_Cache_ForSource

Method addCount removeCount Mean Error StdDev Median Gen0 Gen1 Gen2 Allocated
AddsRemovesAndFinalization 1 0 13.19 μs 0.262 μs 0.245 μs 13.10 μs 2.8229 - - 11.58 KB
AddsRemovesAndFinalization 1 1 14.93 μs 0.063 μs 0.053 μs 14.92 μs 3.2959 - - 13.46 KB
AddsRemovesAndFinalization 10 0 37.10 μs 0.269 μs 0.252 μs 37.04 μs 10.4980 - - 43.12 KB
AddsRemovesAndFinalization 10 1 41.36 μs 1.273 μs 3.752 μs 39.05 μs 10.9863 - - 45 KB
AddsRemovesAndFinalization 10 10 60.42 μs 1.901 μs 5.605 μs 61.65 μs 15.1367 - - 61.95 KB
AddsRemovesAndFinalization 100 0 273.20 μs 5.011 μs 3.913 μs 272.02 μs 91.3086 0.4883 - 373 KB
AddsRemovesAndFinalization 100 1 280.68 μs 2.662 μs 2.360 μs 279.85 μs 91.3086 1.4648 - 374.89 KB
AddsRemovesAndFinalization 100 10 301.48 μs 5.949 μs 9.084 μs 296.60 μs 95.7031 0.4883 - 391.83 KB
AddsRemovesAndFinalization 100 100 423.34 μs 1.765 μs 1.474 μs 423.03 μs 137.2070 0.4883 - 561.28 KB
AddsRemovesAndFinalization 1000 0 2,943.16 μs 58.360 μs 71.672 μs 2,909.36 μs 640.6250 339.8438 58.5938 3674.03 KB
AddsRemovesAndFinalization 1000 1 3,153.03 μs 27.200 μs 24.112 μs 3,157.95 μs 644.5313 347.6563 58.5938 3675.91 KB
AddsRemovesAndFinalization 1000 10 3,057.25 μs 24.387 μs 22.812 μs 3,053.13 μs 636.7188 285.1563 125.0000 3692.92 KB
AddsRemovesAndFinalization 1000 100 3,216.73 μs 23.993 μs 22.443 μs 3,217.29 μs 628.9063 261.7188 113.2813 3862.36 KB
AddsRemovesAndFinalization 1000 1000 4,374.87 μs 32.330 μs 26.997 μs 4,367.65 μs 1000.0000 257.8125 93.7500 5556.88 KB

ExpireAfter_Cache_ForStream

Method addCount removeCount Mean Error StdDev Gen0 Gen1 Gen2 Allocated
AddsRemovesAndFinalization 1 0 14.61 μs 0.125 μs 0.117 μs 3.0823 - - 12.63 KB
AddsRemovesAndFinalization 1 1 16.24 μs 0.044 μs 0.034 μs 3.5400 - - 14.51 KB
AddsRemovesAndFinalization 10 0 39.72 μs 0.513 μs 0.455 μs 10.8032 - - 44.16 KB
AddsRemovesAndFinalization 10 1 54.53 μs 1.618 μs 4.458 μs 11.2305 - - 46.05 KB
AddsRemovesAndFinalization 10 10 69.80 μs 1.590 μs 4.688 μs 15.3809 - - 62.99 KB
AddsRemovesAndFinalization 100 0 315.51 μs 6.293 μs 12.855 μs 91.3086 2.4414 - 374.05 KB
AddsRemovesAndFinalization 100 1 312.69 μs 6.191 μs 7.370 μs 91.7969 0.9766 - 375.93 KB
AddsRemovesAndFinalization 100 10 322.75 μs 4.597 μs 3.839 μs 95.7031 10.2539 - 392.88 KB
AddsRemovesAndFinalization 100 100 465.99 μs 9.010 μs 10.375 μs 136.7188 32.2266 - 562.33 KB
AddsRemovesAndFinalization 1000 0 3,262.29 μs 54.860 μs 48.632 μs 632.8125 300.7813 58.5938 3675.08 KB
AddsRemovesAndFinalization 1000 1 3,479.48 μs 67.440 μs 90.030 μs 609.3750 175.7813 70.3125 3677.02 KB
AddsRemovesAndFinalization 1000 10 3,657.75 μs 72.995 μs 127.845 μs 617.1875 179.6875 70.3125 3693.96 KB
AddsRemovesAndFinalization 1000 100 3,770.49 μs 73.772 μs 95.925 μs 625.0000 171.8750 62.5000 3863.41 KB
AddsRemovesAndFinalization 1000 1000 4,970.16 μs 97.307 μs 133.195 μs 1000.0000 359.3750 54.6875 5557.89 KB

ExpireAfter_List

Method addCount removeCount Mean Error StdDev Gen0 Gen1 Allocated
AddsRemovesAndFinalization 1 0 11.98 μs 0.235 μs 0.209 μs 2.5330 - 10.39 KB
AddsRemovesAndFinalization 1 1 16.77 μs 0.335 μs 0.613 μs 3.2654 - 13.45 KB
AddsRemovesAndFinalization 10 0 41.23 μs 0.805 μs 0.927 μs 9.5215 - 38.92 KB
AddsRemovesAndFinalization 10 1 45.30 μs 0.842 μs 0.787 μs 10.0708 - 41.2 KB
AddsRemovesAndFinalization 10 10 69.46 μs 1.358 μs 1.453 μs 15.2588 - 62.52 KB
AddsRemovesAndFinalization 100 0 368.42 μs 7.350 μs 19.233 μs 78.6133 0.4883 322.5 KB
AddsRemovesAndFinalization 100 1 363.25 μs 7.058 μs 13.082 μs 79.1016 0.4883 324.78 KB
AddsRemovesAndFinalization 100 10 391.95 μs 7.740 μs 15.457 μs 84.4727 - 345.31 KB
AddsRemovesAndFinalization 100 100 615.78 μs 11.534 μs 27.188 μs 134.7656 0.9766 551.41 KB
AddsRemovesAndFinalization 1000 0 3,885.42 μs 76.978 μs 210.726 μs 531.2500 257.8125 3133.52 KB
AddsRemovesAndFinalization 1000 1 3,873.65 μs 77.240 μs 199.381 μs 539.0625 257.8125 3135.8 KB
AddsRemovesAndFinalization 1000 10 3,883.16 μs 76.748 μs 165.208 μs 546.8750 265.6250 3156.33 KB
AddsRemovesAndFinalization 1000 100 4,365.12 μs 85.675 μs 169.113 μs 617.1875 304.6875 3361.64 KB
AddsRemovesAndFinalization 1000 1000 7,250.23 μs 143.750 μs 403.090 μs 1000.0000 406.2500 5415.55 KB

@RolandPheasant RolandPheasant self-requested a review January 9, 2024 07:26
Copy link
Collaborator

@RolandPheasant RolandPheasant left a comment

Choose a reason for hiding this comment

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

This is clearly very well considered testing. I do not understand every detail atm, but the tests pass and that's good enough for me.

In the near future I will step into the tests to familiarise myself with the fine grained details.

@JakenVeina
Copy link
Collaborator Author

@RolandPheasant if you ever have the time, hit me up in slack and we can chat about it live.

…mprove functional coverage and cover various existing defects.
@JakenVeina JakenVeina merged commit 52f1b14 into main Jan 31, 2024
1 check passed
@JakenVeina JakenVeina deleted the expire-after-testing-rework branch January 31, 2024 22:23
Copy link

This pull request has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Feb 15, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Bug]: ExpireAfter might not expire the most recent item.
2 participants