mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-09 15:37:56 -05:00
refactoring: Deduplicate code (#10090)
* Deduplicate sync committee indices from state * Deduplicate code in listblocks RPC endpoints, which only differ in response object * Deduplicate test code in config/fieldparams * Delete stale benchmark target. This is already included in go_default_test * deduplicate test cases in TestIsSlashableValidator_OK and fix blst BUILD file * Deduplicate TestStore_IsFinalizedChildBlock * Revert crypto/bls/blst/BUILD.bazel * Deduplicate TestStore_SaveBlock_NoDuplicates * Use a generic wrapper for beacon blocks to streamline test * Deduplicate TestStore_BlocksCRUD * Deduplicate TestStore_BlocksHandleZeroCase * Deduplicate TestStore_BlocksBatchDelete * deduplicate TestStore_BlocksHandleInvalidEndSlot * Deduplicate TestStore_BlocksCRUD_NoCache * Deduplicate common block test setup. Make TestStore_Blocks_FiltersCorrectly support multiple forks in test * Deduplicate the rest of these tests * lint * Deprecation warning * Add test for WrappedSignedBeaconBlock * Test error path
This commit is contained in:
@@ -131,94 +131,19 @@ func TestIsSlashableValidator_OK(t *testing.T) {
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
slashableValidator := IsSlashableValidator(test.validator.ActivationEpoch,
|
||||
test.validator.WithdrawableEpoch, test.validator.Slashed, test.epoch)
|
||||
assert.Equal(t, test.slashable, slashableValidator, "Expected active validator slashable to be %t", test.slashable)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestIsSlashableValidatorUsingTrie_OK(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
validator *ethpb.Validator
|
||||
epoch types.Epoch
|
||||
slashable bool
|
||||
}{
|
||||
{
|
||||
name: "Unset withdrawable, slashable",
|
||||
validator: ðpb.Validator{
|
||||
WithdrawableEpoch: params.BeaconConfig().FarFutureEpoch,
|
||||
},
|
||||
epoch: 0,
|
||||
slashable: true,
|
||||
},
|
||||
{
|
||||
name: "before withdrawable, slashable",
|
||||
validator: ðpb.Validator{
|
||||
WithdrawableEpoch: 5,
|
||||
},
|
||||
epoch: 3,
|
||||
slashable: true,
|
||||
},
|
||||
{
|
||||
name: "inactive, not slashable",
|
||||
validator: ðpb.Validator{
|
||||
ActivationEpoch: 5,
|
||||
WithdrawableEpoch: params.BeaconConfig().FarFutureEpoch,
|
||||
},
|
||||
epoch: 2,
|
||||
slashable: false,
|
||||
},
|
||||
{
|
||||
name: "after withdrawable, not slashable",
|
||||
validator: ðpb.Validator{
|
||||
WithdrawableEpoch: 3,
|
||||
},
|
||||
epoch: 3,
|
||||
slashable: false,
|
||||
},
|
||||
{
|
||||
name: "slashed and withdrawable, not slashable",
|
||||
validator: ðpb.Validator{
|
||||
Slashed: true,
|
||||
ExitEpoch: params.BeaconConfig().FarFutureEpoch,
|
||||
WithdrawableEpoch: 1,
|
||||
},
|
||||
epoch: 2,
|
||||
slashable: false,
|
||||
},
|
||||
{
|
||||
name: "slashed, not slashable",
|
||||
validator: ðpb.Validator{
|
||||
Slashed: true,
|
||||
ExitEpoch: params.BeaconConfig().FarFutureEpoch,
|
||||
WithdrawableEpoch: params.BeaconConfig().FarFutureEpoch,
|
||||
},
|
||||
epoch: 2,
|
||||
slashable: false,
|
||||
},
|
||||
{
|
||||
name: "inactive and slashed, not slashable",
|
||||
validator: ðpb.Validator{
|
||||
Slashed: true,
|
||||
ActivationEpoch: 4,
|
||||
ExitEpoch: params.BeaconConfig().FarFutureEpoch,
|
||||
WithdrawableEpoch: params.BeaconConfig().FarFutureEpoch,
|
||||
},
|
||||
epoch: 2,
|
||||
slashable: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
beaconState, err := v1.InitializeFromProto(ðpb.BeaconState{Validators: []*ethpb.Validator{test.validator}})
|
||||
require.NoError(t, err)
|
||||
readOnlyVal, err := beaconState.ValidatorAtIndexReadOnly(0)
|
||||
require.NoError(t, err)
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
slashableValidator := IsSlashableValidatorUsingTrie(readOnlyVal, test.epoch)
|
||||
assert.Equal(t, test.slashable, slashableValidator, "Expected active validator slashable to be %t", test.slashable)
|
||||
t.Run("without trie", func(t *testing.T) {
|
||||
slashableValidator := IsSlashableValidator(test.validator.ActivationEpoch,
|
||||
test.validator.WithdrawableEpoch, test.validator.Slashed, test.epoch)
|
||||
assert.Equal(t, test.slashable, slashableValidator, "Expected active validator slashable to be %t", test.slashable)
|
||||
})
|
||||
t.Run("with trie", func(t *testing.T) {
|
||||
beaconState, err := v1.InitializeFromProto(ðpb.BeaconState{Validators: []*ethpb.Validator{test.validator}})
|
||||
require.NoError(t, err)
|
||||
readOnlyVal, err := beaconState.ValidatorAtIndexReadOnly(0)
|
||||
require.NoError(t, err)
|
||||
slashableValidator := IsSlashableValidatorUsingTrie(readOnlyVal, test.epoch)
|
||||
assert.Equal(t, test.slashable, slashableValidator, "Expected active validator slashable to be %t", test.slashable)
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user