Skip to content

Commit

Permalink
Applies assertion funcs to blockchain tests (#6605)
Browse files Browse the repository at this point in the history
* applies assertion funcs to blockchain tests
* Merge branch 'master' into blockchain-apply-testutils-assertions
* gofmt
* Merge refs/heads/master into blockchain-apply-testutils-assertions
* Merge refs/heads/master into blockchain-apply-testutils-assertions
* Merge refs/heads/master into blockchain-apply-testutils-assertions
* Merge refs/heads/master into blockchain-apply-testutils-assertions
* Merge refs/heads/master into blockchain-apply-testutils-assertions
  • Loading branch information
farazdagi committed Jul 16, 2020
1 parent f6756bb commit deb025f
Show file tree
Hide file tree
Showing 10 changed files with 343 additions and 957 deletions.
3 changes: 3 additions & 0 deletions beacon-chain/blockchain/BUILD.bazel
Expand Up @@ -99,6 +99,7 @@ go_test(
"//shared/params:go_default_library",
"//shared/testutil:go_default_library",
"//shared/testutil/assert:go_default_library",
"//shared/testutil/require:go_default_library",
"@com_github_ethereum_go_ethereum//:go_default_library",
"@com_github_ethereum_go_ethereum//common:go_default_library",
"@com_github_ethereum_go_ethereum//core/types:go_default_library",
Expand Down Expand Up @@ -144,6 +145,8 @@ go_test(
"//shared/event:go_default_library",
"//shared/params:go_default_library",
"//shared/testutil:go_default_library",
"//shared/testutil/assert:go_default_library",
"//shared/testutil/require:go_default_library",
"@com_github_ethereum_go_ethereum//:go_default_library",
"@com_github_ethereum_go_ethereum//common:go_default_library",
"@com_github_ethereum_go_ethereum//core/types:go_default_library",
Expand Down
32 changes: 11 additions & 21 deletions beacon-chain/blockchain/chain_info_norace_test.go
Expand Up @@ -7,6 +7,7 @@ import (
ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1"
testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing"
"github.com/prysmaticlabs/prysm/beacon-chain/state/stategen"
"github.com/prysmaticlabs/prysm/shared/testutil/require"
)

func TestHeadSlot_DataRace(t *testing.T) {
Expand All @@ -15,9 +16,7 @@ func TestHeadSlot_DataRace(t *testing.T) {
beaconDB: db,
}
go func() {
if err := s.saveHead(context.Background(), [32]byte{}); err != nil {
t.Fatal(err)
}
require.NoError(t, s.saveHead(context.Background(), [32]byte{}))
}()
s.HeadSlot()
}
Expand All @@ -30,13 +29,10 @@ func TestHeadRoot_DataRace(t *testing.T) {
stateGen: stategen.New(db, sc),
}
go func() {
if err := s.saveHead(context.Background(), [32]byte{}); err != nil {
t.Fatal(err)
}
require.NoError(t, s.saveHead(context.Background(), [32]byte{}))
}()
if _, err := s.HeadRoot(context.Background()); err != nil {
t.Fatal(err)
}
_, err := s.HeadRoot(context.Background())
require.NoError(t, err)
}

func TestHeadBlock_DataRace(t *testing.T) {
Expand All @@ -47,13 +43,10 @@ func TestHeadBlock_DataRace(t *testing.T) {
stateGen: stategen.New(db, sc),
}
go func() {
if err := s.saveHead(context.Background(), [32]byte{}); err != nil {
t.Fatal(err)
}
require.NoError(t, s.saveHead(context.Background(), [32]byte{}))
}()
if _, err := s.HeadBlock(context.Background()); err != nil {
t.Fatal(err)
}
_, err := s.HeadBlock(context.Background())
require.NoError(t, err)
}

func TestHeadState_DataRace(t *testing.T) {
Expand All @@ -63,11 +56,8 @@ func TestHeadState_DataRace(t *testing.T) {
stateGen: stategen.New(db, sc),
}
go func() {
if err := s.saveHead(context.Background(), [32]byte{}); err != nil {
t.Fatal(err)
}
require.NoError(t, s.saveHead(context.Background(), [32]byte{}))
}()
if _, err := s.HeadState(context.Background()); err != nil {
t.Fatal(err)
}
_, err := s.HeadState(context.Background())
require.NoError(t, err)
}
76 changes: 20 additions & 56 deletions beacon-chain/blockchain/chain_info_test.go
Expand Up @@ -3,7 +3,6 @@ package blockchain
import (
"bytes"
"context"
"reflect"
"testing"
"time"

Expand All @@ -13,6 +12,8 @@ import (
"github.com/prysmaticlabs/prysm/beacon-chain/state"
pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1"
"github.com/prysmaticlabs/prysm/shared/params"
"github.com/prysmaticlabs/prysm/shared/testutil/assert"
"github.com/prysmaticlabs/prysm/shared/testutil/require"
)

// Ensure Service implements chain info interface.
Expand All @@ -32,9 +33,7 @@ func TestHeadRoot_Nil(t *testing.T) {
db, sc := testDB.SetupDB(t)
c := setupBeaconChain(t, db, sc)
headRoot, err := c.HeadRoot(context.Background())
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
if !bytes.Equal(headRoot, params.BeaconConfig().ZeroHash[:]) {
t.Error("Incorrect pre chain start value")
}
Expand All @@ -47,9 +46,7 @@ func TestFinalizedCheckpt_CanRetrieve(t *testing.T) {
c := setupBeaconChain(t, db, sc)
c.finalizedCheckpt = cp

if c.FinalizedCheckpt().Epoch != cp.Epoch {
t.Errorf("Finalized epoch at genesis should be %d, got: %d", cp.Epoch, c.FinalizedCheckpt().Epoch)
}
assert.Equal(t, cp.Epoch, c.FinalizedCheckpt().Epoch, "Unexpected finalized epoch")
}

func TestFinalizedCheckpt_GenesisRootOk(t *testing.T) {
Expand All @@ -73,9 +70,7 @@ func TestCurrentJustifiedCheckpt_CanRetrieve(t *testing.T) {
c := setupBeaconChain(t, db, sc)
c.justifiedCheckpt = cp

if c.CurrentJustifiedCheckpt().Epoch != cp.Epoch {
t.Errorf("Current Justifiied epoch at genesis should be %d, got: %d", cp.Epoch, c.CurrentJustifiedCheckpt().Epoch)
}
assert.Equal(t, cp.Epoch, c.CurrentJustifiedCheckpt().Epoch, "Unexpected justified epoch")
}

func TestJustifiedCheckpt_GenesisRootOk(t *testing.T) {
Expand All @@ -99,9 +94,7 @@ func TestPreviousJustifiedCheckpt_CanRetrieve(t *testing.T) {
c := setupBeaconChain(t, db, sc)
c.prevJustifiedCheckpt = cp

if c.PreviousJustifiedCheckpt().Epoch != cp.Epoch {
t.Errorf("Previous Justifiied epoch at genesis should be %d, got: %d", cp.Epoch, c.PreviousJustifiedCheckpt().Epoch)
}
assert.Equal(t, cp.Epoch, c.PreviousJustifiedCheckpt().Epoch, "Unexpected previous justified epoch")
}

func TestPrevJustifiedCheckpt_GenesisRootOk(t *testing.T) {
Expand All @@ -125,49 +118,34 @@ func TestHeadSlot_CanRetrieve(t *testing.T) {
t.Fatal(err)
}
c.head = &head{slot: 100, state: s}
if c.HeadSlot() != 100 {
t.Errorf("Wanted head slot: %d, got: %d", 100, c.HeadSlot())
}
assert.Equal(t, uint64(100), c.headSlot())
}

func TestHeadRoot_CanRetrieve(t *testing.T) {
c := &Service{}
c.head = &head{root: [32]byte{'A'}}
if [32]byte{'A'} != c.headRoot() {
t.Errorf("Wanted head root: %v, got: %d", []byte{'A'}, c.headRoot())
}
assert.Equal(t, [32]byte{'A'}, c.headRoot())
}

func TestHeadBlock_CanRetrieve(t *testing.T) {
b := &ethpb.SignedBeaconBlock{Block: &ethpb.BeaconBlock{Slot: 1}}
s, err := state.InitializeFromProto(&pb.BeaconState{})
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
c := &Service{}
c.head = &head{block: b, state: s}

recevied, err := c.HeadBlock(context.Background())
if err != nil {
t.Fatal(err)
}

if !reflect.DeepEqual(b, recevied) {
t.Error("incorrect head block received")
}
require.NoError(t, err)
assert.DeepEqual(t, b, recevied, "Incorrect head block received")
}

func TestHeadState_CanRetrieve(t *testing.T) {
s, err := state.InitializeFromProto(&pb.BeaconState{Slot: 2, GenesisValidatorsRoot: params.BeaconConfig().ZeroHash[:]})
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
c := &Service{}
c.head = &head{state: s}
headState, err := c.HeadState(context.Background())
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
if !proto.Equal(s.InnerStateUnsafe(), headState.InnerStateUnsafe()) {
t.Error("incorrect head state received")
}
Expand All @@ -176,17 +154,13 @@ func TestHeadState_CanRetrieve(t *testing.T) {
func TestGenesisTime_CanRetrieve(t *testing.T) {
c := &Service{genesisTime: time.Unix(999, 0)}
wanted := time.Unix(999, 0)
if c.GenesisTime() != wanted {
t.Error("Did not get wanted genesis time")
}
assert.Equal(t, wanted, c.GenesisTime(), "Did not get wanted genesis time")
}

func TestCurrentFork_CanRetrieve(t *testing.T) {
f := &pb.Fork{Epoch: 999}
s, err := state.InitializeFromProto(&pb.BeaconState{Fork: f})
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
c := &Service{}
c.head = &head{state: s}
if !proto.Equal(c.CurrentFork(), f) {
Expand All @@ -197,34 +171,24 @@ func TestCurrentFork_CanRetrieve(t *testing.T) {
func TestGenesisValidatorRoot_CanRetrieve(t *testing.T) {
// Should not panic if head state is nil.
c := &Service{}
if c.GenesisValidatorRoot() != [32]byte{} {
t.Error("Did not get correct genesis validator root")
}
assert.Equal(t, [32]byte{}, c.GenesisValidatorRoot(), "Did not get correct genesis validator root")

s, err := state.InitializeFromProto(&pb.BeaconState{GenesisValidatorsRoot: []byte{'a'}})
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
c.head = &head{state: s}
if c.GenesisValidatorRoot() != [32]byte{'a'} {
t.Error("Did not get correct genesis validator root")
}
assert.Equal(t, [32]byte{'a'}, c.GenesisValidatorRoot(), "Did not get correct genesis validator root")
}

func TestHeadETH1Data_Nil(t *testing.T) {
db, sc := testDB.SetupDB(t)
c := setupBeaconChain(t, db, sc)
if !reflect.DeepEqual(c.HeadETH1Data(), &ethpb.Eth1Data{}) {
t.Error("Incorrect pre chain start value")
}
assert.DeepEqual(t, &ethpb.Eth1Data{}, c.HeadETH1Data(), "Incorrect pre chain start value")
}

func TestHeadETH1Data_CanRetrieve(t *testing.T) {
d := &ethpb.Eth1Data{DepositCount: 999}
s, err := state.InitializeFromProto(&pb.BeaconState{Eth1Data: d})
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
c := &Service{}
c.head = &head{state: s}
if !proto.Equal(c.HeadETH1Data(), d) {
Expand Down

0 comments on commit deb025f

Please sign in to comment.