mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-06 01:32:18 +00:00
1b5b8a57e0
* Update io_kubernetes_build commit hash to 1246899 * Update dependency build_bazel_rules_nodejs to v0.33.1 * Update dependency com_github_hashicorp_golang_lru to v0.5.1 * Update libp2p * Update io_bazel_rules_k8s commit hash to e68d5d7 * Starting to remove old protos * Bazel build proto passes * Fixing pb version * Cleaned up core package * Fixing tests * 6 tests failing * Update proto bugs * Fixed incorrect validator ordering proto * Sync with master * Update go-ssz commit * Removed bad copies from v1alpha1 folder * add json spec json to pb handler * add nested proto example * proto/testing test works * fix refactoring build failures * use merged ssz * push latest changes * used forked json encoding * used forked json encoding * fix warning * fix build issues * fix test and lint * fix build * lint
103 lines
3.3 KiB
Go
103 lines
3.3 KiB
Go
package helpers_test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
|
"github.com/prysmaticlabs/prysm/beacon-chain/internal"
|
|
pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1"
|
|
ethpb "github.com/prysmaticlabs/prysm/proto/eth/v1alpha1"
|
|
"github.com/prysmaticlabs/prysm/shared/params"
|
|
"github.com/prysmaticlabs/prysm/shared/testutil"
|
|
)
|
|
|
|
func TestAttestationDataSlot_OK(t *testing.T) {
|
|
db := internal.SetupDB(t)
|
|
defer internal.TeardownDB(t, db)
|
|
deposits, _ := testutil.SetupInitialDeposits(t, 100, false)
|
|
if err := db.InitializeState(context.Background(), uint64(0), deposits, nil); err != nil {
|
|
t.Fatalf("Could not initialize beacon state to disk: %v", err)
|
|
}
|
|
beaconState, err := db.HeadState(context.Background())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
offset := uint64(0)
|
|
committeeCount, _ := helpers.CommitteeCount(beaconState, 0)
|
|
expect := offset / (committeeCount / params.BeaconConfig().SlotsPerEpoch)
|
|
attSlot, err := helpers.AttestationDataSlot(beaconState, ðpb.AttestationData{
|
|
Target: ðpb.Checkpoint{Epoch: 0},
|
|
Crosslink: ðpb.Crosslink{
|
|
Shard: 0,
|
|
},
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if attSlot != expect {
|
|
t.Errorf("Expected %d, received %d", expect, attSlot)
|
|
}
|
|
}
|
|
|
|
func TestAttestationDataSlot_ReturnsErrorWithNilState(t *testing.T) {
|
|
s, err := helpers.AttestationDataSlot(nil /*state*/, ðpb.AttestationData{
|
|
Target: ðpb.Checkpoint{Epoch: 0},
|
|
Crosslink: ðpb.Crosslink{
|
|
Shard: 0,
|
|
},
|
|
})
|
|
if err != helpers.ErrAttestationDataSlotNilState {
|
|
t.Errorf("Expected an error, but received %v", err)
|
|
t.Logf("attestation slot=%v", s)
|
|
}
|
|
}
|
|
|
|
func TestAttestationDataSlot_ReturnsErrorWithNilData(t *testing.T) {
|
|
s, err := helpers.AttestationDataSlot(&pb.BeaconState{}, nil /*data*/)
|
|
if err != helpers.ErrAttestationDataSlotNilData {
|
|
t.Errorf("Expected an error, but received %v", err)
|
|
t.Logf("attestation slot=%v", s)
|
|
}
|
|
}
|
|
|
|
func TestAttestationDataSlot_ReturnsErrorWithErroneousTargetEpoch(t *testing.T) {
|
|
db := internal.SetupDB(t)
|
|
defer internal.TeardownDB(t, db)
|
|
deposits, _ := testutil.SetupInitialDeposits(t, 100, false)
|
|
if err := db.InitializeState(context.Background(), uint64(0), deposits, nil); err != nil {
|
|
t.Fatalf("Could not initialize beacon state to disk: %v", err)
|
|
}
|
|
beaconState, err := db.HeadState(context.Background())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
s, err := helpers.AttestationDataSlot(beaconState, ðpb.AttestationData{
|
|
Target: ðpb.Checkpoint{Epoch: 1<<63 - 1 /* Far future epoch */},
|
|
})
|
|
if err == nil {
|
|
t.Error("Expected an error, but received nil")
|
|
t.Logf("attestation slot=%v", s)
|
|
}
|
|
}
|
|
|
|
func TestAttestationDataSlot_ReturnsErrorWhenTargetEpochLessThanCurrentEpoch(t *testing.T) {
|
|
db := internal.SetupDB(t)
|
|
defer internal.TeardownDB(t, db)
|
|
deposits, _ := testutil.SetupInitialDeposits(t, 100, false)
|
|
if err := db.InitializeState(context.Background(), uint64(0), deposits, nil); err != nil {
|
|
t.Fatalf("Could not initialize beacon state to disk: %v", err)
|
|
}
|
|
beaconState, err := db.HeadState(context.Background())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
s, err := helpers.AttestationDataSlot(beaconState, ðpb.AttestationData{
|
|
Target: ðpb.Checkpoint{Epoch: 2},
|
|
})
|
|
if err == nil {
|
|
t.Error("Expected an error, but received nil")
|
|
t.Logf("attestation slot=%v", s)
|
|
}
|
|
}
|