Skip to content

Commit

Permalink
Merge branch 'development' into eclesio/solve-chain_subscribeNewHeads…
Browse files Browse the repository at this point in the history
…-flaky-test
  • Loading branch information
EclesioMeloJunior committed Mar 1, 2023
2 parents 1a96788 + fe4e1a9 commit 09cee0e
Show file tree
Hide file tree
Showing 10 changed files with 202 additions and 123 deletions.
2 changes: 1 addition & 1 deletion devnet/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ require (

require (
github.com/jmespath/go-jmespath v0.4.0 // indirect
golang.org/x/sys v0.0.0-20210510120138-977fb7262007 // indirect
golang.org/x/sys v0.1.0 // indirect
)
3 changes: 2 additions & 1 deletion devnet/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,9 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
Expand Down
18 changes: 12 additions & 6 deletions lib/babe/babe_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func TestService_ProducesBlocks(t *testing.T) {
}

gen, genTrie, genHeader := newWestendDevGenesisWithTrieAndHeader(t)
babeService := createTestService(t, cfg, gen, genTrie, genHeader)
babeService := createTestService(t, cfg, gen, genTrie, genHeader, nil)

err := babeService.Start()
require.NoError(t, err)
Expand Down Expand Up @@ -90,17 +90,23 @@ func TestService_GetAuthorityIndex(t *testing.T) {
}

func TestStartAndStop(t *testing.T) {
cfg := ServiceConfig{
Lead: true,
}
gen, genTrie, genHeader := newWestendLocalGenesisWithTrieAndHeader(t)
bs := createTestService(t, ServiceConfig{}, gen, genTrie, genHeader)
bs := createTestService(t, cfg, gen, genTrie, genHeader, nil)
err := bs.Start()
require.NoError(t, err)
err = bs.Stop()
require.NoError(t, err)
}

func TestService_PauseAndResume(t *testing.T) {
cfg := ServiceConfig{
Lead: true,
}
genesis, genesisTrie, genesisHeader := newWestendLocalGenesisWithTrieAndHeader(t)
babeService := createTestService(t, ServiceConfig{}, genesis, genesisTrie, genesisHeader)
babeService := createTestService(t, cfg, genesis, genesisTrie, genesisHeader, nil)
err := babeService.Start()
require.NoError(t, err)
time.Sleep(time.Second)
Expand Down Expand Up @@ -136,7 +142,7 @@ func TestService_HandleSlotWithLaggingSlot(t *testing.T) {
}

genesis, genesisTrie, genesisHeader := newWestendDevGenesisWithTrieAndHeader(t)
babeService := createTestService(t, cfg, genesis, genesisTrie, genesisHeader)
babeService := createTestService(t, cfg, genesis, genesisTrie, genesisHeader, nil)

err := babeService.Start()
require.NoError(t, err)
Expand Down Expand Up @@ -238,7 +244,7 @@ func TestService_HandleSlotWithSameSlot(t *testing.T) {
}

genBob, genTrieBob, genHeaderBob := newWestendDevGenesisWithTrieAndHeader(t)
babeServiceBob := createTestService(t, cfgBob, genBob, genTrieBob, genHeaderBob)
babeServiceBob := createTestService(t, cfgBob, genBob, genTrieBob, genHeaderBob, nil)

err := babeServiceBob.Start()
require.NoError(t, err)
Expand All @@ -259,7 +265,7 @@ func TestService_HandleSlotWithSameSlot(t *testing.T) {
time.Sleep(babeServiceBob.constants.slotDuration)

genAlice, genTrieAlice, genHeaderAlice := newWestendDevGenesisWithTrieAndHeader(t)
babeServiceAlice := createTestService(t, cfgAlice, genAlice, genTrieAlice, genHeaderAlice)
babeServiceAlice := createTestService(t, cfgAlice, genAlice, genTrieAlice, genHeaderAlice, nil)

// Add block created by Bob to Alice
err = babeServiceAlice.blockState.AddBlock(block)
Expand Down
10 changes: 5 additions & 5 deletions lib/babe/build_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ func TestSeal(t *testing.T) {

func TestBuildBlock_ok(t *testing.T) {
genesis, genesisTrie, genesisHeader := newWestendDevGenesisWithTrieAndHeader(t)
babeService := createTestService(t, ServiceConfig{}, genesis, genesisTrie, genesisHeader)
babeService := createTestService(t, ServiceConfig{}, genesis, genesisTrie, genesisHeader, nil)

parentHash := babeService.blockState.GenesisHash()
bestBlockHash := babeService.blockState.BestBlockHash()
Expand Down Expand Up @@ -95,7 +95,7 @@ func TestBuildBlock_ok(t *testing.T) {

func TestApplyExtrinsicAfterFirstBlockFinalized(t *testing.T) {
genesis, genesisTrie, genesisHeader := newWestendDevGenesisWithTrieAndHeader(t)
babeService := createTestService(t, ServiceConfig{}, genesis, genesisTrie, genesisHeader)
babeService := createTestService(t, ServiceConfig{}, genesis, genesisTrie, genesisHeader, nil)
const authorityIndex = 0

bestBlockHash := babeService.blockState.BestBlockHash()
Expand Down Expand Up @@ -176,7 +176,7 @@ func TestBuildAndApplyExtrinsic(t *testing.T) {
require.NoError(t, err)

genesis, genesisTrie, genesisHeader := newWestendLocalGenesisWithTrieAndHeader(t)
babeService := createTestService(t, ServiceConfig{}, genesis, genesisTrie, genesisHeader)
babeService := createTestService(t, ServiceConfig{}, genesis, genesisTrie, genesisHeader, nil)

header := types.NewHeader(genesisHeader.Hash(), common.Hash{}, common.Hash{}, 1, types.NewDigest())
bestBlockHash := babeService.blockState.BestBlockHash()
Expand Down Expand Up @@ -252,7 +252,7 @@ func TestBuildAndApplyExtrinsic_InvalidPayment(t *testing.T) {
require.NoError(t, err)

genesis, genesisTrie, genesisHeader := newWestendDevGenesisWithTrieAndHeader(t)
babeService := createTestService(t, ServiceConfig{}, genesis, genesisTrie, genesisHeader)
babeService := createTestService(t, ServiceConfig{}, genesis, genesisTrie, genesisHeader, nil)

header := types.NewHeader(genesisHeader.Hash(), common.Hash{}, common.Hash{}, 1, types.NewDigest())
bestBlockHash := babeService.blockState.BestBlockHash()
Expand Down Expand Up @@ -332,7 +332,7 @@ func TestBuildBlockTimeMonitor(t *testing.T) {
metrics.Unregister(buildBlockTimer)

genesis, genesisTrie, genesisHeader := newWestendDevGenesisWithTrieAndHeader(t)
babeService := createTestService(t, ServiceConfig{}, genesis, genesisTrie, genesisHeader)
babeService := createTestService(t, ServiceConfig{}, genesis, genesisTrie, genesisHeader, nil)

parent, err := babeService.blockState.BestBlockHeader()
require.NoError(t, err)
Expand Down
8 changes: 4 additions & 4 deletions lib/babe/epoch_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import (

func TestInitiateEpoch_Epoch0(t *testing.T) {
genesis, genesisTrie, genesisHeader := newWestendLocalGenesisWithTrieAndHeader(t)
babeService := createTestService(t, ServiceConfig{}, genesis, genesisTrie, genesisHeader)
babeService := createTestService(t, ServiceConfig{}, genesis, genesisTrie, genesisHeader, nil)
babeService.constants.epochLength = 20
startSlot := uint64(1000)

Expand All @@ -36,7 +36,7 @@ func TestInitiateEpoch_Epoch1(t *testing.T) {
Authority: true,
}
genesis, genesisTrie, genesisHeader := newWestendLocalGenesisWithTrieAndHeader(t)
babeService := createTestService(t, cfg, genesis, genesisTrie, genesisHeader)
babeService := createTestService(t, cfg, genesis, genesisTrie, genesisHeader, nil)
babeService.constants.epochLength = 10

state.AddBlocksToState(t, babeService.blockState.(*state.BlockState), 1, false)
Expand All @@ -57,7 +57,7 @@ func TestInitiateEpoch_Epoch1(t *testing.T) {
require.NoError(t, err)

expected := &epochData{
randomness: genesisBABEConfig.Randomness,
randomness: [32]byte{},
authorities: []types.Authority{auth},
authorityIndex: 0,
threshold: ed.threshold,
Expand Down Expand Up @@ -137,7 +137,7 @@ func TestInitiateEpoch_Epoch1(t *testing.T) {

func TestIncrementEpoch(t *testing.T) {
genesis, genesisTrie, genesisHeader := newWestendLocalGenesisWithTrieAndHeader(t)
bs := createTestService(t, ServiceConfig{}, genesis, genesisTrie, genesisHeader)
bs := createTestService(t, ServiceConfig{}, genesis, genesisTrie, genesisHeader, nil)

next, err := bs.incrementEpoch()
require.NoError(t, err)
Expand Down
24 changes: 10 additions & 14 deletions lib/babe/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,20 +42,10 @@ var (
Number: 0,
Digest: types.NewDigest(),
}

genesisBABEConfig = &types.BabeConfiguration{
SlotDuration: 1000,
EpochLength: 200,
C1: 1,
C2: 4,
GenesisAuthorities: []types.AuthorityRaw{},
Randomness: [32]byte{},
SecondarySlots: 0,
}
)

// NewTestService creates a new test core service
func NewTestService(t *testing.T, cfg *core.Config, genesis genesis.Genesis,
// newTestCoreService creates a new test core service
func newTestCoreService(t *testing.T, cfg *core.Config, genesis genesis.Genesis,
genesisTrie trie.Trie, genesisHeader types.Header) *core.Service {
t.Helper()
ctrl := gomock.NewController(t)
Expand Down Expand Up @@ -163,7 +153,7 @@ func NewTestService(t *testing.T, cfg *core.Config, genesis genesis.Genesis,
}

func createTestService(t *testing.T, cfg ServiceConfig, genesis genesis.Genesis,
genesisTrie trie.Trie, genesisHeader types.Header) *Service {
genesisTrie trie.Trie, genesisHeader types.Header, babeConfig *types.BabeConfiguration) *Service {
wasmer.DefaultTestLogLvl = log.Error

if cfg.Keypair == nil {
Expand Down Expand Up @@ -204,6 +194,11 @@ func createTestService(t *testing.T, cfg ServiceConfig, genesis genesis.Genesis,
_ = dbSrv.Stop()
})

// Allow for epoch state to be made from custom babe config
if babeConfig != nil {
dbSrv.Epoch, err = state.NewEpochStateFromGenesis(dbSrv.DB(), dbSrv.Block, babeConfig)
require.NoError(t, err)
}
cfg.BlockState = dbSrv.Block
cfg.StorageState = dbSrv.Storage
cfg.EpochState = dbSrv.Epoch
Expand All @@ -224,6 +219,7 @@ func createTestService(t *testing.T, cfg ServiceConfig, genesis genesis.Genesis,
require.NoError(t, err)
cfg.BlockState.(*state.BlockState).StoreRuntime(cfg.BlockState.BestBlockHash(), runtime)

cfg.Authority = true
cfg.IsDev = true
cfg.LogLvl = defaultTestLogLvl
babeService, err := NewService(&cfg)
Expand All @@ -244,7 +240,7 @@ func createTestService(t *testing.T, cfg ServiceConfig, genesis genesis.Genesis,
CodeSubstitutes: make(map[common.Hash]string),
}

babeService.blockImportHandler = NewTestService(t, &coreConfig, genesis,
babeService.blockImportHandler = newTestCoreService(t, &coreConfig, genesis,
genesisTrie, genesisHeader)
}

Expand Down
14 changes: 14 additions & 0 deletions lib/babe/mock_state_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions lib/babe/state.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ type EpochState interface {
GetSlotDuration() (time.Duration, error)
SetCurrentEpoch(epoch uint64) error
GetCurrentEpoch() (uint64, error)
SetEpochData(epoch uint64, info *types.EpochData) error

GetEpochData(epoch uint64, header *types.Header) (*types.EpochData, error)
GetConfigData(epoch uint64, header *types.Header) (*types.ConfigData, error)
Expand Down
3 changes: 1 addition & 2 deletions lib/babe/verify.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ type onDisabledInfo struct {
}

// VerificationManager deals with verification that a BABE block producer was authorized to produce a given block.
// It trakcs the BABE epoch data that is needed for verification.
// It tracks the BABE epoch data that is needed for verification.
type VerificationManager struct {
lock sync.RWMutex
blockState BlockState
Expand Down Expand Up @@ -357,7 +357,6 @@ func (b *verifier) submitAndReportEquivocation(
}

offenderPublicKey := b.authorities[authorityIndex].ToRaw().Key

keyOwnershipProof, err := runtimeInstance.BabeGenerateKeyOwnershipProof(slot, offenderPublicKey)
if err != nil {
return fmt.Errorf("getting key ownership proof from runtime: %w", err)
Expand Down
Loading

0 comments on commit 09cee0e

Please sign in to comment.