/
fake.go
73 lines (66 loc) · 1.84 KB
/
fake.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
// Copyright 2021 The PlatON Network Authors
// This file is part of the PlatON-Go library.
//
// The PlatON-Go library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The PlatON-Go library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the PlatON-Go library. If not, see <http://www.gnu.org/licenses/>.
package node
import (
"crypto/ecdsa"
"github.com/PlatONnetwork/PlatON-Go/p2p/enode"
)
var FakeNetEnable bool = false
var indexMock = map[int][]int{
1: []int{2},
2: []int{3},
3: []int{4},
4: []int{5},
5: []int{6},
6: []int{7},
7: []int{8},
8: []int{9},
9: []int{10},
10: []int{1},
}
// MockDiscoveryNode returns to a specific network topology.
func MockDiscoveryNode(privateKey *ecdsa.PrivateKey, nodes []*enode.Node) []*enode.Node {
selfNodeID := enode.PubkeyToIDV4(&privateKey.PublicKey)
mockNodes := make([]*enode.Node, 0)
ok, idxs := needAdd(selfNodeID, nodes)
for idx, n := range nodes {
if idxs == nil {
break
}
for _, i := range idxs {
if ok && i == (idx+1) {
mockNodes = append(mockNodes, n)
break
}
}
}
return mockNodes
}
// mock
func needAdd(self enode.ID, nodes []*enode.Node) (bool, []int) {
selfIndex := -1
for idx, n := range nodes {
if n.ID().TerminalString() == self.TerminalString() {
selfIndex = idx
break
}
}
if selfIndex == -1 {
return false, nil
}
selfIndex++
return true, indexMock[selfIndex]
}