/
peer_test_utils.go
92 lines (75 loc) · 2.27 KB
/
peer_test_utils.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package quorum
import (
"encoding/base64"
"errors"
quorum "github.com/simcord-llc/bitbon-system-blockchain/quorum/mock"
"github.com/golang/mock/gomock"
"github.com/simcord-llc/bitbon-system-blockchain/common"
"github.com/simcord-llc/bitbon-system-blockchain/p2p"
"github.com/simcord-llc/bitbon-system-blockchain/p2p/enode"
"github.com/simcord-llc/bitbon-system-blockchain/p2p/protocols"
"github.com/simcord-llc/bitbon-system-blockchain/quorum/snapshot"
"github.com/simcord-llc/bitbon-system-blockchain/rlp"
)
var (
ErrOnWriteMessage = errors.New("error during message writing")
ErrHookValidate = errors.New("error during hook validation")
ErrHookApply = errors.New("error during hook applying")
)
func prepareMockServices(controller *gomock.Controller) (*MockPingPeerService, *MockHandlers,
*quorum.MockMsgReadWriter, *MockHook) {
return NewMockPingPeerService(controller),
NewMockHandlers(controller),
quorum.NewMockMsgReadWriter(controller),
NewMockHook(controller)
}
func getNewPeerState(pingTime int64) *peerState {
return &peerState{
lastPing: &pingTime,
inPingList: false,
isMinerCandidate: true,
}
}
func prepareNodeCandidateListMessage() *NodeCandidateListMsg {
nodeCandidates := make(map[common.Address]bool)
epoch := uint64(10)
addresses := snapshot.GetRandomAddresses(10)
for _, v := range addresses {
nodeCandidates[v] = true
}
return NewNodeCandidateListMsg(nodeCandidates, epoch)
}
func prepareMinersMessage() *MinersMsg {
miners := snapshot.GetRandomAddresses(10)
epoch := uint64(10)
return NewMinersMsg(epoch, miners, snapshot.Hash)
}
func getNewPeer(peerID enode.ID, service PingPeerService, handlers Handlers, buffer p2p.MsgReadWriter, hook protocols.Hook) *Peer {
messageBuffer := buffer
spec := Spec
if hook != nil {
spec.Hook = hook
}
p := int64(0)
return &Peer{
Peer: protocols.NewPeer(
p2p.NewPeer(peerID, "myPeer", nil),
messageBuffer,
spec,
),
address: common.Address{},
peerState: &peerState{
lastPing: &p,
},
PingPeer: service,
quorumHandler: handlers,
}
}
func nodeToString(node *enode.Node) string {
enc, err := rlp.EncodeToBytes(node.Record())
if err != nil {
panic("Error during record encoding")
}
b64 := base64.RawURLEncoding.EncodeToString(enc)
return "enr:" + b64
}