forked from 0xPolygon/pbft-consensus
-
Notifications
You must be signed in to change notification settings - Fork 0
/
framework_test.go
44 lines (36 loc) · 1.29 KB
/
framework_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package e2e
import (
"testing"
"github.com/stretchr/testify/assert"
)
func Test_ClusterInsertFinalProposal(t *testing.T) {
clusterConfig := &ClusterConfig{
Count: 3,
Name: "cluster",
Prefix: "N",
}
c := NewPBFTCluster(t, clusterConfig)
// valid proposal => insert it
seq1Proposal := newSealedProposal([]byte{0x1}, "N0", 1)
err := c.insertFinalProposal(seq1Proposal)
assert.Nil(t, err)
assert.Len(t, c.sealedProposals, 1)
// invalid proposal (different proposal data on sequence previously inserted) => discard it and return an error
seq1DiffProposal := newSealedProposal([]byte{0x3}, "N0", 1)
err = c.insertFinalProposal(seq1DiffProposal)
assert.NotNil(t, err)
assert.Len(t, c.sealedProposals, 1)
// same proposal data on same sequence previously entered => discard it, but don't return an error
err = c.insertFinalProposal(seq1Proposal)
assert.Nil(t, err)
assert.Len(t, c.sealedProposals, 1)
// sequence-gapped proposal => discard it and return an error
seq5Proposal := newSealedProposal([]byte{0x5}, "N1", 5)
err = c.insertFinalProposal(seq5Proposal)
assert.NotNil(t, err)
assert.Len(t, c.sealedProposals, 1)
// valid proposal => insert it
seq2Proposal := newSealedProposal([]byte{0x2}, "N1", 2)
c.insertFinalProposal(seq2Proposal)
assert.Len(t, c.sealedProposals, 2)
}