github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/core/state/state_fuzz_test.go (about)

     1  package state
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	fuzz "github.com/google/gofuzz"
     8  	"github.com/prysmaticlabs/prysm/beacon-chain/state/v1"
     9  	ethpb "github.com/prysmaticlabs/prysm/proto/eth/v1alpha1"
    10  )
    11  
    12  func TestGenesisBeaconState_1000(t *testing.T) {
    13  	SkipSlotCache.Disable()
    14  	defer SkipSlotCache.Enable()
    15  	fuzzer := fuzz.NewWithSeed(0)
    16  	fuzzer.NilChance(0.1)
    17  	deposits := make([]*ethpb.Deposit, 300000)
    18  	var genesisTime uint64
    19  	eth1Data := &ethpb.Eth1Data{}
    20  	for i := 0; i < 1000; i++ {
    21  		fuzzer.Fuzz(&deposits)
    22  		fuzzer.Fuzz(&genesisTime)
    23  		fuzzer.Fuzz(eth1Data)
    24  		gs, err := GenesisBeaconState(context.Background(), deposits, genesisTime, eth1Data)
    25  		if err != nil {
    26  			if gs != nil {
    27  				t.Fatalf("Genesis state should be nil on err. found: %v on error: %v for inputs deposit: %v "+
    28  					"genesis time: %v eth1data: %v", gs, err, deposits, genesisTime, eth1Data)
    29  			}
    30  		}
    31  	}
    32  }
    33  
    34  func TestOptimizedGenesisBeaconState_1000(t *testing.T) {
    35  	SkipSlotCache.Disable()
    36  	defer SkipSlotCache.Enable()
    37  	fuzzer := fuzz.NewWithSeed(0)
    38  	fuzzer.NilChance(0.1)
    39  	var genesisTime uint64
    40  	preState := &v1.BeaconState{}
    41  	eth1Data := &ethpb.Eth1Data{}
    42  	for i := 0; i < 1000; i++ {
    43  		fuzzer.Fuzz(&genesisTime)
    44  		fuzzer.Fuzz(eth1Data)
    45  		fuzzer.Fuzz(preState)
    46  		gs, err := OptimizedGenesisBeaconState(genesisTime, preState, eth1Data)
    47  		if err != nil {
    48  			if gs != nil {
    49  				t.Fatalf("Genesis state should be nil on err. found: %v on error: %v for inputs genesis time: %v "+
    50  					"pre state: %v eth1data: %v", gs, err, genesisTime, preState, eth1Data)
    51  			}
    52  		}
    53  	}
    54  }
    55  
    56  func TestIsValidGenesisState_100000(t *testing.T) {
    57  	SkipSlotCache.Disable()
    58  	defer SkipSlotCache.Enable()
    59  	fuzzer := fuzz.NewWithSeed(0)
    60  	fuzzer.NilChance(0.1)
    61  	var chainStartDepositCount, currentTime uint64
    62  	for i := 0; i < 100000; i++ {
    63  		fuzzer.Fuzz(&chainStartDepositCount)
    64  		fuzzer.Fuzz(&currentTime)
    65  		IsValidGenesisState(chainStartDepositCount, currentTime)
    66  	}
    67  }