Browse Source

e2e: ensure evidence validator set matches nodes validator set (#6712)

pull/6719/head
Callum Waters 3 years ago
committed by GitHub
parent
commit
36a859ae54
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 10 deletions
  1. +2
    -2
      test/e2e/networks/ci.toml
  2. +1
    -1
      test/e2e/pkg/testnet.go
  3. +6
    -7
      test/e2e/runner/evidence.go

+ 2
- 2
test/e2e/networks/ci.toml View File

@ -56,7 +56,7 @@ abci_protocol = "grpc"
persist_interval = 3 persist_interval = 3
perturb = ["kill"] perturb = ["kill"]
privval_protocol = "grpc" privval_protocol = "grpc"
retain_blocks = 5
retain_blocks = 7
[node.validator04] [node.validator04]
abci_protocol = "builtin" abci_protocol = "builtin"
@ -80,7 +80,7 @@ start_at = 1010
fast_sync = "v0" fast_sync = "v0"
persistent_peers = ["validator01", "validator02", "validator03", "validator04", "validator05"] persistent_peers = ["validator01", "validator02", "validator03", "validator04", "validator05"]
perturb = ["restart"] perturb = ["restart"]
retain_blocks = 5
retain_blocks = 7
[node.full02] [node.full02]
mode = "full" mode = "full"


+ 1
- 1
test/e2e/pkg/testnet.go View File

@ -48,7 +48,7 @@ const (
PerturbationPause Perturbation = "pause" PerturbationPause Perturbation = "pause"
PerturbationRestart Perturbation = "restart" PerturbationRestart Perturbation = "restart"
EvidenceAgeHeight int64 = 5
EvidenceAgeHeight int64 = 7
EvidenceAgeTime time.Duration = 500 * time.Millisecond EvidenceAgeTime time.Duration = 500 * time.Millisecond
) )


+ 6
- 7
test/e2e/runner/evidence.go View File

@ -43,15 +43,15 @@ func InjectEvidence(testnet *e2e.Testnet, amount int) error {
if err != nil { if err != nil {
return err return err
} }
lightEvidenceCommonHeight := blockRes.Block.Height
evidenceHeight := blockRes.Block.Height
waitHeight := blockRes.Block.Height + 3 waitHeight := blockRes.Block.Height + 3
duplicateVoteHeight := waitHeight
nValidators := 100 nValidators := 100
valRes, err := client.Validators(context.Background(), &lightEvidenceCommonHeight, nil, &nValidators)
valRes, err := client.Validators(context.Background(), &evidenceHeight, nil, &nValidators)
if err != nil { if err != nil {
return err return err
} }
valSet, err := types.ValidatorSetFromExistingValidators(valRes.Validators) valSet, err := types.ValidatorSetFromExistingValidators(valRes.Validators)
if err != nil { if err != nil {
return err return err
@ -65,21 +65,20 @@ func InjectEvidence(testnet *e2e.Testnet, amount int) error {
// wait for the node to reach the height above the forged height so that // wait for the node to reach the height above the forged height so that
// it is able to validate the evidence // it is able to validate the evidence
status, err := waitForNode(targetNode, waitHeight, 30*time.Second)
_, err = waitForNode(targetNode, waitHeight, 30*time.Second)
if err != nil { if err != nil {
return err return err
} }
duplicateVoteTime := status.SyncInfo.LatestBlockTime
var ev types.Evidence var ev types.Evidence
for i := 1; i <= amount; i++ { for i := 1; i <= amount; i++ {
if i%lightClientEvidenceRatio == 0 { if i%lightClientEvidenceRatio == 0 {
ev, err = generateLightClientAttackEvidence( ev, err = generateLightClientAttackEvidence(
privVals, lightEvidenceCommonHeight, valSet, testnet.Name, blockRes.Block.Time,
privVals, evidenceHeight, valSet, testnet.Name, blockRes.Block.Time,
) )
} else { } else {
ev, err = generateDuplicateVoteEvidence( ev, err = generateDuplicateVoteEvidence(
privVals, duplicateVoteHeight, valSet, testnet.Name, duplicateVoteTime,
privVals, evidenceHeight, valSet, testnet.Name, blockRes.Block.Time,
) )
} }
if err != nil { if err != nil {


Loading…
Cancel
Save