@ -107,12 +107,12 @@ func TestABCIResponsesSaveLoad1(t *testing.T) {
require . NoError ( t , err )
require . NoError ( t , err )
abciResponses := new ( tmstate . ABCIResponses )
abciResponses := new ( tmstate . ABCIResponses )
dtxs := make ( [ ] * abci . ResponseDeliverTx , 2 )
dtxs := make ( [ ] * abci . ExecTxResult , 2 )
abciResponses . FinalizeBlock = new ( abci . ResponseFinalizeBlock )
abciResponses . FinalizeBlock = new ( abci . ResponseFinalizeBlock )
abciResponses . FinalizeBlock . Txs = dtxs
abciResponses . FinalizeBlock . TxResult s = dtxs
abciResponses . FinalizeBlock . Txs [ 0 ] = & abci . ResponseDeliverTx { Data : [ ] byte ( "foo" ) , Events : nil }
abciResponses . FinalizeBlock . Txs [ 1 ] = & abci . ResponseDeliverTx { Data : [ ] byte ( "bar" ) , Log : "ok" , Events : nil }
abciResponses . FinalizeBlock . TxResult s [ 0 ] = & abci . ExecTxResult { Data : [ ] byte ( "foo" ) , Events : nil }
abciResponses . FinalizeBlock . TxResult s [ 1 ] = & abci . ExecTxResult { Data : [ ] byte ( "bar" ) , Log : "ok" , Events : nil }
pbpk , err := encoding . PubKeyToProto ( ed25519 . GenPrivKey ( ) . PubKey ( ) )
pbpk , err := encoding . PubKeyToProto ( ed25519 . GenPrivKey ( ) . PubKey ( ) )
require . NoError ( t , err )
require . NoError ( t , err )
abciResponses . FinalizeBlock . ValidatorUpdates = [ ] abci . ValidatorUpdate { { PubKey : pbpk , Power : 10 } }
abciResponses . FinalizeBlock . ValidatorUpdates = [ ] abci . ValidatorUpdate { { PubKey : pbpk , Power : 10 } }
@ -136,23 +136,23 @@ func TestABCIResponsesSaveLoad2(t *testing.T) {
cases := [ ... ] struct {
cases := [ ... ] struct {
// Height is implied to equal index+2,
// Height is implied to equal index+2,
// as block 1 is created from genesis.
// as block 1 is created from genesis.
added [ ] * abci . ResponseDeliverTx
expected [ ] * abci . ResponseDeliverTx
added [ ] * abci . ExecTxResult
expected [ ] * abci . ExecTxResult
} {
} {
0 : {
0 : {
nil ,
nil ,
nil ,
nil ,
} ,
} ,
1 : {
1 : {
[ ] * abci . ResponseDeliverTx {
[ ] * abci . ExecTxResult {
{ Code : 32 , Data : [ ] byte ( "Hello" ) , Log : "Huh?" } ,
{ Code : 32 , Data : [ ] byte ( "Hello" ) , Log : "Huh?" } ,
} ,
} ,
[ ] * abci . ResponseDeliverTx {
[ ] * abci . ExecTxResult {
{ Code : 32 , Data : [ ] byte ( "Hello" ) } ,
{ Code : 32 , Data : [ ] byte ( "Hello" ) } ,
} ,
} ,
} ,
} ,
2 : {
2 : {
[ ] * abci . ResponseDeliverTx {
[ ] * abci . ExecTxResult {
{ Code : 383 } ,
{ Code : 383 } ,
{
{
Data : [ ] byte ( "Gotcha!" ) ,
Data : [ ] byte ( "Gotcha!" ) ,
@ -162,7 +162,7 @@ func TestABCIResponsesSaveLoad2(t *testing.T) {
} ,
} ,
} ,
} ,
} ,
} ,
[ ] * abci . ResponseDeliverTx {
[ ] * abci . ExecTxResult {
{ Code : 383 , Data : nil } ,
{ Code : 383 , Data : nil } ,
{ Code : 0 , Data : [ ] byte ( "Gotcha!" ) , Events : [ ] abci . Event {
{ Code : 0 , Data : [ ] byte ( "Gotcha!" ) , Events : [ ] abci . Event {
{ Type : "type1" , Attributes : [ ] abci . EventAttribute { { Key : "a" , Value : "1" } } } ,
{ Type : "type1" , Attributes : [ ] abci . EventAttribute { { Key : "a" , Value : "1" } } } ,
@ -175,7 +175,7 @@ func TestABCIResponsesSaveLoad2(t *testing.T) {
nil ,
nil ,
} ,
} ,
4 : {
4 : {
[ ] * abci . ResponseDeliverTx { nil } ,
[ ] * abci . ExecTxResult { nil } ,
nil ,
nil ,
} ,
} ,
}
}
@ -192,7 +192,7 @@ func TestABCIResponsesSaveLoad2(t *testing.T) {
h := int64 ( i + 1 ) // last block height, one below what we save
h := int64 ( i + 1 ) // last block height, one below what we save
responses := & tmstate . ABCIResponses {
responses := & tmstate . ABCIResponses {
FinalizeBlock : & abci . ResponseFinalizeBlock {
FinalizeBlock : & abci . ResponseFinalizeBlock {
Txs : tc . added ,
TxResult s : tc . added ,
} ,
} ,
}
}
err := stateStore . SaveABCIResponses ( h , responses )
err := stateStore . SaveABCIResponses ( h , responses )
@ -207,7 +207,7 @@ func TestABCIResponsesSaveLoad2(t *testing.T) {
t . Log ( res )
t . Log ( res )
responses := & tmstate . ABCIResponses {
responses := & tmstate . ABCIResponses {
FinalizeBlock : & abci . ResponseFinalizeBlock {
FinalizeBlock : & abci . ResponseFinalizeBlock {
Txs : tc . expected ,
TxResult s : tc . expected ,
} ,
} ,
}
}
sm . ABCIResponsesResultsHash ( res )
sm . ABCIResponsesResultsHash ( res )
@ -278,7 +278,7 @@ func TestOneValidatorChangesSaveLoad(t *testing.T) {
header , blockID , responses := makeHeaderPartsResponsesValPowerChange ( t , state , power )
header , blockID , responses := makeHeaderPartsResponsesValPowerChange ( t , state , power )
validatorUpdates , err = types . PB2TM . ValidatorUpdates ( responses . FinalizeBlock . ValidatorUpdates )
validatorUpdates , err = types . PB2TM . ValidatorUpdates ( responses . FinalizeBlock . ValidatorUpdates )
require . NoError ( t , err )
require . NoError ( t , err )
state , err = sm . UpdateState ( state , blockID , & header , respons es , validatorUpdates )
state , err = state . Update ( blockID , & header , sm . ABCIResponsesResultsHash ( responses ) , responses . FinalizeBlock . ConsensusParamUpdat es , validatorUpdates )
require . NoError ( t , err )
require . NoError ( t , err )
err := stateStore . Save ( state )
err := stateStore . Save ( state )
require . NoError ( t , err )
require . NoError ( t , err )
@ -463,7 +463,7 @@ func TestProposerPriorityDoesNotGetResetToZero(t *testing.T) {
}
}
validatorUpdates , err := types . PB2TM . ValidatorUpdates ( abciResponses . FinalizeBlock . ValidatorUpdates )
validatorUpdates , err := types . PB2TM . ValidatorUpdates ( abciResponses . FinalizeBlock . ValidatorUpdates )
require . NoError ( t , err )
require . NoError ( t , err )
updatedState , err := sm . UpdateState ( state , blockID , & block . Header , abciResponses , validatorUpdates )
updatedState , err := state . Update ( blockID , & block . Header , sm . ABCIResponsesResultsHash ( abciResponses ) , abciResponses . FinalizeBlock . ConsensusParamUpdat es , validatorUpdates )
assert . NoError ( t , err )
assert . NoError ( t , err )
curTotal := val1VotingPower
curTotal := val1VotingPower
// one increment step and one validator: 0 + power - total_power == 0
// one increment step and one validator: 0 + power - total_power == 0
@ -478,7 +478,7 @@ func TestProposerPriorityDoesNotGetResetToZero(t *testing.T) {
updateAddVal := abci . ValidatorUpdate { PubKey : fvp , Power : val2VotingPower }
updateAddVal := abci . ValidatorUpdate { PubKey : fvp , Power : val2VotingPower }
validatorUpdates , err = types . PB2TM . ValidatorUpdates ( [ ] abci . ValidatorUpdate { updateAddVal } )
validatorUpdates , err = types . PB2TM . ValidatorUpdates ( [ ] abci . ValidatorUpdate { updateAddVal } )
assert . NoError ( t , err )
assert . NoError ( t , err )
updatedState2 , err := sm . UpdateState ( updatedState , blockID , & block . Header , abciResponses , validatorUpdates )
updatedState2 , err := updatedState . Update ( blockID , & block . Header , sm . ABCIResponsesResultsHash ( abciResponses ) , abciResponses . FinalizeBlock . ConsensusParamUpdat es , validatorUpdates )
assert . NoError ( t , err )
assert . NoError ( t , err )
require . Equal ( t , len ( updatedState2 . NextValidators . Validators ) , 2 )
require . Equal ( t , len ( updatedState2 . NextValidators . Validators ) , 2 )
@ -517,7 +517,7 @@ func TestProposerPriorityDoesNotGetResetToZero(t *testing.T) {
// this will cause the diff of priorities (77)
// this will cause the diff of priorities (77)
// to be larger than threshold == 2*totalVotingPower (22):
// to be larger than threshold == 2*totalVotingPower (22):
updatedState3 , err := sm . UpdateState ( updatedState2 , blockID , & block . Header , abciResponses , validatorUpdates )
updatedState3 , err := updatedState2 . Update ( blockID , & block . Header , sm . ABCIResponsesResultsHash ( abciResponses ) , abciResponses . FinalizeBlock . ConsensusParamUpdat es , validatorUpdates )
assert . NoError ( t , err )
assert . NoError ( t , err )
require . Equal ( t , len ( updatedState3 . NextValidators . Validators ) , 2 )
require . Equal ( t , len ( updatedState3 . NextValidators . Validators ) , 2 )
@ -583,7 +583,7 @@ func TestProposerPriorityProposerAlternates(t *testing.T) {
validatorUpdates , err := types . PB2TM . ValidatorUpdates ( abciResponses . FinalizeBlock . ValidatorUpdates )
validatorUpdates , err := types . PB2TM . ValidatorUpdates ( abciResponses . FinalizeBlock . ValidatorUpdates )
require . NoError ( t , err )
require . NoError ( t , err )
updatedState , err := sm . UpdateState ( state , blockID , & block . Header , abciResponses , validatorUpdates )
updatedState , err := state . Update ( blockID , & block . Header , sm . ABCIResponsesResultsHash ( abciResponses ) , abciResponses . FinalizeBlock . ConsensusParamUpdat es , validatorUpdates )
assert . NoError ( t , err )
assert . NoError ( t , err )
// 0 + 10 (initial prio) - 10 (avg) - 10 (mostest - total) = -10
// 0 + 10 (initial prio) - 10 (avg) - 10 (mostest - total) = -10
@ -600,7 +600,7 @@ func TestProposerPriorityProposerAlternates(t *testing.T) {
validatorUpdates , err = types . PB2TM . ValidatorUpdates ( [ ] abci . ValidatorUpdate { updateAddVal } )
validatorUpdates , err = types . PB2TM . ValidatorUpdates ( [ ] abci . ValidatorUpdate { updateAddVal } )
assert . NoError ( t , err )
assert . NoError ( t , err )
updatedState2 , err := sm . UpdateState ( updatedState , blockID , & block . Header , abciResponses , validatorUpdates )
updatedState2 , err := updatedState . Update ( blockID , & block . Header , sm . ABCIResponsesResultsHash ( abciResponses ) , abciResponses . FinalizeBlock . ConsensusParamUpdat es , validatorUpdates )
assert . NoError ( t , err )
assert . NoError ( t , err )
require . Equal ( t , len ( updatedState2 . NextValidators . Validators ) , 2 )
require . Equal ( t , len ( updatedState2 . NextValidators . Validators ) , 2 )
@ -643,7 +643,7 @@ func TestProposerPriorityProposerAlternates(t *testing.T) {
validatorUpdates , err = types . PB2TM . ValidatorUpdates ( abciResponses . FinalizeBlock . ValidatorUpdates )
validatorUpdates , err = types . PB2TM . ValidatorUpdates ( abciResponses . FinalizeBlock . ValidatorUpdates )
require . NoError ( t , err )
require . NoError ( t , err )
updatedState3 , err := sm . UpdateState ( updatedState2 , blockID , & block . Header , abciResponses , validatorUpdates )
updatedState3 , err := updatedState2 . Update ( blockID , & block . Header , sm . ABCIResponsesResultsHash ( abciResponses ) , abciResponses . FinalizeBlock . ConsensusParamUpdat es , validatorUpdates )
assert . NoError ( t , err )
assert . NoError ( t , err )
assert . Equal ( t , updatedState3 . Validators . Proposer . Address , updatedState3 . NextValidators . Proposer . Address )
assert . Equal ( t , updatedState3 . Validators . Proposer . Address , updatedState3 . NextValidators . Proposer . Address )
@ -687,7 +687,7 @@ func TestProposerPriorityProposerAlternates(t *testing.T) {
validatorUpdates , err = types . PB2TM . ValidatorUpdates ( abciResponses . FinalizeBlock . ValidatorUpdates )
validatorUpdates , err = types . PB2TM . ValidatorUpdates ( abciResponses . FinalizeBlock . ValidatorUpdates )
require . NoError ( t , err )
require . NoError ( t , err )
oldState , err = sm . UpdateState ( oldState , blockID , & block . Header , abciResponses , validatorUpdates )
oldState , err = oldState . Update ( blockID , & block . Header , sm . ABCIResponsesResultsHash ( abciResponses ) , abciResponses . FinalizeBlock . ConsensusParamUpdat es , validatorUpdates )
assert . NoError ( t , err )
assert . NoError ( t , err )
expectedVal1Prio2 = 1
expectedVal1Prio2 = 1
expectedVal2Prio2 = - 1
expectedVal2Prio2 = - 1
@ -704,7 +704,7 @@ func TestProposerPriorityProposerAlternates(t *testing.T) {
validatorUpdates , err = types . PB2TM . ValidatorUpdates ( abciResponses . FinalizeBlock . ValidatorUpdates )
validatorUpdates , err = types . PB2TM . ValidatorUpdates ( abciResponses . FinalizeBlock . ValidatorUpdates )
require . NoError ( t , err )
require . NoError ( t , err )
updatedState , err := sm . UpdateState ( oldState , blockID , & block . Header , abciResponses , validatorUpdates )
updatedState , err := oldState . Update ( blockID , & block . Header , sm . ABCIResponsesResultsHash ( abciResponses ) , abciResponses . FinalizeBlock . ConsensusParamUpdat es , validatorUpdates )
assert . NoError ( t , err )
assert . NoError ( t , err )
// alternate (and cyclic priorities):
// alternate (and cyclic priorities):
assert . NotEqual (
assert . NotEqual (
@ -769,7 +769,7 @@ func TestLargeGenesisValidator(t *testing.T) {
require . NoError ( t , err )
require . NoError ( t , err )
blockID := types . BlockID { Hash : block . Hash ( ) , PartSetHeader : bps . Header ( ) }
blockID := types . BlockID { Hash : block . Hash ( ) , PartSetHeader : bps . Header ( ) }
updatedState , err := sm . UpdateState ( oldState , blockID , & block . Header , abciResponses , validatorUpdates )
updatedState , err := oldState . Update ( blockID , & block . Header , sm . ABCIResponsesResultsHash ( abciResponses ) , abciResponses . FinalizeBlock . ConsensusParamUpdat es , validatorUpdates )
require . NoError ( t , err )
require . NoError ( t , err )
// no changes in voting power (ProposerPrio += VotingPower == Voting in 1st round; than shiftByAvg == 0,
// no changes in voting power (ProposerPrio += VotingPower == Voting in 1st round; than shiftByAvg == 0,
// than -Total == -Voting)
// than -Total == -Voting)
@ -803,7 +803,7 @@ func TestLargeGenesisValidator(t *testing.T) {
require . NoError ( t , err )
require . NoError ( t , err )
blockID := types . BlockID { Hash : block . Hash ( ) , PartSetHeader : bps . Header ( ) }
blockID := types . BlockID { Hash : block . Hash ( ) , PartSetHeader : bps . Header ( ) }
updatedState , err := sm . UpdateState ( oldState , blockID , & block . Header , abciResponses , validatorUpdates )
updatedState , err := oldState . Update ( blockID , & block . Header , sm . ABCIResponsesResultsHash ( abciResponses ) , abciResponses . FinalizeBlock . ConsensusParamUpdat es , validatorUpdates )
require . NoError ( t , err )
require . NoError ( t , err )
lastState := updatedState
lastState := updatedState
@ -825,7 +825,7 @@ func TestLargeGenesisValidator(t *testing.T) {
blockID := types . BlockID { Hash : block . Hash ( ) , PartSetHeader : bps . Header ( ) }
blockID := types . BlockID { Hash : block . Hash ( ) , PartSetHeader : bps . Header ( ) }
updatedStateInner , err := sm . UpdateState ( lastState , blockID , & block . Header , abciResponses , validatorUpdates )
updatedStateInner , err := lastState . Update ( blockID , & block . Header , sm . ABCIResponsesResultsHash ( abciResponses ) , abciResponses . FinalizeBlock . ConsensusParamUpdat es , validatorUpdates )
require . NoError ( t , err )
require . NoError ( t , err )
lastState = updatedStateInner
lastState = updatedStateInner
}
}
@ -862,7 +862,7 @@ func TestLargeGenesisValidator(t *testing.T) {
require . NoError ( t , err )
require . NoError ( t , err )
blockID := types . BlockID { Hash : block . Hash ( ) , PartSetHeader : bps . Header ( ) }
blockID := types . BlockID { Hash : block . Hash ( ) , PartSetHeader : bps . Header ( ) }
state , err = sm . UpdateState ( state , blockID , & block . Header , abciResponses , validatorUpdates )
state , err = state . Update ( blockID , & block . Header , sm . ABCIResponsesResultsHash ( abciResponses ) , abciResponses . FinalizeBlock . ConsensusParamUpdat es , validatorUpdates )
require . NoError ( t , err )
require . NoError ( t , err )
}
}
require . Equal ( t , 10 + 2 , len ( state . NextValidators . Validators ) )
require . Equal ( t , 10 + 2 , len ( state . NextValidators . Validators ) )
@ -886,7 +886,7 @@ func TestLargeGenesisValidator(t *testing.T) {
blockID = types . BlockID { Hash : block . Hash ( ) , PartSetHeader : bps . Header ( ) }
blockID = types . BlockID { Hash : block . Hash ( ) , PartSetHeader : bps . Header ( ) }
validatorUpdates , err = types . PB2TM . ValidatorUpdates ( abciResponses . FinalizeBlock . ValidatorUpdates )
validatorUpdates , err = types . PB2TM . ValidatorUpdates ( abciResponses . FinalizeBlock . ValidatorUpdates )
require . NoError ( t , err )
require . NoError ( t , err )
updatedState , err = sm . UpdateState ( state , blockID , & block . Header , abciResponses , validatorUpdates )
updatedState , err = state . Update ( blockID , & block . Header , sm . ABCIResponsesResultsHash ( abciResponses ) , abciResponses . FinalizeBlock . ConsensusParamUpdat es , validatorUpdates )
require . NoError ( t , err )
require . NoError ( t , err )
// only the first added val (not the genesis val) should be left
// only the first added val (not the genesis val) should be left
assert . Equal ( t , 11 , len ( updatedState . NextValidators . Validators ) )
assert . Equal ( t , 11 , len ( updatedState . NextValidators . Validators ) )
@ -911,7 +911,7 @@ func TestLargeGenesisValidator(t *testing.T) {
require . NoError ( t , err )
require . NoError ( t , err )
blockID = types . BlockID { Hash : block . Hash ( ) , PartSetHeader : bps . Header ( ) }
blockID = types . BlockID { Hash : block . Hash ( ) , PartSetHeader : bps . Header ( ) }
curState , err = sm . UpdateState ( curState , blockID , & block . Header , abciResponses , validatorUpdates )
curState , err = curState . Update ( blockID , & block . Header , sm . ABCIResponsesResultsHash ( abciResponses ) , abciResponses . FinalizeBlock . ConsensusParamUpdat es , validatorUpdates )
require . NoError ( t , err )
require . NoError ( t , err )
if ! bytes . Equal ( curState . Validators . Proposer . Address , curState . NextValidators . Proposer . Address ) {
if ! bytes . Equal ( curState . Validators . Proposer . Address , curState . NextValidators . Proposer . Address ) {
isProposerUnchanged = false
isProposerUnchanged = false
@ -943,7 +943,7 @@ func TestLargeGenesisValidator(t *testing.T) {
blockID := types . BlockID { Hash : block . Hash ( ) , PartSetHeader : bps . Header ( ) }
blockID := types . BlockID { Hash : block . Hash ( ) , PartSetHeader : bps . Header ( ) }
updatedState , err = sm . UpdateState ( updatedState , blockID , & block . Header , abciResponses , validatorUpdates )
updatedState , err = updatedState . Update ( blockID , & block . Header , sm . ABCIResponsesResultsHash ( abciResponses ) , abciResponses . FinalizeBlock . ConsensusParamUpdat es , validatorUpdates )
require . NoError ( t , err )
require . NoError ( t , err )
if i > numVals { // expect proposers to cycle through after the first iteration (of numVals blocks):
if i > numVals { // expect proposers to cycle through after the first iteration (of numVals blocks):
if proposers [ i % numVals ] == nil {
if proposers [ i % numVals ] == nil {
@ -1002,7 +1002,7 @@ func TestManyValidatorChangesSaveLoad(t *testing.T) {
var validatorUpdates [ ] * types . Validator
var validatorUpdates [ ] * types . Validator
validatorUpdates , err = types . PB2TM . ValidatorUpdates ( responses . FinalizeBlock . ValidatorUpdates )
validatorUpdates , err = types . PB2TM . ValidatorUpdates ( responses . FinalizeBlock . ValidatorUpdates )
require . NoError ( t , err )
require . NoError ( t , err )
state , err = sm . UpdateState ( state , blockID , & header , respons es , validatorUpdates )
state , err = state . Update ( blockID , & header , sm . ABCIResponsesResultsHash ( responses ) , responses . FinalizeBlock . ConsensusParamUpdat es , validatorUpdates )
require . NoError ( t , err )
require . NoError ( t , err )
nextHeight := state . LastBlockHeight + 1
nextHeight := state . LastBlockHeight + 1
err = stateStore . Save ( state )
err = stateStore . Save ( state )
@ -1080,7 +1080,7 @@ func TestConsensusParamsChangesSaveLoad(t *testing.T) {
header , blockID , responses := makeHeaderPartsResponsesParams ( t , state , & cp )
header , blockID , responses := makeHeaderPartsResponsesParams ( t , state , & cp )
validatorUpdates , err = types . PB2TM . ValidatorUpdates ( responses . FinalizeBlock . ValidatorUpdates )
validatorUpdates , err = types . PB2TM . ValidatorUpdates ( responses . FinalizeBlock . ValidatorUpdates )
require . NoError ( t , err )
require . NoError ( t , err )
state , err = sm . UpdateState ( state , blockID , & header , respons es , validatorUpdates )
state , err = state . Update ( blockID , & header , sm . ABCIResponsesResultsHash ( responses ) , responses . FinalizeBlock . ConsensusParamUpdat es , validatorUpdates )
require . NoError ( t , err )
require . NoError ( t , err )
err := stateStore . Save ( state )
err := stateStore . Save ( state )