-
Notifications
You must be signed in to change notification settings - Fork 840
Continuous Staking 0 - P-chain stakers property testing #1259
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
Closed
Closed
Changes from 1 commit
Commits
Show all changes
151 commits
Select commit
Hold shift + click to select a range
4aed100
Introduced Stakers model
abi87 94ddc25
introduced staker generator
abi87 43cf22a
stakers store model property tests
abi87 d0ea2a0
chain state property tests
abi87 245fa58
diff property tests + fix
abi87 2e9fd5f
reduced code duplication in tests
abi87 cbd246b
fix insert after delete delegator in diff
abi87 e7691da
extended test coverage
abi87 94ecc46
nit
abi87 cf91599
nit
abi87 382148d
cleanup
abi87 8c119d5
wip: stakers storage stateful testing
abi87 0e48267
wip: more stakers storage stateful testing
abi87 3bead39
wip: more stakers storage stateful testing
abi87 f6356f2
wip: more stakers storage stateful testing
abi87 13c5256
merge fix
abi87 610b14d
Add BLS benchmarks (#1318)
StephenButtolph 0c6064a
Encode codec version in merkledb (#1313)
ffc7e42
Expose consensus-app-concurrency (#1322)
StephenButtolph e8f6abe
Adjust Logic In Merkle DB History (#1310)
dboehm-avalabs 343693f
Fix Concurrency Bug In CommitToParent (#1320)
dboehm-avalabs f8eb5c3
Cleanup goroutines on health.Stop (#1325)
StephenButtolph 8441a3a
Update versions for v1.10.0 (#1282)
StephenButtolph 6958914
Add benchmark for gRPC GetValidatorSet (#1326)
hexfusion a924b94
Add checks for database being closed in merkledb; other nits (#1333)
7d6fda1
nit
abi87 5a57560
Merge branch 'dev' into stakers_model
abi87 4be61bb
Merge branch 'dev' into stakers_model
abi87 45cab8a
Merge branch 'dev' into stakers_model
abi87 4173c34
Merge branch 'dev' into stakers_model
abi87 fbd5048
Merge branch 'dev' into stakers_model
abi87 b3a2fad
Merge branch 'dev' into stakers_model
abi87 d6a65e6
Merge branch 'dev' into stakers_model
abi87 1f32388
Merge branch 'dev' into stakers_model
abi87 30ac9cb
Merge branch 'dev' into stakers_model
abi87 cd5cd2b
Merge branch 'dev' into stakers_model
abi87 adc5f40
docs
abi87 ab56c7f
nit
abi87 643e3b2
nits
abi87 9c4fa9a
cleanup
abi87 c47b72a
Merge branch 'dev' into stakers_model
abi87 06bbc5d
Merge branch 'dev' into stakers_model
abi87 be9a042
Merge branch 'dev' into stakers_model
abi87 273cab4
nit
abi87 2acb7ef
Merge branch 'dev' into stakers_model
abi87 8030940
Merge branch 'dev' into stakers_model
abi87 ff98262
Merge branch 'dev' into stakers_model
abi87 68dd0f5
Merge branch 'dev' into stakers_model
abi87 c63f3b5
Merge branch 'dev' into stakers_model
abi87 1e104db
nits
abi87 d6d0a83
nits
abi87 e8ad209
reduced code duplication in UTs
abi87 7ef586d
nits
abi87 7c69f5e
Merge branch 'dev' into stakers_model
abi87 42bf741
Merge branch 'dev' into stakers_model
abi87 b50c595
Merge branch 'dev' into stakers_model
abi87 1229d7c
Merge branch 'dev' into stakers_model
abi87 8f7d5b2
Merge branch 'dev' into stakers_model
abi87 33b7dd9
UT nit
abi87 340b25c
Merge branch 'dev' into stakers_model
abi87 2a57245
Merge branch 'dev' into stakers_model
abi87 40719d9
Merge branch 'dev' into stakers_model
abi87 054a4d2
Merge branch 'dev' into stakers_model
abi87 92db303
Merge branch 'dev' into stakers_model
abi87 5725cbc
Merge branch 'dev' into stakers_model
abi87 e2f4922
Merge branch 'dev' into stakers_model
abi87 6604f38
Merge branch 'dev' into stakers_model
abi87 c5941a8
appease linter
abi87 99041e5
Merge branch 'dev' into stakers_model
abi87 c47f410
Merge branch 'dev' into stakers_model
abi87 b6b8e9f
Merge branch 'dev' into stakers_model
abi87 8177cd0
Merge branch 'dev' into stakers_model
abi87 59de7f1
nit
abi87 73a8117
nit
abi87 6253862
Merge branch 'dev' into stakers_model
abi87 5fbeab9
nits
abi87 628b5c6
wip: restructuring stakers generators
abi87 07fdd6f
Merge branch 'dev' into stakers_model
abi87 564098a
nits
abi87 4ed0ec6
extended property tests with state rebuild checks
abi87 79f78c2
nits
abi87 e28dc21
Merge branch 'dev' into stakers_model
abi87 93eb13e
Merge branch 'dev' into stakers_model
abi87 157bc5f
Merge branch 'dev' into stakers_model
abi87 8ff47f5
Merge branch 'dev' into stakers_model
abi87 afb6296
skewed stakers property tests towards primary network + more fixes
abi87 f3281bc
fixed storage ops
abi87 4929d31
nit
abi87 52319b2
Merge branch 'dev' into stakers_model
abi87 1a136c5
nits
abi87 c220b51
fixed UTs data race
abi87 8fcfb76
nit
abi87 940dbe3
Merge branch 'dev' into stakers_model
abi87 1c5de0c
Merge branch 'dev' into stakers_model
abi87 44ed635
Merge branch 'dev' into stakers_model
abi87 62ab0b5
Merge branch 'dev' into stakers_model
abi87 90bbe95
Merge branch 'dev' into stakers_model
abi87 6ac3131
Merge branch 'dev' into stakers_model
abi87 bae62c9
Merge branch 'dev' into stakers_model
abi87 9a3e581
Merge branch 'dev' into stakers_model
abi87 d5177d9
Merge branch 'dev' into stakers_model
abi87 f006058
Merge branch 'dev' into stakers_model
abi87 ddb8cdb
Merge branch 'dev' into stakers_model
abi87 55587c8
Merge branch 'dev' into stakers_model
abi87 c85f8c1
Merge branch 'dev' into stakers_model
abi87 aa5e002
Merge branch 'dev' into stakers_model
abi87 10ac9cb
Merge branch 'dev' into stakers_model
abi87 4a8d459
Merge branch 'dev' into stakers_model
abi87 f3a9949
Merge branch 'dev' into stakers_model
abi87 122ae78
Merge branch 'dev' into stakers_model
abi87 cf49870
Merge branch 'dev' into stakers_model
abi87 9f38091
Merge branch 'dev' into stakers_model
abi87 87abc10
dropped unreachable code
abi87 5ad376f
Merge branch 'dev' into stakers_model
abi87 adac490
Merge branch 'dev' into stakers_model
abi87 b0fc46d
Merge branch 'dev' into stakers_model
abi87 00d63f9
Merge branch 'dev' into stakers_model
abi87 24aa9ca
Merge branch 'dev' into stakers_model
abi87 fe720f6
Merge branch 'dev' into stakers_model
abi87 c1216ab
Merge branch 'dev' into stakers_model
abi87 eecf423
Merge branch 'dev' into stakers_model
abi87 c2c6bc4
Merge branch 'dev' into stakers_model
abi87 ae79f52
Merge branch 'dev' into stakers_model
abi87 599ebaa
Merge branch 'dev' into stakers_model
abi87 7cd0606
appease linter
abi87 fd32154
Merge branch 'dev' into stakers_model
abi87 b5fa9a3
Merge branch 'dev' into stakers_model
abi87 3cbf840
Merge branch 'dev' into stakers_model
abi87 31c680a
Merge branch 'dev' into stakers_model
abi87 2f43c45
Merge branch 'dev' into stakers_model
abi87 84669e6
Merge branch 'dev' into stakers_model
abi87 e4d9f04
Merge branch 'dev' into stakers_model
abi87 0300469
Merge branch 'dev' into stakers_model
abi87 10f6c52
Merge branch 'dev' into stakers_model
abi87 b4346f7
Merge branch 'dev' into stakers_model
abi87 d57e692
Merge branch 'dev' into stakers_model
abi87 460046e
Merge branch 'dev' into stakers_model
abi87 2cac774
Merge branch 'dev' into stakers_model
abi87 801e2ea
fixed merge
abi87 2255c6e
Merge remote-tracking branch 'upstream/dev' into stakers_model
acd1e7f
Merge branch 'dev' into stakers_model
abi87 0427428
Merge branch 'dev' into stakers_model
abi87 d744fbf
Merge remote-tracking branch 'upstream/dev' into stakers_model
3c88bb7
Merge branch 'stakers_model' of github.com:ava-labs/avalanchego into …
c3750f3
Merge branch 'dev' into stakers_model
abi87 879e2b6
Merge branch 'dev' into stakers_model
abi87 9b9f802
Merge branch 'dev' into stakers_model
abi87 4392421
Merge branch 'dev' into stakers_model
abi87 267bd34
Merge branch 'dev' into stakers_model
abi87 f5cb8ab
Merge branch 'dev' into stakers_model
abi87 0c51db3
Merge branch 'dev' into stakers_model
abi87 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
nit
- Loading branch information
commit ab56c7f76b7eab3e28a58766b2e8785b29187cf5
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,83 @@ | ||
| // Copyright (C) 2019-2023, Ava Labs, Inc. All rights reserved. | ||
| // See the file LICENSE for licensing terms. | ||
|
|
||
| package state | ||
|
|
||
| import ( | ||
| "fmt" | ||
| "testing" | ||
|
|
||
| "github.com/ava-labs/avalanchego/ids" | ||
| "github.com/ava-labs/avalanchego/vms/platformvm/txs" | ||
| "github.com/leanovate/gopter" | ||
| "github.com/leanovate/gopter/prop" | ||
| ) | ||
|
|
||
| // TestGeneratedStakersValidity documents and verifies the | ||
| // invariants enforced by the staker generator | ||
| func TestGeneratedStakersValidity(t *testing.T) { | ||
darioush marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| properties := gopter.NewProperties(nil) | ||
|
|
||
| properties.Property("EndTime never before StartTime", prop.ForAll( | ||
| func(s Staker) string { | ||
| if s.EndTime.Before(s.StartTime) { | ||
| return fmt.Sprintf("startTime %v not before endTime %v, staker %v", | ||
| s.StartTime, s.EndTime, s) | ||
| } | ||
| return "" | ||
| }, | ||
| stakerGenerator(anyPriority, nil, nil), | ||
| )) | ||
|
|
||
| properties.Property("NextTime coherent with priority", prop.ForAll( | ||
| func(s Staker) string { | ||
| switch p := s.Priority; p { | ||
| case txs.PrimaryNetworkDelegatorApricotPendingPriority, | ||
| txs.PrimaryNetworkDelegatorBanffPendingPriority, | ||
| txs.SubnetPermissionlessDelegatorPendingPriority, | ||
| txs.PrimaryNetworkValidatorPendingPriority, | ||
| txs.SubnetPermissionlessValidatorPendingPriority, | ||
| txs.SubnetPermissionedValidatorPendingPriority: | ||
| if !s.NextTime.Equal(s.StartTime) { | ||
| return fmt.Sprintf("pending staker has nextTime %v different from startTime %v, staker %v", | ||
| s.NextTime, s.StartTime, s) | ||
| } | ||
| return "" | ||
|
|
||
| case txs.PrimaryNetworkDelegatorCurrentPriority, | ||
| txs.SubnetPermissionlessDelegatorCurrentPriority, | ||
| txs.PrimaryNetworkValidatorCurrentPriority, | ||
| txs.SubnetPermissionlessValidatorCurrentPriority, | ||
| txs.SubnetPermissionedValidatorCurrentPriority: | ||
| if !s.NextTime.Equal(s.EndTime) { | ||
| return fmt.Sprintf("current staker has nextTime %v different from endTime %v, staker %v", | ||
| s.NextTime, s.EndTime, s) | ||
| } | ||
| return "" | ||
|
|
||
| default: | ||
| return fmt.Sprintf("priority %v unhandled in test", p) | ||
| } | ||
| }, | ||
| stakerGenerator(anyPriority, nil, nil), | ||
| )) | ||
|
|
||
| subnetID := ids.GenerateTestID() | ||
| nodeID := ids.GenerateTestNodeID() | ||
| properties.Property("subnetID and nodeID set as specified", prop.ForAll( | ||
| func(s Staker) string { | ||
| if s.SubnetID != subnetID { | ||
| return fmt.Sprintf("unexpected subnetID, expected %v, got %v", | ||
| subnetID, s.SubnetID) | ||
| } | ||
| if s.NodeID != nodeID { | ||
| return fmt.Sprintf("unexpected nodeID, expected %v, got %v", | ||
| nodeID, s.NodeID) | ||
| } | ||
| return "" | ||
| }, | ||
| stakerGenerator(anyPriority, &subnetID, &nodeID), | ||
| )) | ||
|
|
||
| properties.TestingRun(t) | ||
| } | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.