( t *testing.T, cs *State, thisRound, lockRound int32, privVal *validatorStub, votedBlockHash, lockedBlockHash []byte, )
| 279 | } |
| 280 | |
| 281 | func validatePrecommit( |
| 282 | t *testing.T, |
| 283 | cs *State, |
| 284 | thisRound, |
| 285 | lockRound int32, |
| 286 | privVal *validatorStub, |
| 287 | votedBlockHash, |
| 288 | lockedBlockHash []byte, |
| 289 | ) { |
| 290 | precommits := cs.Votes.Precommits(thisRound) |
| 291 | pv, err := privVal.GetPubKey() |
| 292 | require.NoError(t, err) |
| 293 | address := pv.Address() |
| 294 | var vote *types.Vote |
| 295 | if vote = precommits.GetByAddress(address); vote == nil { |
| 296 | panic("Failed to find precommit from validator") |
| 297 | } |
| 298 | |
| 299 | if votedBlockHash == nil { |
| 300 | if vote.BlockID.Hash != nil { |
| 301 | panic("Expected precommit to be for nil") |
| 302 | } |
| 303 | } else { |
| 304 | if !bytes.Equal(vote.BlockID.Hash, votedBlockHash) { |
| 305 | panic("Expected precommit to be for proposal block") |
| 306 | } |
| 307 | } |
| 308 | |
| 309 | if lockedBlockHash == nil { |
| 310 | if cs.LockedRound != lockRound || cs.LockedBlock != nil { |
| 311 | panic(fmt.Sprintf( |
| 312 | "Expected to be locked on nil at round %d. Got locked at round %d with block %v", |
| 313 | lockRound, |
| 314 | cs.LockedRound, |
| 315 | cs.LockedBlock)) |
| 316 | } |
| 317 | } else { |
| 318 | if cs.LockedRound != lockRound || !bytes.Equal(cs.LockedBlock.Hash(), lockedBlockHash) { |
| 319 | panic(fmt.Sprintf( |
| 320 | "Expected block to be locked on round %d, got %d. Got locked block %X, expected %X", |
| 321 | lockRound, |
| 322 | cs.LockedRound, |
| 323 | cs.LockedBlock.Hash(), |
| 324 | lockedBlockHash)) |
| 325 | } |
| 326 | } |
| 327 | } |
| 328 | |
| 329 | func validatePrevoteAndPrecommit( |
| 330 | t *testing.T, |
no test coverage detected